---
agentTools:
  projectIndex: https://docs.thinknum.com/llms.txt
---

# Function

[block:api-header]
{
  "title": "Query Functions"
}
[/block]

There a few functions that you can apply to queries to gather even more insight into the data.

You can retrieve a listing of the available functions in a dataset with the following request:

[block:code]
{
  "codes": [
    {
      "code": "GET /dataset/<DATASET_ID> HTTP/1.1\nAuthorization: token 01234567890123456789\nX-API-Version: 20151130",
      "language": "http"
    }
  ]
}
[/block]

A sample response is as follows:

[block:code]
{
  "codes": [
    {
      "code": "{\n    ...\n    \"id\": \"job_listings\",\n    \"truncate_limit\": 500000,\n    \"functions\": {\n        \"genderdecoder\": {\n            \"description\": \"Analyze potential gender bias in job listings.\",\n            \"blog_url\": \"https://blog.thinknum.com/job-listings/\"\n        },\n        \"sales\": {\n            \"description\": \"See which individual jobs have been filled within the defined Lookahead Days. \",\n            \"blog_url\": \"https://blog.thinknum.com/job-listings/#recruitment-analysis-function\"\n        },\n        \"changeovertime\": {\n            \"description\": \"Calculate the difference between a data point today and a user defined frequency.\",\n            \"blog_url\": \"https://blog.thinknum.com/change-over-time/\"\n        }\n    },\n    ...\n}",
      "language": "json"
    }
  ]
}
[/block]

Note: Currently, you can only apply functions against the “Store Locations” dataset.

[block:api-header]
{
  "title": "Nearby Competitors"
}
[/block]

This is a function that can be applied to queries that contain coordinate data. For each item in the query, It provides a count of the numbers of competitors (provided in a list either by ticker and/or entity) within a specified distance.

The nearby function has the following parameters:

[block:parameters]
{
  "data": {
    "h-2": "Required?",
    "h-1": "Description",
    "h-0": "Parameter",
    "0-0": "dataset",
    "0-2": "Yes",
    "1-0": "tickers",
    "1-2": "No, if entities is defined;\nyes, otherwise.",
    "2-0": "entities",
    "2-2": "No, if tickers is defined;\nyes, otherwise.",
    "3-0": "distance",
    "3-2": "Yes",
    "0-1": "The dataset of the competitors",
    "1-1": "List of competitor tickers",
    "2-1": "List of competitor entities",
    "3-1": "The radius in miles to consider as \"nearby\""
  },
  "cols": 3,
  "rows": 4
}
[/block]

For example, if you are analyzing the "Store Locations" dataset, and you would like to see how many Ralph Lauren stores are within 5 miles of each Nordstrom store, you can run the following query:

[block:code]
{
  "codes": [
    {
      "code": "POST /dataset/store/query/ HTTP/1.1\nAuthorization: token 01234567890123456789\nX-API-Version: 20151130\n\n{\n    \"tickers\": [\n        \"nyse:jwn\"\n    ],\n    \"functions\": [\n        {\n            \"function\": \"nearby\",\n            \"parameters\": {\n                \"dataset\": \"store\",\n                \"dataset_type\": \"dataset\",\n                \"distance\": 5,\n                \"entities\": [],\n                \"is_include_closed\": false,\n                \"tickers\": [\n                    \"nyse:rl\"\n                ]\n            }\n        }\n    ]\n}",
      "language": "http"
    },
    {
      "code": "curl -X POST \"https://data.thinknum.com/datasets/store/query/\" \\\n-H \"Accept: application/json\" \\\n-H \"X-API-Version: 20151130\" \\\n-H \"Authorization: token 01234567890123456789\" \\\n-d $'{\n    \"tickers\": [\n        \"nyse:jwn\"\n    ],\n    \"functions\": [\n        {\n            \"function\": \"nearby\",\n            \"parameters\": {\n                \"dataset\": \"store\",\n                \"dataset_type\": \"dataset\",\n                \"distance\": 5,\n                \"entities\": [],\n                \"is_include_closed\": false,\n                \"tickers\": [\n                    \"nyse:rl\"\n                ]\n            }\n        }\n    ]\n}'\n",
      "language": "curl"
    },
    {
      "code": "response = requests.post(\n    url='https://data.thinknum.com/datasets/store/query/', \n    headers={\n        'Authorization': 'token 01234567890123456789', \n        'X-API-Version': '20151130', \n        'Accept': 'application/json'\n    }, \n    data=json.dumps({\n        \"tickers\": [\n            \"nyse:jwn\"\n        ],\n        \"functions\": [\n            {\n                \"function\": \"nearby\",\n                \"parameters\": {\n                    \"dataset\": \"store\",\n                    \"dataset_type\": \"dataset\",\n                    \"distance\": 5,\n                    \"entities\": [],\n                    \"is_include_closed\": false,\n                    \"tickers\": [\n                        \"nyse:rl\"\n                    ]\n                }\n            }\n        ]\n    })\n)\nresults = json.loads(response.text)",
      "language": "python"
    }
  ]
}
[/block]

