Skip to main content

Conjunto de dados

Este conjunto de dados da Foursquare está disponível para download e pode ser usado gratuitamente sob a licença Apache 2.0. Ele contém mais de 100 milhões de registros de pontos de interesse comerciais (POI), como lojas, restaurantes, parques, parquinhos e monumentos. Também inclui metadados adicionais sobre esses locais, como categorias e informações de redes sociais.

Exploração de dados

Para explorar os dados, usaremos o clickhouse-local, uma pequena ferramenta de linha de comando que oferece o mecanismo do ClickHouse completo, embora você também possa usar ClickHouse Cloud, clickhouse-client ou até mesmo chDB. Execute a consulta a seguir para selecionar os dados do bucket do S3 em que eles estão armazenados:
Query
Response
Vemos que vários campos estão com ᴺᵁᴸᴸ, então podemos adicionar algumas condições à nossa consulta para retornar dados mais úteis:
Query
Execute a consulta a seguir para ver o esquema dos dados inferido automaticamente usando o DESCRIBE:
Query
Response

Carregando os dados no ClickHouse

Se quiser persistir os dados em disco, você pode usar clickhouse-server ou ClickHouse Cloud. Para criar a tabela, execute o seguinte comando:
Query
Observe o uso do tipo de dado LowCardinality em várias colunas, o que altera a representação interna dos dados para uma codificação por dicionário. Trabalhar com dados codificados por dicionário aumenta significativamente o desempenho de consultas SELECT em muitas aplicações. Além disso, são criadas duas colunas UInt32 MATERIALIZED, mercator_x e mercator_y, que mapeiam as coordenadas de latitude/longitude para a projeção Web Mercator para facilitar a segmentação do mapa em blocos:
Vamos detalhar o que está acontecendo acima em cada coluna. mercator_x Esta coluna converte um valor de longitude em uma coordenada X na projeção de Mercator:
  • longitude + 180 desloca o intervalo de longitude de [-180, 180] para [0, 360]
  • Dividir por 360 normaliza isso para um valor entre 0 e 1
  • Multiplicar por 0xFFFFFFFF (hexadecimal para o valor máximo de um inteiro sem sinal de 32 bits) escala esse valor normalizado para todo o intervalo de um inteiro de 32 bits
mercator_y Esta coluna converte um valor de latitude em uma coordenada Y na projeção de Mercator:
  • latitude + 90 desloca a latitude de [-90, 90] para [0, 180]
  • Dividir por 360 e multiplicar por pi() converte para radianos para uso nas funções trigonométricas
  • A parte log(tan(...)) é o núcleo da fórmula da projeção de Mercator
  • Multiplicar por 0xFFFFFFFF escala para todo o intervalo de inteiros de 32 bits
Especificar MATERIALIZED garante que o ClickHouse calcule os valores dessas colunas quando fazemos o INSERT dos dados, sem precisar especificar essas colunas (que não fazem parte do esquema de dados original) na instrução INSERT. A tabela é ordenada por mortonEncode(mercator_x, mercator_y), o que produz uma curva Z de preenchimento espacial de mercator_x, mercator_y para melhorar significativamente o desempenho de consultas geoespaciais. Essa ordenação por curva Z garante que os dados sejam organizados fisicamente por proximidade espacial:
Também são criados dois índices minmax para acelerar as buscas:
Como você pode ver, o ClickHouse tem tudo de que você precisa para aplicativos de mapeamento em tempo real! Execute a consulta a seguir para carregar os dados:

Visualizando os dados

Para ver o que é possível com este conjunto de dados, confira adsb.exposed. O adsb.exposed foi criado originalmente pelo cofundador e CTO Alexey Milovidov para visualizar dados de voo ADS-B (Automatic Dependent Surveillance-Broadcast), que são 1000 vezes maiores. Durante um hackathon da empresa, Alexey adicionou os dados do Foursquare à ferramenta. Algumas das nossas visualizações favoritas estão logo abaixo para você apreciar.
Última modificação em 23 de julho de 2026