基地局データセットを用いたジオデータ
目標
このガイドでは次のことを学びます。
- OpenCelliD データを ClickHouse に読み込む方法
- Apache Superset を ClickHouse に接続する方法
- データセットに含まれるデータに基づいてダッシュボードを構築する方法
以下は、このガイドで作成するダッシュボードのプレビューです。

データセットを取得する
このデータセットは OpenCelliD 由来で、世界最大の基地局オープンデータベースです。
2021 年時点で、世界中の基地局(GSM、LTE、UMTS など)について、位置情報(緯度・経度)やメタデータ(国コード、ネットワークなど)を含む 4,000 万件以上のレコードが含まれています。
OpenCelliD プロジェクトは Creative Commons Attribution-ShareAlike 4.0 International License の下でライセンスされており、当ガイドでは同一ライセンス条件に基づき、このデータセットのスナップショットを再配布します。最新版のデータセットは、サインイン後にダウンロードできます。
- ClickHouse Cloud
- セルフマネージド
サンプルデータをロードする
ClickHouse Cloud は、このデータセットを S3 から取り込むための簡単な方法を提供します。ClickHouse Cloud の組織にログインするか、ClickHouse.cloud で無料トライアルを作成してください。
Select your service, followed by Data sources -> Predefined sample data.

Sample data タブから Cell Towers データセットを選択し、Load data をクリックします:

cell_towers テーブルのスキーマを確認する
If you need a SQL client connection, your ClickHouse Cloud service has an associated web based SQL console; expand Connect to SQL console below for details.
Connect to SQL console
From your ClickHouse Cloud services list, click on a service.

This will redirect you to the SQL console.

これは DESCRIBE の出力です。このガイドの後半で、各フィールド型の選択について説明します。
- テーブルを作成します:
- パブリックな S3 バケット(686 MB)からデータセットをインポートします:
サンプルクエリをいくつか実行する
- 種類別のセルタワー数:
- モバイル国コード (MCC) 別の携帯電話基地局数:
上記のクエリおよび MCC リスト に基づくと、基地局数が最も多い国は米国、ドイツ、ロシアです。
これらの値をデコードするために、ClickHouse で Dictionary を作成することを検討してもよいでしょう。
ユースケース:地理データの活用
pointInPolygon 関数を使用します。
- ポリゴンを保存するテーブルを作成します。
- ClickHouse Cloud
- Self-managed
- これはモスクワの大まかな形状です(「New Moscow」地域を除く)。
- モスクワにある基地局の数を確認する:
スキーマの確認
Superset で可視化を作成する前に、使用するカラムを確認しておきましょう。このデータセットは主に、世界中の携帯電話基地局の位置情報(経度と緯度)と無線方式(radio types)の種類を提供します。カラムの説明は community forum にあります。これから作成する可視化で使用するカラムについては、以下で説明します。
以下は、OpenCelliD フォーラムから引用したカラムの説明です。
| Column | Description |
|---|---|
| radio | 技術世代: CDMA, GSM, UMTS, 5G NR |
| mcc | Mobile Country Code(移動体国コード): 204 はオランダを表す |
| lon | 経度: 緯度と組み合わせて、おおよその基地局位置を示す |
| lat | 緯度: 経度と組み合わせて、おおよその基地局位置を示す |
自分の MCC を確認したい場合は Mobile network codes を参照し、Mobile country code 列の 3 桁の数字を使用します。
このテーブルのスキーマは、ディスク上でのコンパクトな保存とクエリ速度を重視して設計されています。
radioデータは文字列ではなくEnum8(UInt8)として保存されています。mcc(Mobile country code、移動体国コード)は、取りうる範囲が 1 ~ 999 と分かっているためUInt16として保存されています。lonとlatはFloat64です。
その他のフィールドは、このガイド内のクエリや可視化では使用しませんが、興味があれば前述のフォーラムで詳細な説明を参照できます。
Apache Superset で可視化を作成する
Superset は Docker で簡単に実行できます。すでに Superset を実行している場合は、pip install clickhouse-connect で ClickHouse Connect を追加するだけです。Superset のインストールが必要な場合は、直下の Docker で Apache Superset を起動する を参照してください。
Launch Apache Superset in Docker
Superset provides installing Superset locally using Docker Compose instructions. After checking out the Apache Superset repo from GitHub you can run the latest development code, or a specific tag. We recommend release 2.0.0 as it is the latest release not marked as pre-release.
There are a few tasks to be done before running docker compose:
- Add the official ClickHouse Connect driver
- Obtain a Mapbox API key and add that as an environment variable (optional)
- Specify the version of Superset to run
The commands below are to be run from the top level of the GitHub repo, superset.
Official ClickHouse connect driver
To make the ClickHouse Connect driver available in the Superset deployment add it to the local requirements file:
Mapbox
This is optional, you can plot location data in Superset without a Mapbox API key, but you will see a message telling you that you should add a key and the background image of the map will be missing (you will only see the data points and not the map background). Mapbox provides a free tier if you would like to use it.
Some of the sample visualizations that the guides have you create use location, for example longitude and latitude, data. Superset includes support for Mapbox maps. To use the Mapbox visualizations you need a Mapbox API key. Sign up for the Mapbox free tier, and generate an API key.
Make the API key available to Superset:
Deploy Superset version 2.0.0
To deploy release 2.0.0 run:
OpenCelliD データセットを使って Superset ダッシュボードを作成するには、次の手順を実行します。
- ClickHouse サービスを Superset の database として追加する
- テーブル cell_towers を Superset の dataset として追加する
- いくつかの charts を作成する
- それらの charts を dashboard に追加する
Superset データベースとして ClickHouse サービスを追加する
To connect to ClickHouse with HTTP(S) you need this information:
| Parameter(s) | Description |
|---|---|
HOST and PORT | Typically, the port is 8443 when using TLS or 8123 when not using TLS. |
DATABASE NAME | Out of the box, there is a database named default, use the name of the database that you want to connect to. |
USERNAME and PASSWORD | Out of the box, the username is default. Use the username appropriate for your use case. |
The details for your ClickHouse Cloud service are available in the ClickHouse Cloud console. Select a service and click Connect:

Choose HTTPS. Connection details are displayed in an example curl command.

If you are using self-managed ClickHouse, the connection details are set by your ClickHouse administrator.
Superset では、データベース種別を選択し、その後に接続情報を入力することでデータベースを追加できます。Superset を開き、+ を探してください。表示されるメニューから Data を選択し、続いて Connect database を選択します。

一覧から ClickHouse Connect を選択します:

ClickHouse Connect が選択肢として表示されない場合は、インストールが必要です。コマンドは pip install clickhouse-connect です。詳細はこちらを参照してください。
接続情報の追加
ClickHouse Cloud や、SSL の使用を必須としているその他の ClickHouse システムに接続する場合は、必ず SSL を有効にしてください。

Superset の データセット としてテーブル cell_towers を追加する
Superset では、データセット はデータベース内のテーブルに対応します。[データセットの追加]をクリックし、ClickHouse サービスとテーブルを含むデータベース(default)を選択し、cell_towers テーブルを選びます。

いくつかのチャートを作成する
Superset でチャートを追加するには、データセット(cell_towers)とチャートの種類を指定する必要があります。OpenCelliD データセットには基地局の経度・緯度座標が含まれているため、ここではマップチャートを作成します。deck.gL Scatterplot タイプは、マップ上に密集して配置されたデータポイントを扱うこのデータセットに適しています。

マップで使用するクエリを指定する
deck.gl の Scatterplot では経度と緯度が必要であり、さらに 1 つ以上のフィルターをクエリに適用できます。この例では 2 つのフィルターを適用しており、1 つは UMTS 無線を持つ基地局向け、もう 1 つはオランダに割り当てられているモバイル・カントリー・コード(Mobile Country Code)に対するフィルターです。
フィールド lon と lat に経度と緯度が含まれます:

mcc = 204 となるフィルターを追加します(別の mcc 値でもかまいません):

radio = 'UMTS' となるフィルターを追加します(別の radio 値でもかまいません。DESCRIBE TABLE cell_towers の出力で選択肢を確認できます):

これは radio = 'UMTS' および mcc = 204 でフィルターするチャートの全体的な設定です:

UPDATE CHART をクリックしてチャートを更新し、可視化を表示します。
チャートを ダッシュボード に追加する
このスクリーンショットは、LTE、UMTS、GSM の各無線方式に対応した携帯電話基地局の位置を示しています。チャートはすべて同じ手順で作成し、ダッシュボードに追加します。

このデータは、Playground で対話的にクエリを実行することもできます。
このサンプルでは、ユーザー名やクエリも自動で入力されます。
Playground ではテーブルを作成できませんが、すべてのクエリを実行でき、さらに Superset も利用できます(ホスト名とポート番号を調整してください)。