A sample response follows:

[block:code]
{
  "codes": [
    {
      "code": "{\n    \"state\": \"running\",\n    \"total\": 0,\n    \"id\": \"33afc36bb52fcb5e26aaf94ddfb2c91341a2a673bb1210341dcc1764a955c9cd\",\n    \"formats\": [\n        \"application/vnd.thinknum.table+json\",\n        \"application/vnd.thinknum.map+json\"\n    ]\n}",
      "language": "json"
    }
  ]
}
[/block]

To check if query is done:

[block:code]
{
  "codes": [
    {
      "code": "HEAD datasets/store/query/33afc36bb52fcb5e26aaf94ddfb2c91341a2a673bb1210341dcc1764a955c9cd HTTP/1.1\nAuthorization: token 01234567890123456789\nX-API-Version: 20151130\nAccept: application/vnd.thinknum.table+json\nContent-Type: application/x-www-form-urlencoded; charset=utf-8",
      "language": "http"
    },
    {
      "code": "curl -I HEAD \"https://data.thinknum.com/datasets/store/query/33afc36bb52fcb5e26aaf94ddfb2c91341a2a673bb1210341dcc1764a955c9cd\" \\\n-H \"Accept: application/vnd.thinknum.table+json\" \\\n-H \"X-API-Version: 20151130\" \\\n-H \"Authorization: token 01234567890123456789\" ",
      "language": "curl"
    },
    {
      "code": "response = requests.head(\n    url='https://data.thinknum.com/datasets/store/query/33afc36bb52fcb5e26aaf94ddfb2c91341a2a673bb1210341dcc1764a955c9cd', \n    headers={\n        'Authorization': 'token 01234567890123456789', \n        'X-API-Version': '20151130', \n        'Accept': 'application/vnd.thinknum.table+json'\n    }\n)\nresults = dict(response.headers)",
      "language": "python"
    }
  ]
}
[/block]

A sample response follows:

[block:code]
{
  "codes": [
    {
      "code": "HTTP/1.1 200 OK\nServer: nginx\nDate: Wed, 28 Apr 2021 16:23:07 GMT\nContent-Type: application/json\nConnection: keep-alive\nX-Truncated: false\nX-Formats: application/vnd.thinknum.table+json, application/vnd.thinknum.map+json, text/csv, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\nX-Total: 963\nX-State: complete\nStrict-Transport-Security: max-age=15768000",
      "language": "json"
    }
  ]
}
[/block]

To retrieve data:

[block:code]
{
  "codes": [
    {
      "code": "GET /datasets/store/query/33afc36bb52fcb5e26aaf94ddfb2c91341a2a673bb1210341dcc1764a955c9cd?limit=10&start=1\nAuthorization: token 01234567890123456789\nX-API-Version: 20151130\nAccept: application/vnd.thinknum.table+json\nContent-Type: application/json",
      "language": "http"
    },
    {
      "code": "curl -X GET \"https://data.thinknum.com/datasets/store/query/33afc36bb52fcb5e26aaf94ddfb2c91341a2a673bb1210341dcc1764a955c9cd?limit=10&start=1\" \\\n-H \"Accept: application/vnd.thinknum.table+json\" \\\n-H \"Content-Type: application/json\" \\\n-H \"X-API-Version: 20151130\" \\\n-H \"Authorization: token 01234567890123456789\"\n",
      "language": "curl"
    },
    {
      "code": "response = requests.get(\n    url='https://data.thinknum.com/datasets/store/query/33afc36bb52fcb5e26aaf94ddfb2c91341a2a673bb1210341dcc1764a955c9cd', \n    headers={\n        'Authorization': 'token 01234567890123456789', \n        'X-API-Version': '20151130', \n        'Accept': 'application/vnd.thinknum.table+json'\n    }\n)\nresults = json.loads(response.text)",
      "language": "python"
    }
  ]
}
[/block]

