Skip to main content
Foursquare OS Places contiene más de 100 millones de puntos de interés (POI) comerciales, incluidos comercios, restaurantes, parques, zonas de juegos y monumentos. En esta guía, conectarás ClickHouse al catálogo Iceberg de Foursquare, explorarás el conjunto de datos y lo cargarás en una tabla optimizada para consultas geoespaciales. El conjunto de datos está disponible a través del portal de Foursquare Places y se puede utilizar gratuitamente conforme a la licencia Apache 2.0.
Foursquare ha actualizado la forma de acceder a OS Places. Las versiones anteriores de esta guía consultaban archivos con una fecha específica en un bucket S3 público; ahora se accede mediante Places Portal y un catálogo Iceberg autenticado. Consulta la documentación de Foursquare sobre el acceso a OS Places para obtener más información.

Antes de empezar

Antes de ejecutar las consultas de esta guía, necesita lo siguiente:
  • Una cuenta en el portal Foursquare Places
  • Un token de acceso creado desde la pestaña Access Data del conjunto de datos OS Places

Conéctate al catálogo de Foursquare

Mantén privado tu token de acceso. Inicia el client de ClickHouse y sustituye <YOUR_ACCESS_TOKEN> por tu token en la siguiente consulta:
Query
La base de datos del catálogo es de solo lectura. La tabla places_os refleja la versión actualmente publicada por Foursquare’s, en lugar de una versión de Parquet fijada a una fecha, por lo que sus filas y su esquema pueden cambiar con el tiempo. Por tanto, las consultas sin una cláusula ORDER BY pueden devolver filas de muestra distintas de las respuestas mostradas en esta guía.

Verifique la conexión

Consulte una fila de la tabla Iceberg places_os:
Query
Response

Explorar los datos

La fila de muestra contiene varios campos nulos. Añada filtros para obtener una fila más completa:
Query
Response
Use DESCRIBE para inspeccionar el esquema de la tabla:
Query
Response

Cargue los datos en ClickHouse

Para almacenar los datos de forma persistente, cree una tabla en clickhouse-server o en ClickHouse Cloud. Cree una tabla MergeTree con columnas codificadas mediante diccionario y coordenadas de Web Mercator materializadas:
Query
Varias columnas utilizan el tipo de datos LowCardinality, que almacena valores repetidos mediante codificación de diccionario. Esta representación puede mejorar significativamente el rendimiento de las consultas SELECT. Las dos columnas UInt32 MATERIALIZED, mercator_x y mercator_y, asignan la latitud y la longitud a la proyección Web Mercator, lo que facilita dividir el mapa en mosaicos:
Las expresiones calculan los siguientes valores. mercator_x Esta columna convierte un valor de longitud en una coordenada X de la proyección de Mercator:
  • longitude + 180 desplaza el intervalo de longitud de [-180, 180] a [0, 360].
  • Dividir entre 360 normaliza el valor a un intervalo entre 0 y 1.
  • Multiplicar por 0xFFFFFFFF, el entero sin signo máximo de 32 bits, escala el valor normalizado a todo el intervalo de un entero de 32 bits.
mercator_y Esta columna convierte un valor de latitud en una coordenada Y de la proyección de Mercator:
  • latitude + 90 desplaza el intervalo de latitud de [-90, 90] a [0, 180].
  • Dividir entre 360 y multiplicar por pi convierte el valor a radianes para las funciones trigonométricas.
  • log(tan(...)) aplica la fórmula básica de la proyección de Mercator.
  • Multiplicar por 0xFFFFFFFF escala el resultado a todo el intervalo de enteros de 32 bits.
Al especificar MATERIALIZED, ClickHouse calcula estos valores al insertar los datos, sin que los datos de origen tengan que contener las columnas. La tabla se ordena mediante mortonEncode(mercator_x, mercator_y), que crea una curva de relleno espacial de orden Z y organiza los datos según su proximidad espacial:
Otros dos índices minmax aceleran el filtrado espacial:
Cargue la versión actual de OS Places en la tabla:
Esta consulta lee y almacena más de 100 millones de filas. Puede tardar bastante tiempo, consumir almacenamiento y generar costes de uso en ClickHouse Cloud. Si la ejecuta de nuevo, se añadirán los mismos datos, así que asegúrese de que foursquare_mercator esté vacía antes de reintentar la importación.
Query
Las listas explícitas de columnas de origen y destino evitan que los cambios en el orden de las columnas del catálogo desalineen los valores importados. La consulta excluye unresolved_flags porque no se necesita en la tabla local y filtra las filas sin coordenadas porque no pueden situarse en el mapa. Los demás valores anulables del origen permanecen como nulos en la tabla local.

Visualización de los datos

El modelo de acceso de Foursquare ha cambiado desde que se crearon estas visualizaciones. La vista interactiva original de Places es anterior al modelo de acceso actual y se enlaza como referencia histórica, pero es posible que ya no muestre datos de Places. Las imágenes siguientes se conservan como ejemplos históricos.
Durante un hackatón de la empresa, el cofundador y CTO de ClickHouse, Alexey Milovidov, utilizó ClickHouse para crear las siguientes visualizaciones a partir del conjunto de datos de Foursquare.
Última modificación el 14 de agosto de 2026