Exports

Export defines a set of dataset properties, which will be exported to a spreadsheet file along with the values of respective indicators. Each export must be referenced from it's parent view.

Export counts in all active filters and the map selection.

Syntax

This is one of the exports from the Retail Solution Demo. As you can see, a good description is important.

Export object syntax
{
    "name": "customer_ids_export",
    "type": "export",
    "title": "List of Customer IDs",
    "description": "Returns client IDs, Districts, Wards and indicators available in the view into CSV file.",
    "content": {
        "properties": [
            "baskets.client_id",
            "district.districtname",
            "ward.wardname"
        ]
    }
}

Example of a dumped export
{
    "url": "/rest/projects/yufqzxkbiecj7jot/md/exports/g3v603i8m3tre30g",
    "dumpTime": "2018-01-30T13:48:17Z",
    "version": "8",
    "content": {
        "id": "g3v603i8m3tre30g",
        "name": "customer_ids_export",
        "type": "export",
        "title": "List of Customer IDs",
        "description": "Returns client IDs, Districts, Wards and indicators available in the view into CSV file.",
        "content": {
            "properties": [
                "baskets.client_id",
                "district.districtname",
                "ward.wardname"
            ]
        },
        "accessInfo": {
            "createdAt": "2017-11-13T14:12:57Z",
            "modifiedAt": "2018-01-30T12:48:18Z"
        },
        "links": [
            {
                "rel": "self",
                "href": "/rest/projects/yufqzxkbiecj7jot/md/exports/g3v603i8m3tre30g"
            }
        ]
    }
}

Additional syntax examples

Export allows to set default output settings - output filename, file type, file format and header format.

Export with output object
{
    "name": "transaction_ids_export",
    "type": "export",
    "title": "List of Transaction IDs",
    "description": "Returns transactions ID, postcodes, lower super output areas, middle super output areas and value of indicators available in the view into a file.",
    "content": {
        "properties": [
            "codepoint_plg.msoa11nm",
            "codepoint_plg.lsoa11nm",
            "codepoint_plg.postcode",
            "baskets.basket_id"
        ],
        "output": {
            "type": "file",
            "format": "xlsx",
            "filename": "Transaction IDs.csv"
            "header": "basic"
        }
    }
}


Key description

content

KeyTypeOptionalityDescriptionConstraints
propertiesarray

REQUIRED

array of dataset properties, which will be present in the exported file

{datasetName}.{datasetProperty}
outputobjectOPTIONALexport output settings

content.output

KeyTypeOptionalityDescriptionConstraints
typestring

REQUIRED

output type (at the moment, only file is supported)

[file]
formatstringREQUIREDfile format[csv, xlsx]
filenamestringOPTIONALcustom filename

(a-zA-Z0-9 _-)(.csv|.xlsx)

headerstringOPTIONALheader format[basic, export, template]

Visual representation

All project exports can be viewed in the export dialogoue. This dialogoue can is accessible by clicking the Menu button in the top left corner (), and selecting Export.

Exported file in a spreadsheet editor


Preventing duplicate records

(warning) It is a good practice to also include the primary key in the export definition, otherwise it can lead to duplicate records in the result of the export process. The duplicate records can occur because the dataset's columns and metric values needs to be joined and if there is no primary key, then the join is performed using all available columns. And if any of the columns contains some NULL values, the join process is not able to correctly match the records, because of the NULL values inequality. 

Let's have an example. We have a dataset of branches like this:

branch_idbranch_namecity
10Branch PraguePrague
20Branch LondonLondon
30Branch New YorkNULL

The correct definition of the export would look like this:

"content": {
    "properties": [
        "branches.branch_id",
        "branches.branch_name",
        "branches.city"
    ]
}


In this case the metric values are correctly joined based on the primary key branches.branch_id. The result would look like this:

branch_idbranch_namecitynumber_of_employees
10Branch PraguePrague100
20Branch LondonLondon250
30Branch New YorkNULL300


The incorrect definition of the export would look like this:

"content": {
    "properties": [
        "branches.branch_name",
        "branches.city"
    ]
}


In this case the metric values needs to be joined using columns branches.branch_name and branches.branch_city, because there is no primary key defined. And because the column city contains NULL value on the third row, the records are not correctly matched in the case of "Branch New York" and it results to duplicate records.

The result would look like this:

branch_idbranch_namecitynumber_of_employees
10Branch PraguePrague100
20Branch LondonLondon250
30Branch New YorkNULLNULL
NULLNULLNULL300