A sample response follows:

[block:code]
{
  "codes": [
    {
      "code": "{\n    \"group_fields\": [\n        {\n            \"length\": 320,\n            \"options\": [],\n            \"display_name\": \"Ticker Symbol\",\n            \"format\": \"ticker\",\n            \"metric\": false,\n            \"type\": \"string\",\n            \"id\": \"dataset__entity__entity_ticker__ticker__ticker\",\n            \"summary\": \"The full ticker symbol, defined as the financial market of the company, followed by a colon (:), and then the identifier of the company. ex. NASDAQ:AAPL\"\n        },\n        {\n            \"length\": 255,\n            \"options\": [],\n            \"display_name\": \"Entity Name\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"string\",\n            \"id\": \"dataset__entity__name\",\n            \"summary\": \"The name of a specific entity belonging to a ticker within this dataset.\"\n        },\n        ...\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Competition #1\",\n            \"format\": null,\n            \"metric\": true,\n            \"type\": \"number\",\n            \"id\": \"$nearby_1@count\",\n            \"summary\": \"\"\n        }\n    ],\n    \"total\": 963,\n    \"id\": \"33afc36bb52fcb5e26aaf94ddfb2c91341a2a673bb1210341dcc1764a955c9cd\",\n    \"count\": 10,\n    \"rows\": [\n        [\n            \"nyse:jwn\",\n            \"Nordstrom\",\n            ...\n            0\n        ],\n        ...\n        [\n            \"nyse:jwn\",\n            \"Nordstrom\",\n            ...\n            2\n        ]\n    ],\n    \"fields\": [\n        {\n            \"display_name\": \"Ticker Symbol\",\n            \"format\": \"ticker\",\n            \"metric\": false,\n            \"id\": \"dataset__entity__entity_ticker__ticker__ticker\",\n            \"length\": 320,\n            \"summary\": \"The full ticker symbol, defined as the financial market of the company, followed by a colon (:), and then the identifier of the company. ex. NASDAQ:AAPL\",\n            \"type\": \"string\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Entity Name\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"dataset__entity__name\",\n            \"length\": 255,\n            \"summary\": \"The name of a specific entity belonging to a ticker within this dataset.\",\n            \"type\": \"string\",\n            \"options\": []\n        },\n        ...\n        {\n            \"display_name\": \"Competition #1\",\n            \"format\": null,\n            \"metric\": true,\n            \"id\": \"$nearby_1@count\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        }\n    ],\n    \"sort_fields\": [],\n    \"start\": 1,\n    \"state\": \"complete\",\n    \"limit\": 10,\n    \"last_date_updated\": \"2021-03-26T16:00:35Z\"\n}",
      "language": "json"
    }
  ]
}
[/block]

[block:api-header]
{
  "title": "Nearest Competitor"
}
[/block]

While the Nearby Competitors function returns a count of the competitors within a specified distance, the Nearest Competitor returns the closest competitor for each item in the query.

The Nearest Competitor function has the following parameters:

[block:parameters]
{
  "data": {
    "h-0": "Parmeter",
    "0-0": "dataset",
    "h-1": "Description",
    "h-2": "Required?",
    "1-0": "tickers",
    "2-0": "entities",
    "0-1": "The dataset of the competitors",
    "0-2": "Yes",
    "1-1": "List of competitor tickers",
    "1-2": "No, if entities is defined;\nyes, otherwise.",
    "2-1": "List of competitor entities",
    "2-2": "No, if tickers is defined;\nyes, otherwise."
  },
  "cols": 3,
  "rows": 3
}
[/block]

For example, if you are analyzing the "Store Locations" dataset, and you would like to see how close each Nordstrom store is to a Ralph Lauren store, you can run the following query:

