Data Functions
Using the Studio Data SDK, you can manage your dataset records with several data endpoints.
Upload Dataset
Create a dataset from a file upload.
Python
data_sdk.upload_file(
file='new_file.csv',
name='Dataset name',
media_type=MediaType.CSV,
description='Dataset description')
CLI
fsq-data-sdk upload-file \
--name "Dataset name" \
--desc "Dataset description" \
--media-type text/csv \
new_file.csv
HTTP
curl -X POST https://data-api.foursquare.com/v1/datasets/data?name=My+Dataset \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: text/csv' \
--data-binary '@/path/to/my_dataset.csv'
Upload Dataframe
You can use the Python SDK package to upload a Pandas or GeoPandas dataframe.
Python
data_sdk.upload_dataframe(
dataframe,
name='Dataset name',
description='Dataset description')
Create External Dataset
Create an external dataset record referencing a dataset by URL. External datasets are loaded from source every time, and will not be stored in our system.
Python
data_sdk.create_external_dataset(
name = "test-external-dataset",
description = "my external dataset",
source = "https://s3data.example.com/data-source",
connector = "<data-connector-uuid>"
)
CLI
fsq-data-sdk create-external-dataset \
--source "test-external-dataset" \
--name "my external dataset", \
--description "https://s3data.example.com/data-source" \
--connector-id "<data-connector-uuid>"
HTTP
curl POST 'https://data-api.foursquare.com/catalog/v1/datasets' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <TOKEN>' \
--data
'{
"name": "My S3 Dataset",
"type": "externally-hosted",
"metadata": {
"source": "s3://my-bucket/path/to/data.parquet"
},
"dataConnectionId": "<SOME_ID>"
}'
Generate Vector Tiles
Create Vector Tiles by specifying a source GeoJSON (.geojson), CSV .csv or FlatGeobuf (.fgb) file, and optionally, a target dataset.
Python
data_sdk.generate_vectortile(
source="source_dataset_uuid",
target=None
)
CLI
fsq-data-sdk generate-vectortile \
--source "source-dataset-uuid" \
--target "optional-target-uuid"
HTTP
curl --request POST \
--url https://data-api.foursquare.com/v1/datasets/vectortile \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"source": "source-dataset-uuid",
"target": "target-dataset-uuid"
}
'
Get Dataset Metadata
Get a dataset record. This dataset record only includes the dataset's metadata—not the data itself. Pass the UUID or dataset object to receive the dataset's record as a JSON object.
Python
# Get dataset metadata by UUID
data_sdk.get_dataset_by_id("<uuid>")
# Get dataset record by dataset object
## List datasets
datasets = data_sdk.list_datasets()
dataset = datasets[0]
## Get dataset record by dataset object
data_sdk.get_dataset_by_id(dataset)
CLI
fsq-data-sdk get-map <uuid>
HTTP
curl -X GET https://data-api.foursquare.com/v1/datasets/<uuid> \
-H 'Authorization: Bearer <token>'
Download Dataset
Download data for a given dataset. Pass the UUID or dataset object to get to receive the dataset. Provide output_file to write the dataset data to, or leave empty to return a bytes object with the dataset data.
Python
# Download dataset record by dataset object
## List datasets
datasets = data_sdk.list_datasets()
dataset = datasets[0]
# Download to local file
data_sdk.download_dataset(dataset, output_file='output.csv')
# Download to buffer
buffer = data_sdk.download_dataset(dataset)
CLI
fsq-data-sdk download-dataset --dataset-id <uuid> --output-file output.csv
HTTP
curl -X GET https://data-api.foursquare.com/v1/datasets/<uuid>/data \
-H 'Authorization: Bearer <token>'
Python DataFrame
# Download dataset record by dataset object
datasets = data_sdk.list_datasets()
dataset = datasets[0]
# Download to a dataframe
df = data_sdk.download_dataframe(dataset)
Update Dataset
Update an existing dataset with a binary data upload. Can also update the name or description of the dataset. Pass the UUID or dataset object of the dataset to update.
Python
# Select a dataset to update
dataset = datasets[0]
# Update the dataset using file upload
data_sdk.update_dataset(
dataset,
name='New name'
description='New description'
file='new_file.csv',
media_type=MediaType.CSV)
CLI
fsq-data-sdk update-dataset --dataset-id <id> --media-type <media_type> --file <path> --name <name> --description <description>
HTTP
curl -X PUT https://data-api.foursquare.com/v1/datasets/<uuid>/data HTTP/1.1 \
-H 'Authorization: Bearer <token>'\
-H 'Content-Type: text/csv' \
--data-binary '@/path/to/my_dataset.csv'
curl --request PUT \
--url https://data-api.foursquare.com/v1//v1/datasets/<uuid> \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"name": "New name",
"description": "New description"
}
'
Delete Dataset
Delete a dataset record. Pass the UUID of the dataset to delete the dataset record. This will delete all data associated with the dataset.
Warning!
This operation cannot be undone. If you delete a dataset that appears in maps, the dataset will be removed from the map. This may cause the map to render incorrectly.
Python
# Delete dataset by dataset object
## Select dataset
datasets = data_sdk.list_datasets()
dataset = datasets[0]
## Delete selected Dataset
data_sdk.delete_dataset(dataset)
# Delete dataset by UUID
data_sdk.delete_dataset("<UUID>")
CLI
fsq-data-sdk delete-dataset --dataset-id <uuid>
HTTP
curl -X DELETE https://data-api.foursquare.com/v1/datasets/<uuid> HTTP/1.1 \
-H 'Authorization: Bearer <token>'
List Datasets
List all dataset records on the authorized account.
Python
datasets = data_sdk.list_datasets()
CLI
fsq-data-sdk list-datasets
HTTP
curl -X GET https://data-api.foursquare.com/v1/datasets HTTP/1.1 \
-H 'Authorization: Bearer <token>'
Python for Organization
datasets = data_sdk.list_datasets(organization=True)
CLI for Organization
fsq-data-sdk list-datasets --organization
HTTP for Organization
curl -X GET https://data-api.foursquare.com/v1/datasets/for-organization HTTP/1.1 \
-H 'Authorization: Bearer <token>'
Query Functions
A subset of the Data SDKs data functions, these endpoints allow users to query data from databases and data lakes added to Studio via Data Connectors.
List Data Connectors
List all data connectors added to the authorized account.
| Parameter | Type | Description |
|---|---|---|
organization |
boolean |
If True, list data connectors for organization of authenticated user. |
Python
# List data connectors associated with user account
data_connectors = data_sdk.list_data_connectors()
CLI
fsq-data-sdk list-data-connectors
HTTP
curl -X GET https://data-api.foursquare.com/v1/data-connections HTTP/1.1
Python for Organization
# List data connectors associated with organization
data_connectors = data_sdk.list_data_connectors(organization=True)
CLI for Organization
fsq-data-sdk list-data-connectors --organization
HTTP for Organization
curl -X GET https://data-api.foursquare.com/v1/data-connections/for-organization HTTP/1.1
Execute Query
Execute a query against a data connector, returning a dataframe with the results of the query, or None of the output was written to a file.
| Parameter | Description |
|---|---|
connector |
Required. The data connector to use, or its UUID. |
query |
Required. The SQL query. |
output_file |
The path to write the query output to. |
output_format |
The format in which to write the output. |
Python
df = data_sdk.execute_query(
example_data_connector.id,
"select * from table;"
)
CLI
fsq-data-sdk execute-query --connector-id <connector uuid> --query <SQL query to use>
HTTP
curl -X POST https://data-api.foursquare.com/v1/query/gateway/data-queries HTTP/1.1
Create Dataset from Query
Create a dataset from a query.
| Parameter | Description |
|---|---|
connector |
Required. The data connector to use, or its UUID. |
query |
Required. The SQL query. |
name |
Name of the dataset record. |
description |
Description for the dataset record. |
Python
create_query_dataset(query_dataset.id, "select * from table;", "query-dataset", "sample-description")
CLI
fsq-data-sdk create-query-dataset --connector-id <connector uuid> --query <SQL query to use> --name <name for the new queried dataset> --description <description of the queried dataset>
HTTP
curl -X POST https://data-api.foursquare.com/v1/datasets/data-query HTTP/1.1