Saltar al contenido principal

Pregunta

¿Cómo importo GeoJSON con un array anidado de objetos?

Respuesta

Para este tutorial, usaremos datos abiertos disponibles públicamente aquí. Puede encontrar una copia aquí.
  1. Descargue los datos en formato GeoJSON y cambie el nombre del archivo a geojson.json.
  2. Comprenda la estructura.
  1. Cree una tabla para almacenar las filas de GeoJSON.

Aquí, el requisito es generar una fila para cada object del features array. El tipo de dato inferido para el campo geometry sugiere que corresponde al tipo de dato MultiPolygon de ClickHouse.
  1. Prepare los datos.

El objetivo principal de la consulta es verificar que obtenemos una fila por cada objeto del array features.
El campo features.geometry.coordinates está comentado para que el conjunto de resultados sea más legible.
  1. Inserte los datos.

Aquí aparece el siguiente error:
Esto se debe al análisis de features.geometry.coordinates.
  1. Comprobemos su tipo de dato.

Se puede solucionar convirtiendo multipolygon.properties.coordinates a Array(Array(Array(Tuple(Float64,Float64)))). Para ello, podemos usar la función arrayMap(func,arr1,…).
  1. Inserte los datos.

Conclusión

Trabajar con JSON puede ser una tarea compleja. En este tutorial se abordó un caso en el que un array de objetos anidados podía dificultar aún más esta tarea. Para cualquier otro requisito relacionado con JSON, consulta nuestra documentación.
Última modificación el 3 de julio de 2026