[block:code]
{
  "codes": [
    {
      "code": "POST /dataset/store/query/ HTTP/1.1\nAuthorization: token 01234567890123456789\nX-API-Version: 20151130\n\n{\n    \"tickers\": [\n        \"nyse:jwn\"\n    ],\n    \"functions\": [\n        {\n            \"function\": \"nearest\",\n            \"parameters\": {\n                \"dataset_type\": \"dataset\",\n                \"dataset\": \"store\",\n                \"tickers\": [\n                    \"nyse:rl\"\n                ],\n                \"entities\": [],\n                \"ranks\": [\n                    1\n                ],\n                \"is_include_closed\": false\n            }\n        }\n    ]\n}",
      "language": "http"
    },
    {
      "code": "curl -X POST \"https://data.thinknum.com/datasets/store/query/\" \\\n-H \"Accept: application/json\" \\\n-H \"X-API-Version: 20151130\" \\\n-H \"Authorization: token 01234567890123456789\" \\\n-d $'{\n    \"tickers\": [\n        \"nyse:jwn\"\n    ],\n    \"functions\": [\n        {\n            \"function\": \"nearest\",\n            \"parameters\": {\n                \"dataset_type\": \"dataset\",\n                \"dataset\": \"store\",\n                \"tickers\": [\n                    \"nyse:rl\"\n                ],\n                \"entities\": [],\n                \"ranks\": [\n                    1\n                ],\n                \"is_include_closed\": false\n            }\n        }\n    ]\n}'\n",
      "language": "curl"
    },
    {
      "code": "response = requests.post(\n    url='https://data.thinknum.com/datasets/store/query/', \n    headers={\n        'Authorization': 'token 01234567890123456789', \n        'X-API-Version': '20151130', \n        'Accept': 'application/json'\n    }, \n    data=json.dumps({\n        \"tickers\": [\n            \"nyse:jwn\"\n        ],\n        \"functions\": [\n            {\n                \"function\": \"nearest\",\n                \"parameters\": {\n                    \"dataset_type\": \"dataset\",\n                    \"dataset\": \"store\",\n                    \"tickers\": [\n                        \"nyse:rl\"\n                    ],\n                    \"entities\": [],\n                    \"ranks\": [\n                        1\n                    ],\n                    \"is_include_closed\": false\n                }\n            }\n        ]\n    })\n)\nresults = json.loads(response.text)",
      "language": "python"
    }
  ]
}
[/block]

A sample response follows:

[block:code]
{
  "codes": [
    {
      "code": "{\n    \"state\": \"complete\",\n    \"total\": 963,\n    \"id\": \"dfe76829a25074868ee8018ac2c2d0cdc074c3e86ec80f9897ee41570950f441\",\n    \"formats\": [\n        \"application/vnd.thinknum.table+json\",\n        \"application/vnd.thinknum.map+json\"\n    ]\n}",
      "language": "json"
    }
  ]
}
[/block]

To check if query is completed:

[block:code]
{
  "codes": [
    {
      "code": "HEAD datasets/store/query/dfe76829a25074868ee8018ac2c2d0cdc074c3e86ec80f9897ee41570950f441 HTTP/1.1\nAuthorization: token 01234567890123456789\nX-API-Version: 20151130\nAccept: application/vnd.thinknum.table+json\nContent-Type: application/x-www-form-urlencoded; charset=utf-8",
      "language": "http"
    },
    {
      "code": "curl -I HEAD \"https://data.thinknum.com/datasets/store/query/dfe76829a25074868ee8018ac2c2d0cdc074c3e86ec80f9897ee41570950f441\" \\\n-H \"Accept: application/vnd.thinknum.table+json\" \\\n-H \"X-API-Version: 20151130\" \\\n-H \"Authorization: token 01234567890123456789\"",
      "language": "curl"
    },
    {
      "code": "response = requests.head(\n    url='https://data.thinknum.com/datasets/store/query/dfe76829a25074868ee8018ac2c2d0cdc074c3e86ec80f9897ee41570950f441', \n    headers={\n        'Authorization': 'token 01234567890123456789', \n        'X-API-Version': '20151130', \n        'Accept': 'application/vnd.thinknum.table+json'\n    }\n)\nresults = dict(response.headers)",
      "language": "python"
    }
  ]
}
[/block]

A sample response follows:

[block:code]
{
  "codes": [
    {
      "code": "HTTP/1.1 200 OK\nServer: nginx\nDate: Wed, 28 Apr 2021 16:29:50 GMT\nContent-Type: application/json\nConnection: keep-alive\nX-Truncated: false\nX-Formats: application/vnd.thinknum.table+json, application/vnd.thinknum.map+json, text/csv, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\nX-Total: 963\nX-State: complete\nStrict-Transport-Security: max-age=15768000",
      "language": "json"
    }
  ]
}
[/block]

