Skip to main content

Conjunto de datos

Este conjunto de datos de Foursquare está disponible para descargar y puede usarse gratuitamente bajo la licencia Apache 2.0. Contiene más de 100 millones de registros de puntos de interés (POI) comerciales, como tiendas, restaurantes, parques, zonas de juegos y monumentos. También incluye metadatos adicionales sobre estos lugares, como categorías e información de redes sociales.

Exploración de datos

Para explorar los datos usaremos clickhouse-local, una pequeña herramienta de línea de comandos que ofrece todo el motor de ClickHouse, aunque también puede usar ClickHouse Cloud, clickhouse-client o incluso chDB. Ejecute la siguiente consulta para seleccionar los datos del bucket de S3 donde están almacenados:
Query
Response
Vemos que bastantes campos tienen ᴺᵁᴸᴸ, así que podemos añadir algunas condiciones más a nuestra consulta para obtener datos más útiles:
Query
Ejecute la siguiente consulta para ver el esquema inferido automáticamente de los datos con DESCRIBE:
Query
Response

Carga de los datos en ClickHouse

Si quieres almacenar los datos de forma persistente en disco, puedes usar clickhouse-server o ClickHouse Cloud. Para crear la tabla, ejecuta el siguiente comando:
Query
Tenga en cuenta el uso del tipo de datos LowCardinality para varias columnas, lo que cambia la representación interna de los datos para codificarlos mediante diccionario. Trabajar con datos codificados mediante diccionario aumenta significativamente el rendimiento de las consultas SELECT en muchas aplicaciones. Además, se crean dos columnas UInt32 MATERIALIZED, mercator_x y mercator_y, que convierten las coordenadas de latitud/longitud a la proyección Web Mercator para segmentar más fácilmente el mapa en teselas:
Vamos a desglosar lo que ocurre arriba en cada columna. mercator_x Esta columna convierte un valor de longitud en una coordenada X en la proyección de Mercator:
  • longitude + 180 desplaza el rango de longitudes de [-180, 180] a [0, 360]
  • Dividir entre 360 lo normaliza a un valor entre 0 y 1
  • Multiplicar por 0xFFFFFFFF (hexadecimal del valor máximo de un entero sin signo de 32 bits) escala este valor normalizado al rango completo de un entero de 32 bits
mercator_y Esta columna convierte un valor de latitud en una coordenada Y en la proyección de Mercator:
  • latitude + 90 desplaza la latitud de [-90, 90] a [0, 180]
  • Dividir entre 360 y multiplicar por pi() lo convierte a radianes para las funciones trigonométricas
  • La parte log(tan(...)) es el núcleo de la fórmula de proyección de Mercator
  • Multiplicar por 0xFFFFFFFF lo escala al rango completo de enteros de 32 bits
Especificar MATERIALIZED garantiza que ClickHouse calcule los valores de estas columnas cuando hacemos INSERT de los datos, sin tener que especificar estas columnas (que no forman parte del esquema de datos original) en la sentencia `INSERT. La tabla se ordena por mortonEncode(mercator_x, mercator_y), lo que genera una curva de llenado espacial en orden Z de mercator_x, mercator_y para mejorar significativamente el rendimiento de las consultas geoespaciales. Esta ordenación por curva en Z garantiza que los datos queden organizados físicamente según su proximidad espacial:
También se crean dos índices minmax para acelerar la búsqueda:
Como puede ver, ClickHouse tiene absolutamente todo lo que necesita para aplicaciones de mapas en tiempo real. Ejecute la siguiente consulta para cargar los datos:

Visualización de los datos

Para ver lo que se puede hacer con este conjunto de datos, eche un vistazo a adsb.exposed. adsb.exposed fue creado originalmente por el cofundador y CTO Alexey Milovidov para visualizar datos de vuelos ADS-B (Automatic Dependent Surveillance-Broadcast), que son 1000 veces mayores. Durante un hackatón de la empresa, Alexey añadió los datos de Foursquare a la herramienta. A continuación, presentamos algunas de nuestras visualizaciones favoritas.
Última modificación el 3 de julio de 2026