データセット
データの探索
clickhouse-local を使用します。これは ClickHouse engine の全機能を利用できますが、ClickHouse Cloud、clickhouse-client、あるいは chDB を使用することもできます。
データが保存されている S3 バケットからデータを取得するには、次のクエリを実行します。
Query
Response
ᴺᵁᴸᴸ になっていることがわかるので、クエリに追加の条件を
加えて、より使いやすいデータを取得できます。
Query
DESCRIBE を使用してデータから自動的に推論されたスキーマを確認します:
Query
Response
データを ClickHouse に読み込む
clickhouse-server
または ClickHouse Cloud を使用できます。
テーブルを作成するには、次のコマンドを実行します。
Query
LowCardinality
データ型が複数のカラムで使用されている点に注目してください。これにより、これらのデータ型の内部表現は
辞書エンコード形式に変わります。辞書エンコードされたデータを扱うことで、多くのアプリケーションで SELECT クエリの性能が
大幅に向上します。
さらに、2 つの UInt32 MATERIALIZED カラム mercator_x と mercator_y が作成されます。
これらは、地図をタイルに分割しやすくするために、緯度・経度の座標を Web Mercator projection
にマッピングするものです:
longitude + 180は、経度の範囲を [-180, 180] から [0, 360] にシフトします- 360 で割ることで、これを 0 から 1 の間の値に正規化します
0xFFFFFFFF(32 ビット符号なし整数の最大値を表す 16 進数) を掛けることで、この正規化された値を 32 ビット整数の全範囲にスケーリングします
latitude + 90は、緯度の範囲を [-90, 90] から [0, 180] にシフトします- 360 で割ってから pi() を掛けることで、三角関数で使うラジアンに変換します
log(tan(...))の部分が、メルカトル図法の数式の中核です0xFFFFFFFFを掛けることで、32 ビット整数の全範囲にスケーリングします
MATERIALIZED を指定すると、ClickHouse はデータを INSERT するときにこれらの
カラムの値を計算します。これにより、元のデータスキーマに含まれていないこれらのカラムを
`INSERTステートメントで指定する必要がなくなります。
このテーブルは mortonEncode(mercator_x, mercator_y) で順序付けされており、
これによって mercator_x と mercator_y の Z オーダー空間充填曲線が生成され、
地理空間クエリのクエリパフォーマンスが大幅に向上します。この Z オーダー曲線による並び順により、
データは空間的な近接性に基づいて物理的に配置されます。
minmax インデックスも 2 つ作成されます。