メインコンテンツへスキップ

質問

ネストされたオブジェクト配列を含むGeoJSONをインポートするにはどうすればよいですか?

回答

このチュートリアルでは、こちらで公開されているオープンデータを使用します。コピーはこちらから入手できます。
  1. データをGeoJSONフォーマットでダウンロードし、ファイル名をgeojson.jsonに変更します。
  2. 構造を確認します。
  1. GeoJSONの行を格納するテーブルを作成します。

ここで必要なのは、features 配列 内の各 オブジェクト ごとに1つの行を生成することです。 フィールド geometry に対して推論されたデータ型から、これが ClickHouse の MultiPolygon データ型 に相当することがわかります。
  1. データを準備します。

このクエリの主な目的は、features 配列内のオブジェクトごとに 1 が取得されることを確認することです。
結果セットを見やすくするため、フィールド features.geometry.coordinates はコメントアウトしています。
  1. データを挿入します。

ここで、次のエラーが発生します。
これは、features.geometry.coordinates がパースされるためです。
  1. そのデータ型を確認しましょう。

multipolygon.properties.coordinatesArray(Array(Array(Tuple(Float64,Float64)))) にキャストすることで修正できます。 これを行うには、関数 arrayMap(func,arr1,…) を使用できます。
  1. データを挿入します。

結論

JSON の処理は複雑になりがちです。このチュートリアルでは、ネストされたオブジェクト配列によって、この作業がさらに難しくなるケースを取り上げました。 JSON に関するその他の要件については、ドキュメント を参照してください。
最終更新日 2026年7月3日