tap into the value of data
transform, join and serve data with flexible and powerful SQL queries and documented, secured APIs
Try tapAny dataset
Upload CSV, JSONL, Parquet and other files or folders of any size
Powerful transformations
Analyse, transform, join and enrich your datasets with SQL
Managed APIs
Create documented, secured and performant APIs with customisable filters
Bring a dataset such as...
# | PostcodeUtf8 | AddressLine1Utf8 | AddressLine2Utf8 |
---|---|---|---|
1 | "KA278LF" | "Lamlash " | "Isle of Arran" |
2 | "KA128SS" | " Kilwinning Road" | " Irvine" |
3 | "KA280HF" | "College St " | "Millport" |
4 | "KA2 0BE" | " Kilmarnock Road" | "Kilmarnock" |
5 | "KA120DP" | " Warrix Avenue" | "Irvine" |
6 | "KA6 6AB" | "Dalmellington Road " | "Ayr" |
7 | "KA9 2HQ" | "Biggart Road " | "Prestwick" |
8 | "KA6 6DX" | " Dalmellington Road" | "Ayr" |
9 | "KA7 4DW" | "10 Doonfoot Road " | "Ayr" |
10 | "KA215RF" | "Nelson Road " | "Saltcoats" |
...clean it up...
SELECT
regexp_replace("Postcode", '\s*(.3$)', ' \1', 'g') AS "Postcode",
trim("AddressLine1") AS "AddressLine1",
trim("AddressLine2") AS "AddressLine2"
FROM data.example
# | PostcodeUtf8 | AddressLine1Utf8 | AddressLine2Utf8 |
---|---|---|---|
1 | "KA27 8LF" | "Lamlash" | "Isle of Arran" |
2 | "KA12 8SS" | "Kilwinning Road" | "Irvine" |
3 | "KA28 0HF" | "College St" | "Millport" |
4 | "KA2 0BE" | "Kilmarnock Road" | "Kilmarnock" |
5 | "KA12 0DP" | "Warrix Avenue" | "Irvine" |
6 | "KA6 6AB" | "Dalmellington Road" | "Ayr" |
7 | "KA9 2HQ" | "Biggart Road" | "Prestwick" |
8 | "KA6 6DX" | "Dalmellington Road" | "Ayr" |
9 | "KA7 4DW" | "10 Doonfoot Road" | "Ayr" |
10 | "KA21 5RF" | "Nelson Road" | "Saltcoats" |
...join it with another dataset...
SELECT model.example_cleaned.*,
data.uk_postcode_lookup.latitude AS "Latitude",
data.uk_postcode_lookup.longitude AS "Longitude"
FROM model.example_cleaned
JOIN data.uk_postcode_lookup ON "Postcode" = postcode
# | PostcodeUtf8 | LatitudeFloat64 | LongitudeFloat64 | AddressLine1Utf8 | AddressLine2Utf8 |
---|---|---|---|---|---|
1 | "KA27 8LF" | 55.54312 | -5.115521 | "Lamlash" | "Isle of Arran" |
2 | "KA12 8SS" | 55.635056 | -4.676106 | "Kilwinning Road" | "Irvine" |
3 | "KA28 0HF" | 55.761296 | -4.922755 | "College St" | "Millport" |
4 | "KA2 0BE" | 55.61394 | -4.539409 | "Kilmarnock Road" | "Kilmarnock" |
5 | "KA12 0DP" | 55.611863 | -4.660189 | "Warrix Avenue" | "Irvine" |
6 | "KA6 6AB" | 55.434174 | -4.593108 | "Dalmellington Road" | "Ayr" |
7 | "KA9 2HQ" | 55.492576 | -4.604862 | "Biggart Road" | "Prestwick" |
8 | "KA6 6DX" | 55.430332 | -4.595538 | "Dalmellington Road" | "Ayr" |
9 | "KA7 4DW" | 55.449149 | -4.639765 | "10 Doonfoot Road" | "Ayr" |
10 | "KA21 5RF" | 55.63957 | -4.772409 | "Nelson Road" | "Saltcoats" |
...enrich with H3 indexing...
SELECT
model.example_joined.*,
h3_latlng_to_cell("Latitude", "Longitude", 15::INT) AS "H3Res15"
FROM model.example_joined
# | PostcodeUtf8 | H3Res15Utf8 | LatitudeFloat64 | LongitudeFloat64 | AddressLine1Utf8 | AddressLine2Utf8 |
---|---|---|---|---|---|---|
1 | "KA27 8LF" | "8f19569a8c5c648" | 55.54312 | -5.115521 | "Lamlash" | "Isle of Arran" |
2 | "KA12 8SS" | "8f19092e6775410" | 55.635056 | -4.676106 | "Kilwinning Road" | "Irvine" |
3 | "KA28 0HF" | "8f19092b0d119ad" | 55.761296 | -4.922755 | "College St" | "Millport" |
4 | "KA2 0BE" | "8f190925084439b" | 55.61394 | -4.539409 | "Kilmarnock Road" | "Kilmarnock" |
5 | "KA12 0DP" | "8f19092e3d467a6" | 55.611863 | -4.660189 | "Warrix Avenue" | "Irvine" |
6 | "KA6 6AB" | "8f1954598d46a49" | 55.434174 | -4.593108 | "Dalmellington Road" | "Ayr" |
7 | "KA9 2HQ" | "8f1954598c58ac3" | 55.492576 | -4.604862 | "Biggart Road" | "Prestwick" |
8 | "KA6 6DX" | "8f1954598c58ac3" | 55.430332 | -4.595538 | "Dalmellington Road" | "Ayr" |
9 | "KA7 4DW" | "8f19545932d3a66" | 55.449149 | -4.639765 | "10 Doonfoot Road" | "Ayr" |
10 | "KA21 5RF" | "8f19092f28342c1" | 55.63957 | -4.772409 | "Nelson Road" | "Saltcoats" |
...and tap into this data from your applications:
https://example.com/test?Within=[-5.205964198095899,55.50214416203221,-5.079052659295115,55.57395814779818]
{ "data": [ { "Postcode": "KA27 8LF", "H3Res15": "8f19569a8c5c648", "Latitude": 55.54312, "Longitude": -5.115521, "AddressLine1": "Lamlash", "AddressLine2": "Isle of Arran" } ], "_meta": { "cursor": null, "elapsed": 35 } }
- Upload CSV, JSONL, Parquet and other files of any size
- Use SQL to select, join, transform and enrich data
- Create REST APIs on a unique domain
- Customise API filters, including geospatial
- Monitor endpoint usage
- Share generated OpenAPI documentation
- Secure endpoints via API keys