To retrieve data:

[block:code]
{
  "codes": [
    {
      "code": "GET /datasets/store/query/dfe76829a25074868ee8018ac2c2d0cdc074c3e86ec80f9897ee41570950f441?limit=10&start=1\nAuthorization: token 01234567890123456789\nX-API-Version: 20151130\nAccept: application/vnd.thinknum.table+json\nContent-Type: application/json",
      "language": "http"
    },
    {
      "code": "curl -X GET \"https://data.thinknum.com/datasets/store/query/dfe76829a25074868ee8018ac2c2d0cdc074c3e86ec80f9897ee41570950f441?limit=10&start=1\" \\\n-H \"Accept: application/vnd.thinknum.table+json\" \\\n-H \"Content-Type: application/json\" \\\n-H \"X-API-Version: 20151130\" \\\n-H \"Authorization: token 01234567890123456789\"\n",
      "language": "curl"
    },
    {
      "code": "response = requests.get(\n    url='https://data.thinknum.com/datasets/store/query/dfe76829a25074868ee8018ac2c2d0cdc074c3e86ec80f9897ee41570950f441', \n    headers={\n        'Authorization': 'token 01234567890123456789', \n        'X-API-Version': '20151130', \n        'Accept': 'application/vnd.thinknum.table+json'\n    }\n)\nresults = json.loads(response.text)",
      "language": "python"
    }
  ]
}
[/block]

A sample response follows:

[block:code]
{
  "codes": [
    {
      "code": "{\n    \"group_fields\": [\n        {\n            \"length\": 320,\n            \"options\": [],\n            \"display_name\": \"Ticker Symbol\",\n            \"format\": \"ticker\",\n            \"metric\": false,\n            \"type\": \"string\",\n            \"id\": \"dataset__entity__entity_ticker__ticker__ticker\",\n            \"summary\": \"The full ticker symbol, defined as the financial market of the company, followed by a colon (:), and then the identifier of the company. ex. NASDAQ:AAPL\"\n        },\n        {\n            \"length\": 255,\n            \"options\": [],\n            \"display_name\": \"Entity Name\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"string\",\n            \"id\": \"dataset__entity__name\",\n            \"summary\": \"The name of a specific entity belonging to a ticker within this dataset.\"\n        },\n        ...\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Nearest Store #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"number\",\n            \"id\": \"$nearest_1_1.rank\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Nearest Ticker #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"number\",\n            \"id\": \"$nearest_1_1.ticker\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Nearest Entity #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"number\",\n            \"id\": \"$nearest_1_1.entity\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Nearest Distance #1\",\n            \"format\": null,\n            \"metric\": true,\n            \"type\": \"number\",\n            \"id\": \"$nearest_1_1.dist\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Nearest Store Name #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"number\",\n            \"id\": \"$nearest_1_1.storefront_name\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Nearest Store Street #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"number\",\n            \"id\": \"$nearest_1_1.street\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Nearest Store City #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"number\",\n            \"id\": \"$nearest_1_1.city\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Nearest Store State #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"number\",\n            \"id\": \"$nearest_1_1.state\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Nearest Store Country #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"number\",\n            \"id\": \"$nearest_1_1.country\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Nearest Store Postal Code #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"number\",\n            \"id\": \"$nearest_1_1.postal_code\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Nearest Store Is Closed #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"boolean\",\n            \"id\": \"$nearest_1_1.is_closed\",\n            \"summary\": \"\"\n        }\n    ],\n    \"total\": 963,\n    \"id\": \"dfe76829a25074868ee8018ac2c2d0cdc074c3e86ec80f9897ee41570950f441\",\n    \"count\": 10,\n    \"rows\": [\n        [\n            \"nyse:jwn\",\n            \"Nordstrom\",\n            ...\n            1,\n            \"nyse:rl\",\n            \"Ralph Lauren\",\n            29.2719080003088,\n            \"RALPH LAUREN\",\n            \"Houston Galleria, 5015 Westheimer\",\n            \"Houston, TX\",\n            \"TX\",\n            \"USA\",\n            \"77056\",\n            false\n        ],\n        ...\n        [\n            \"nyse:jwn\",\n            \"Nordstrom\",\n            ...\n            1,\n            \"nyse:rl\",\n            \"Ralph Lauren\",\n            41.8697883953577,\n            \"POLO RALPH LAUREN FACTORY STORE\",\n            \"Edinburgh Premium Outlets, 3026 Outlet Drive, Suite G - 040\",\n            \"Edinburgh, IN\",\n            \"IN\",\n            \"USA\",\n            \"46124\",\n            false\n        ]\n    ],\n    \"fields\": [\n        {\n            \"display_name\": \"Ticker Symbol\",\n            \"format\": \"ticker\",\n            \"metric\": false,\n            \"id\": \"dataset__entity__entity_ticker__ticker__ticker\",\n            \"length\": 320,\n            \"summary\": \"The full ticker symbol, defined as the financial market of the company, followed by a colon (:), and then the identifier of the company. ex. NASDAQ:AAPL\",\n            \"type\": \"string\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Entity Name\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"dataset__entity__name\",\n            \"length\": 255,\n            \"summary\": \"The name of a specific entity belonging to a ticker within this dataset.\",\n            \"type\": \"string\",\n            \"options\": []\n        },\n        ...\n        {\n            \"display_name\": \"Nearest Store #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"$nearest_1_1.rank\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Nearest Ticker #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"$nearest_1_1.ticker\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Nearest Entity #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"$nearest_1_1.entity\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Nearest Distance #1\",\n            \"format\": null,\n            \"metric\": true,\n            \"id\": \"$nearest_1_1.dist\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Nearest Store Name #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"$nearest_1_1.storefront_name\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Nearest Store Street #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"$nearest_1_1.street\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Nearest Store City #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"$nearest_1_1.city\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Nearest Store State #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"$nearest_1_1.state\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Nearest Store Country #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"$nearest_1_1.country\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Nearest Store Postal Code #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"$nearest_1_1.postal_code\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Nearest Store Is Closed #1\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"$nearest_1_1.is_closed\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"boolean\",\n            \"options\": []\n        }\n    ],\n    \"sort_fields\": [],\n    \"start\": 1,\n    \"state\": \"complete\",\n    \"limit\": 10,\n    \"last_date_updated\": \"2021-03-26T16:00:35Z\"\n}",
      "language": "json"
    }
  ]
}
[/block]

