Foursquare は OS Places へのアクセス方法を変更しました。このガイドの以前のバージョンでは、パブリック S3 バケット内の日付で固定されたファイルをクエリしていましたが、現在は Places Portal と認証済みの Iceberg カタログを使用してアクセスします。詳細については、Foursquare’s OS Places access documentation
を参照してください。
始める前に
- Foursquare Places Portal のアカウント
- OS Places データセットの Access Data タブで作成したアクセストークン
Foursquareカタログに接続する
<YOUR_ACCESS_TOKEN> をご自身のトークンに置き換えます。
Query
places_os テーブルは日付固定の Parquet リリースではなく、Foursquare’s の最新公開リリースを反映するため、行とスキーマは時間の経過とともに変更される可能性があります。したがって、ORDER BY 句のないクエリでは、このガイドに示した応答とは異なるサンプル行が返される場合があります。
接続を確認する
places_os Icebergテーブルから1行をクエリします。
Query
Response
データを探索する
Query
Response
DESCRIBE を使用してテーブルスキーマを確認します:
Query
Response
データをClickHouseに読み込む
clickhouse-server または ClickHouse Cloud にテーブルを作成します。
辞書エンコードされたカラムとマテリアライズドされた Web Mercator
座標を含む MergeTree テーブルを作成します。
Query
LowCardinality データ型を使用しています。
この表現により、SELECT クエリのパフォーマンスを大幅に向上させることができます。
2 つの UInt32 MATERIALIZED カラムである mercator_x と mercator_y は、緯度と
経度を Web メルカトル図法にマッピングします。
これにより、地図をタイルに分割しやすくなります。
longitude + 180は、経度の範囲を [-180, 180] から [0, 360] にシフトします。- 360 で除算すると、値は 0 から 1 の範囲に正規化されます。
- 32 ビット符号なし整数の最大値である
0xFFFFFFFFを乗算すると、正規化された値が 32 ビット整数の全範囲にスケーリングされます。
latitude + 90は、緯度の範囲を [-90, 90] から [0, 180] にシフトします。- 360 で除算して
piを乗算すると、値が三角関数で使用するラジアンに変換されます。 log(tan(...))は、メルカトル図法の基本式を適用します。0xFFFFFFFFを乗算すると、結果が 32 ビット整数の全範囲にスケーリングされます。
MATERIALIZED を指定すると、ClickHouse はデータ挿入時にこれらの値を計算するため、
ソースデータにカラムを含める必要はありません。
テーブルは mortonEncode(mercator_x, mercator_y) によって順序付けられます。これにより、Z オーダーの
空間充填曲線が作成され、空間的な近接性に基づいてデータが整理されます。
minmax インデックスにより、空間フィルタリングをさらに高速化できます。
Query
unresolved_flags を
除外し、座標のない行はマップ上に配置できないため除外します。その他の Nullable なログソース値は、ローカルテーブルでも null のままです。
データを可視化する
これらの可視化が作成されて以降、Foursquare のアクセスモデルは変更されています。
元のインタラクティブな Places ビュー
は現在のアクセスモデルより前のものであり、歴史的な参照用としてリンクされていますが、Places データが
表示されなくなっている可能性があります。以下の画像は歴史的な例として保持されています。