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
- Uma conta no Foursquare Places Portal
- Um token de acesso criado na aba Access Data do conjunto de dados OS Places
Conecte-se ao catálogo da Foursquare
<YOUR_ACCESS_TOKEN> pelo seu token na consulta a seguir:
Query
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
places_os:
Query
Response
Explore os dados
Query
Response
DESCRIBE para inspecionar o esquema da tabela:
Query
Response
Carregue os dados no ClickHouse
clickhouse-server ou no ClickHouse Cloud.
Crie uma tabela MergeTree com colunas codificadas por dicionário e coordenadas Web Mercator
materializadas:
Query
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:
longitude + 180desloca 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.
latitude + 90desloca o intervalo de latitude de [-90, 90] para [0, 180].- A divisão por 360 e a multiplicação por
piconvertem 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
0xFFFFFFFFajusta o resultado para todo o intervalo de inteiros de 32 bits.
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:
minmax aceleram ainda mais a filtragem espacial:
Query
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.