メインコンテンツまでスキップ
メインコンテンツまでスキップ

Foursquare places

Dataset

このデータセットは Foursquare によって提供されており、ダウンロードが可能で、Apache 2.0 ライセンスの下で無料で使用できます。

このデータセットには、店舗、レストラン、公園、遊び場、記念碑など、商業的な観光地(POI)の1億件以上のレコードが含まれています。また、カテゴリやソーシャルメディア情報など、これらの場所に関する追加のメタデータも含まれています。

Data exploration

データを探索するために、clickhouse-localという小さなコマンドラインツールを使用します。このツールは、完全な ClickHouse エンジンを提供しますが、ClickHouse Cloud、clickhouse-client、または chDB を使用することもできます。

データが保存されている S3 バケットからデータを選択するには、次のクエリを実行します:

多くのフィールドが ᴺᵁᴸᴸ になっているため、より使いやすいデータを取得するために、クエリに追加条件を追加できます:

データの自動推定スキーマを表示するには、次のクエリを使用して DESCRIBE を実行します:

Loading the data into ClickHouse

ディスク上にデータを永続化したい場合は、clickhouse-server または ClickHouse Cloud を使用できます。

テーブルを作成するには、次のコマンドを実行してください:

いくつかのカラムに対して LowCardinality データ型を使用していることに注意してください。このデータ型は、データ型の内部表現を辞書エンコードに変更します。辞書エンコードされたデータを操作することで、多くのアプリケーションにおいて SELECT クエリのパフォーマンスが大幅に向上します。

さらに、2つの UInt32MATERIALIZED カラム、mercator_x および mercator_y が作成され、緯度/経度座標をWeb Mercator プロジェクションにマッピングすることで、地図をタイルに簡単にセグメント化します:

上記の各カラムで何が起こっているのかを分解してみましょう。

mercator_x

このカラムは、経度の値を Mercator プロジェクションの X 座標に変換します:

  • longitude + 180 は経度の範囲を [-180, 180] から [0, 360] にシフトします
  • 360 で割ることにより、0 と 1 の間の値に正規化されます
  • 0xFFFFFFFF(最大32ビット符号なし整数の16進数)を掛けることで、この正規化された値を32ビット整数の全範囲にスケールします

mercator_y

このカラムは、緯度の値を Mercator プロジェクションの Y 座標に変換します:

  • latitude + 90 は緯度を [-90, 90] から [0, 180] にシフトします
  • 360 で割って pi() を掛けることで、三角関数のためにラジアンに変換します
  • log(tan(...)) 部分が Mercator プロジェクションの公式のコアです
  • 0xFFFFFFFF を掛けることで、32ビット整数の全範囲にスケールします

MATERIALIZED を指定すると、ClickHouse はデータを INSERT する際にこれらのカラムの値を計算し、INSERT ステートメントではこれらのカラムを指定する必要がありません(これらは元のデータスキーマの一部ではありません)。

テーブルは mortonEncode(mercator_x, mercator_y) によってオーダーされており、これにより mercator_x, mercator_y の Z-オーダー空間充填曲線が生成され、地理空間クエリのパフォーマンスが大幅に向上します。この Z-オーダー曲線のオーダリングにより、データが物理的に空間的近接性に基づいて整理されます:

より高速な検索のために、2つの minmax インデックスも作成されます:

ご覧の通り、ClickHouse はリアルタイムマッピングアプリケーションに必要なすべてを提供しています!

データをロードするには、次のクエリを実行します:

Visualizing the data

このデータセットで可能なことを確認するには、adsb.exposedをチェックしてください。adsb.exposed は、共同創設者で CTO の Alexey Milovidov が ADS-B(自動依存監視 - ブロードキャスト)フライトデータを視覚化するために最初に構築したもので、これのデータは1000倍の大きさです。会社のハッカソンで、Alexey はこのツールに Foursquare データを追加しました。

いくつかのお気に入りの視覚化を以下に示しますので、お楽しみください。