[block:api-header]
{
  "title": "Sales Analyzer"
}
[/block]

This is a function that can be applied to "Car Inventory" dataset to see which cars have been sold. Since each vehicle has a unique identification number, users are able to see when a vehicle is added or removed. Tracking the number of vehicles leaving inventory allows users to predict sales figures

The sales function has the following parameters:

[block:parameters]
{
  "data": {
    "0-0": "lookahead_day_count",
    "1-0": "start_date",
    "2-0": "end_date",
    "h-0": "Parameter",
    "h-1": "Description",
    "h-2": "Required",
    "0-2": "Yes",
    "0-1": "The number of days in the future that will be checked to see if same VIN returns",
    "1-2": "No",
    "2-2": "No",
    "1-1": "Start date",
    "2-1": "End date"
  },
  "cols": 3,
  "rows": 1
}
[/block]

For example, if you are analyzing the "Car Inventory" dataset, and you would like to see which car have been sold from Carvana, you can run the following query:

[block:code]
{
  "codes": [
    {
      "code": "POST /dataset/store/query/ HTTP/1.1\nAuthorization: token 01234567890123456789\nX-API-Version: 20151130\n\n{\n    \"tickers\": [\n        \"nyse:cvna\"\n    ],\n    \"filters\": [\n        {\n            \"column\": \"as_of_date\",\n            \"type\": \"[]\",\n            \"value\": [\n                \"2021-01-01\",\n                \"2021-01-31\"\n            ]\n        }\n    ],\n    \"functions\": [\n        {\n            \"function\": \"sales\",\n            \"parameters\": {\n                \"lookahead_day_count\": 2\n            }\n        }\n    ]\n}",
      "language": "http"
    },
    {
      "code": "curl -X POST \"https://data.thinknum.com/datasets/store/query/\" \\\n-H \"Accept: application/json\" \\\n-H \"X-API-Version: 20151130\" \\\n-H \"Authorization: token 01234567890123456789\" \\\n-d $'{\n    \"tickers\": [\n        \"nyse:cvna\"\n    ],\n    \"filters\": [\n        {\n            \"column\": \"as_of_date\",\n            \"type\": \"[]\",\n            \"value\": [\n                \"2021-01-01\",\n                \"2021-01-31\"\n            ]\n        }\n    ],\n    \"functions\": [\n        {\n            \"function\": \"sales\",\n            \"parameters\": {\n                \"lookahead_day_count\": 2\n            }\n        }\n    ]\n}'\n",
      "language": "curl"
    },
    {
      "code": "response = requests.post(\n    url='https://data.thinknum.com/datasets/store/query/', \n    headers={\n        'Authorization': 'token 01234567890123456789', \n        'X-API-Version': '20151130', \n        'Accept': 'application/json'\n    }, \n    data=json.dumps({\n        \"tickers\": [\n            \"nyse:cvna\"\n        ],\n        \"filters\": [\n            {\n                \"column\": \"as_of_date\",\n                \"type\": \"[]\",\n                \"value\": [\n                    \"2021-01-01\",\n                    \"2021-01-31\"\n                ]\n            }\n        ],\n        \"functions\": [\n            {\n                \"function\": \"sales\",\n                \"parameters\": {\n                    \"lookahead_day_count\": 2\n                }\n            }\n        ]\n    })\n)\nresults = json.loads(response.text)",
      "language": "python"
    }
  ]
}
[/block]

