Pular para o conteúdo principal

Pergunta

Como importar GeoJSON com um array de objetos aninhado?

Resposta

Neste tutorial, usaremos dados abertos disponíveis publicamente aqui. Uma cópia pode ser encontrada aqui.
  1. Baixe os dados no formato GeoJSON e renomeie o arquivo para geojson.json.
  2. Entenda a estrutura.
  1. Crie uma tabela para armazenar as linhas de GeoJSON.

O requisito aqui é gerar uma linha para cada objeto no array features. O tipo de dado inferido para o campo geometry sugere que ele corresponde ao MultiPolygon, tipo de dado do ClickHouse.
  1. Prepare os dados.

O principal objetivo da consulta é verificar se obtemos uma linha para cada objeto no array features.
O campo features.geometry.coordinates foi comentado para tornar o conjunto de resultados mais legível.
  1. Insira os dados.

Aqui, obtemos o seguinte erro:
Isso é causado pelo parsing de features.geometry.coordinates.
  1. Vamos verificar seu tipo de dado.

Isso pode ser corrigido convertendo multipolygon.properties.coordinates em Array(Array(Array(Tuple(Float64,Float64)))). Para isso, podemos usar a função arrayMap(func,arr1,…).
  1. Insira os dados.

Conclusão

Trabalhar com JSON pode ser uma tarefa complexa. Este tutorial abordou um cenário em que um array de objetos aninhados pode tornar essa tarefa ainda mais difícil. Para qualquer outra necessidade relacionada a JSON, consulte nossa documentação.
Última modificação em 12 de junho de 2026