Skip to main content
O Foursquare OS Places contém mais de 100 milhões de pontos de interesse (POIs) comerciais, incluindo lojas, restaurantes, parques, áreas de recreação e monumentos. Neste guia, você conectará o ClickHouse ao catálogo Iceberg da Foursquare, explorará o conjunto de dados e o carregará em uma tabela otimizada para consultas geoespaciais. O conjunto de dados está disponível no Foursquare Places Portal e pode ser usado gratuitamente sob a licença Apache 2.0.
A Foursquare atualizou a forma de acessar o OS Places. Versões anteriores deste guia consultavam arquivos fixados por data em um bucket público do S3; agora, o acesso é feito pelo Places Portal e por um catálogo Iceberg autenticado. Consulte a documentação de acesso ao OS Places da Foursquare para mais detalhes.

Antes de começar

Antes de executar as consultas deste guia, você precisa de:

Conecte-se ao catálogo da Foursquare

Mantenha seu token de acesso em sigilo. Inicie o cliente ClickHouse e substitua <YOUR_ACCESS_TOKEN> pelo seu token na consulta a seguir:
Query
O banco de dados do catálogo é somente leitura. A tabela places_os reflete o lançamento atual publicado pela Foursquare, em vez de uma versão do Parquet vinculada a uma data; portanto, suas linhas e seu esquema podem mudar ao longo do tempo. Assim, consultas sem uma cláusula ORDER BY podem retornar linhas de amostra diferentes das respostas mostradas neste guia.

Verifique a conexão

Consulte uma linha da tabela Iceberg places_os:
Query
Response

Explore os dados

A linha de exemplo contém vários campos nulos. Adicione filtros para retornar uma linha mais completa:
Query
Response
Use DESCRIBE para inspecionar o esquema da tabela:
Query
Response

Carregue os dados no ClickHouse

Para armazenar os dados de forma persistente, crie uma tabela no clickhouse-server ou no ClickHouse Cloud. Crie uma tabela MergeTree com colunas codificadas por dicionário e coordenadas Web Mercator materializadas:
Query
Várias colunas usam o tipo de dados LowCardinality, que armazena valores repetidos usando codificação de dicionário. Essa representação pode melhorar significativamente o desempenho de consultas SELECT. As duas colunas UInt32 MATERIALIZED, mercator_x e mercator_y, mapeiam latitude e longitude para a projeção Web Mercator, facilitando a divisão do mapa em tiles:
As expressões calculam os seguintes valores. 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].
  • A divisão por 360 normaliza o valor para o intervalo entre 0 e 1.
  • A multiplicação por 0xFFFFFFFF, o maior inteiro sem sinal de 32 bits, ajusta o 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 o intervalo de latitude de [-90, 90] para [0, 180].
  • A divisão por 360 e a multiplicação por pi convertem o valor em radianos para uso nas funções trigonométricas.
  • log(tan(...)) aplica a fórmula básica da projeção de Mercator.
  • A multiplicação por 0xFFFFFFFF ajusta o resultado para todo o intervalo de inteiros de 32 bits.
Especificar MATERIALIZED faz com que o ClickHouse calcule esses valores quando os dados são inseridos, sem exigir que os dados de origem contenham as colunas. A tabela é ordenada por mortonEncode(mercator_x, mercator_y), que cria uma curva de preenchimento de espaço em ordem Z e organiza os dados por proximidade espacial:
Dois índices minmax aceleram ainda mais a filtragem espacial:
Carregue na tabela o lançamento atual do OS Places:
Esta consulta lê e armazena mais de 100 milhões de linhas. Ela pode levar bastante tempo, consumir armazenamento e gerar custos de uso no ClickHouse Cloud. Executá-la novamente acrescenta os mesmos dados, portanto, verifique se foursquare_mercator está vazia antes de tentar importar novamente.
Query
As listas explícitas de colunas de origem e destino evitam que alterações na ordem das colunas do catálogo desalinhem os valores importados. A consulta exclui unresolved_flags porque ela não é necessária na tabela local e filtra as linhas sem coordenadas, pois elas não podem ser posicionadas no mapa. Outros valores anuláveis da origem permanecem nulos na tabela local.

Visualizando os dados

O modelo de acesso do Foursquare mudou desde que estas visualizações foram criadas. A visualização interativa original de Places é anterior ao modelo de acesso atual e está vinculada como referência histórica, mas pode não exibir mais dados de Places. As imagens abaixo são mantidas como exemplos históricos.
Durante um hackathon da empresa, o cofundador e CTO da ClickHouse, Alexey Milovidov, usou o ClickHouse para criar as seguintes visualizações a partir do conjunto de dados do Foursquare.
Última modificação em 14 de agosto de 2026