A sample response follows:

[block:code]
{
  "codes": [
    {
      "code": "{\n    \"state\": \"running\",\n    \"total\": 0,\n    \"id\": \"bb6a3c405cbe2fff1c5522892aecabf7a7a8b83549d3567ce16d4146cc930d23\",\n    \"formats\": [\n        \"application/vnd.thinknum.table+json\"\n    ]\n}",
      "language": "json"
    }
  ]
}
[/block]

To check if query is completed:

[block:code]
{
  "codes": [
    {
      "code": "HEAD datasets/store/query/bb6a3c405cbe2fff1c5522892aecabf7a7a8b83549d3567ce16d4146cc930d23 HTTP/1.1\nAuthorization: token 01234567890123456789\nX-API-Version: 20151130\nAccept: application/vnd.thinknum.table+json\nContent-Type: application/x-www-form-urlencoded; charset=utf-8",
      "language": "http"
    },
    {
      "code": "curl -I HEAD \"https://data.thinknum.com/datasets/store/query/bb6a3c405cbe2fff1c5522892aecabf7a7a8b83549d3567ce16d4146cc930d23\" \\\n-H \"Accept: application/vnd.thinknum.table+json\" \\\n-H \"X-API-Version: 20151130\" \\\n-H \"Authorization: token 01234567890123456789\"",
      "language": "curl"
    },
    {
      "code": "response = requests.head(\n    url='https://data.thinknum.com/datasets/store/query/bb6a3c405cbe2fff1c5522892aecabf7a7a8b83549d3567ce16d4146cc930d23', \n    headers={\n        'Authorization': 'token 01234567890123456789', \n        'X-API-Version': '20151130', \n        'Accept': 'application/vnd.thinknum.table+json'\n    }\n)\nresults = dict(response.headers)",
      "language": "python"
    }
  ]
}
[/block]

A sample response follows:

[block:code]
{
  "codes": [
    {
      "code": "HTTP/1.1 200 OK\nServer: nginx\nDate: Thu, 29 Apr 2021 17:53:59 GMT\nContent-Type: application/json\nConnection: keep-alive\nX-Truncated: true\nX-Formats: application/vnd.thinknum.table+json, text/csv\nX-Total: 500000\nX-State: complete\nStrict-Transport-Security: max-age=15768000",
      "language": "json"
    }
  ]
}
[/block]

To retrieve data:

