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つの UInt32
の MATERIALIZED
カラム、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 データを追加しました。
いくつかのお気に入りの視覚化を以下に示しますので、お楽しみください。