[block:code]
{
  "codes": [
    {
      "code": "GET /datasets/store/query/bb6a3c405cbe2fff1c5522892aecabf7a7a8b83549d3567ce16d4146cc930d23?limit=10&start=1\nAuthorization: token 01234567890123456789\nX-API-Version: 20151130\nAccept: application/vnd.thinknum.table+json\nContent-Type: application/json",
      "language": "http"
    },
    {
      "code": "curl -X GET \"https://data.thinknum.com/datasets/store/query/bb6a3c405cbe2fff1c5522892aecabf7a7a8b83549d3567ce16d4146cc930d23?limit=10&start=1\" \\\n-H \"Accept: application/vnd.thinknum.table+json\" \\\n-H \"Content-Type: application/json\" \\\n-H \"X-API-Version: 20151130\" \\\n-H \"Authorization: token 01234567890123456789\"",
      "language": "curl"
    },
    {
      "code": "response = requests.get(\n    url='https://data.thinknum.com/datasets/store/query/bb6a3c405cbe2fff1c5522892aecabf7a7a8b83549d3567ce16d4146cc930d23', \n    headers={\n        'Authorization': 'token 01234567890123456789', \n        'X-API-Version': '20151130', \n        'Accept': 'application/vnd.thinknum.table+json'\n    }\n)\nresults = json.loads(response.text)",
      "language": "python"
    }
  ]
}
[/block]

A sample response follows:

[block:code]
{
  "codes": [
    {
      "code": "{\n    \"group_fields\": [\n        {\n            \"length\": 320,\n            \"options\": [],\n            \"display_name\": \"Ticker Symbol\",\n            \"format\": \"ticker\",\n            \"metric\": false,\n            \"type\": \"string\",\n            \"id\": \"dataset__entity__entity_ticker__ticker__ticker\",\n            \"summary\": \"The full ticker symbol, defined as the financial market of the company, followed by a colon (:), and then the identifier of the company. ex. NASDAQ:AAPL\"\n        },\n        ...\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Is Sold\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"boolean\",\n            \"id\": \"is_sold\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Sold (2 Lookahead Days)\",\n            \"format\": null,\n            \"metric\": false,\n            \"type\": \"boolean\",\n            \"id\": \"$sales_1#sold\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Days filled\",\n            \"format\": null,\n            \"metric\": true,\n            \"type\": \"number\",\n            \"id\": \"$sales_1#days_filled\",\n            \"summary\": \"\"\n        },\n        {\n            \"length\": null,\n            \"options\": [],\n            \"display_name\": \"Days since posted\",\n            \"format\": null,\n            \"metric\": true,\n            \"type\": \"number\",\n            \"id\": \"$sales_1#days_since_posted\",\n            \"summary\": \"\"\n        }\n    ],\n    \"total\": 500000,\n    \"id\": \"58caab53e58c7a4affafb703cc693065cff94043f21b5ba7814fce0a575cd305\",\n    \"count\": 10,\n    \"rows\": [\n        [\n            \"nyse:cvna\",\n            ...\n            null,\n            false,\n            null,\n            89\n        ],\n        ...\n        [\n            \"nyse:cvna\",\n            ...\n            null,\n            false,\n            null,\n            89\n        ]\n    ],\n    \"fields\": [\n        {\n            \"display_name\": \"Ticker Symbol\",\n            \"format\": \"ticker\",\n            \"metric\": false,\n            \"id\": \"dataset__entity__entity_ticker__ticker__ticker\",\n            \"length\": 320,\n            \"summary\": \"The full ticker symbol, defined as the financial market of the company, followed by a colon (:), and then the identifier of the company. ex. NASDAQ:AAPL\",\n            \"type\": \"string\",\n            \"options\": []\n        },\n        ...\n        {\n            \"display_name\": \"Is Sold\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"is_sold\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"boolean\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Sold (2 Lookahead Days)\",\n            \"format\": null,\n            \"metric\": false,\n            \"id\": \"$sales_1#sold\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"boolean\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Days filled\",\n            \"format\": null,\n            \"metric\": true,\n            \"id\": \"$sales_1#days_filled\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        },\n        {\n            \"display_name\": \"Days since posted\",\n            \"format\": null,\n            \"metric\": true,\n            \"id\": \"$sales_1#days_since_posted\",\n            \"length\": null,\n            \"summary\": \"\",\n            \"type\": \"number\",\n            \"options\": []\n        }\n    ],\n    \"sort_fields\": [\n        {\n            \"column\": \"as_of_date\",\n            \"order\": \"desc\"\n        }\n    ],\n    \"start\": 1,\n    \"state\": \"complete\",\n    \"limit\": 10,\n    \"last_date_updated\": \"2021-04-25T00:07:33Z\"\n}",
      "language": "json"
    }
  ]
}
[/block]