セルタワーデータセットを使用したGeoデータ
目標
このガイドでは、次のことを学びます。
- OpenCelliDデータをClickHouseにロードする
- Apache SupersetをClickHouseに接続する
- データセットに基づいてダッシュボードを構築する
以下は、このガイドで作成されたダッシュボードのプレビューです:

データセットを取得する
このデータセットはOpenCelliDからのもので、セルタワーの世界最大のオープンデータベースです。
2021年時点で、世界中のセルタワーに関する4,000万件以上の記録(GSM、LTE、UMTSなど)と、その地理的座標およびメタデータ(国コード、ネットワークなど)を含んでいます。
OpenCelliDプロジェクトは、クリエイティブ・コモンズ・表示-継承 4.0国際ライセンスの下でライセンスされており、同じライセンスの条件に基づいてこのデータセットのスナップショットを再配布しています。データセットの最新バージョンは、サインイン後にダウンロードできます。
- ClickHouse Cloud
- セルフ管理
サンプルデータをロードする
ClickHouse Cloudは、S3からこのデータセットをアップロードするための簡単なボタンを提供します。ClickHouse Cloudの組織にログインするか、ClickHouse.cloudで無料トライアルを作成します。
サービスを選択し、その後 Data sources
-> Predefined sample data
を選択します。

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

cell_towersテーブルのスキーマを確認する
SQLクライアント接続が必要な場合、あなたのClickHouse Cloudサービスには関連するウェブベースのSQLコンソールがあります。詳細については、以下のSQLコンソールに接続を展開してください。
SQLコンソールに接続
あなたのClickHouse Cloudサービスリストから、サービスをクリックします。

これにより、SQLコンソールにリダイレクトされます。

これはDESCRIBE
の出力です。このガイドの後半でフィールドタイプの選択が説明されます。
- テーブルを作成します:
- 公共のS3バケットからデータセットをインポートします(686MB):
いくつかの例のクエリを実行する
- タイプ別のセルタワーの数:
- モバイル国コード(MCC)によるセルタワー:
上記のクエリおよびMCCリストに基づくと、最もセルタワーが多い国はアメリカ、ドイツ、ロシアです。
これらの値をデコードするために、ClickHouse内でDictionaryを作成したいかもしれません。
使用ケース:地理データの統合
pointInPolygon
関数を使用します。
- 多角形を保存するテーブルを作成します:
- ClickHouse Cloud
- セルフ管理
- これはモスクワの大まかな形(「新モスクワ」は含まれていません)です:
- モスクワにあるセルタワーの数を確認します:
スキーマの確認
Supersetで可視化を構築する前に、使用するカラムを確認してください。このデータセットは主に、世界中の移動通信タワーの位置(経度と緯度)と無線タイプを提供します。カラムの説明はコミュニティフォーラムで確認できます。このガイドで使用する可視化におけるカラムは以下に説明されています。
以下はOpenCelliDフォーラムからのカラムの説明です:
カラム | 説明 |
---|---|
radio | テクノロジー世代:CDMA、GSM、UMTS、5G NR |
mcc | モバイル国コード:204 はオランダ |
lon | 経度:緯度と共に、タワーの大まかな位置を示す |
lat | 緯度:経度と共に、タワーの大まかな位置を示す |
あなたのMCCを見つけるには、モバイルネットワークコードを確認し、モバイル国コードカラムの三桁を使用してください。
このテーブルのスキーマは、ディスク上の圧縮ストレージとクエリ速度のために設計されています。
radio
データは文字列ではなくEnum8
(UInt8
)として保存されています。mcc
またはモバイル国コードは範囲が1〜999であることがわかっているため、UInt16
として保存されています。lon
およびlat
はFloat64
です。
他のフィールドはこのガイドでのクエリや可視化には使用されていませんが、興味がある場合は上記のフォーラムで説明されています。
Apache Supersetで可視化を構築する
SupersetはDockerから簡単に実行できます。既にSupersetが実行中の場合は、単にpip install clickhouse-connect
でClickHouse Connectを追加するだけです。Supersetをインストールする必要がある場合は、以下のDockerでApache Supersetを起動を直接開いてください。
DockerでApache Supersetを起動する
Supersetは、Docker Composeを使用してSupersetをローカルにインストールするための手順を提供しています。 GitHubからApache Supersetのリポジトリをチェックアウトした後、最新の開発コードまたは特定のタグを実行できます。 pre-release
としてマークされていない最新のリリースであるリリース2.0.0を推奨します。
docker compose
を実行する前に、いくつかのタスクを行う必要があります:
- 公式のClickHouse Connectドライバーを追加
- Mapbox APIキーを取得し、環境変数として追加(オプション)
- 実行するSupersetのバージョンを指定
以下のコマンドは、GitHubリポジトリのトップレベルであるsuperset
から実行する必要があります。
公式ClickHouse Connectドライバー
ClickHouse ConnectドライバーをSupersetのデプロイメントで利用可能にするため、ローカルのrequirementsファイルに追加します:
Mapbox
これはオプションですが、Mapbox APIキーなしでSupersetに位置データをプロットできますが、キーを追加する必要があるというメッセージが表示され、地図の背景画像が欠落します(データポイントのみが表示され、地図の背景は表示されません)。使用したい場合は、Mapboxは無料プランを提供しています。
ガイドで作成するいくつかのサンプルビジュアライゼーションでは、緯度や経度などの位置データを使用します。SupersetはMapboxマップをサポートしています。Mapboxのビジュアライゼーションを使用するには、Mapbox APIキーが必要です。 Mapboxの無料プランにサインアップし、APIキーを生成します。
APIキーをSupersetに利用可能にします:
Supersetバージョン2.0.0をデプロイ
リリース2.0.0をデプロイするには、次のコマンドを実行します:
OpenCelliDデータセットを使用してSupersetダッシュボードを構築するには:
- ClickHouseサービスをSupersetのデータベースとして追加します
- cell_towersテーブルをSupersetのデータセットとして追加します
- チャートを作成します
- チャートをダッシュボードに追加します
ClickHouseサービスをSupersetデータベースとして追加する
To connect to ClickHouse with HTTP(S) you need this information:
-
The HOST and PORT: typically, the port is 8443 when using TLS or 8123 when not using TLS.
-
The DATABASE NAME: out of the box, there is a database named
default
, use the name of the database that you want to connect to. -
The 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 the service that you will connect to and click Connect:

Choose HTTPS, and the details are available in an example curl
command.

If you are using self-managed ClickHouse, the connection details are set by your ClickHouse administrator.
以下は、ClickHouseにHTTP(S)で接続するために必要な情報です:
-
HOSTとPORT: 通常、TLSを使用する場合はポートが8443、使用しない場合は8123です。
-
DATABASE NAME: デフォルトでは、
default
という名前のデータベースがあります。接続したいデータベースの名前を使用します。 -
USERNAMEとPASSWORD: デフォルトでは、ユーザー名は
default
です。使用ケースに適したユーザー名を使用します。
ClickHouse Cloudサービスの詳細は、ClickHouse Cloudコンソールで確認できます。 接続するサービスを選択し、Connectをクリックしてください:

HTTPSを選択すると、詳細はexample curl
コマンドで確認できます。

セルフマネージドのClickHouseを使用している場合は、接続の詳細がClickHouse管理者によって設定されます。
Supersetでは、データベースタイプを選択して接続詳細を提供することでデータベースを追加できます。Supersetを開き、+を探してください。これはデータメニューとデータベースに接続オプションを持っています。

ClickHouse Connectをリストから選択します:

ClickHouse Connectが選択肢にない場合は、インストールする必要があります。コマンドはpip install clickhouse-connect
で、詳細情報はこちらにあります。
接続詳細を追加する
ClickHouse CloudやSSL使用を強制する他のClickHouseシステムに接続する場合は、SSLをオンに設定してください。

cell_towersテーブルをSupersetのデータセットとして追加する
Supersetでは、データセットはデータベース内のテーブルにマッピングされます。データセットを追加するをクリックし、ClickHouseサービスを選択し、テーブルが含まれるデータベース(default
)を選択し、cell_towers
テーブルを選びます:

チャートを作成する
Supersetでチャートを追加することを選択すると、データセット(cell_towers
)とチャートタイプを指定する必要があります。OpenCelliDデータセットはセルタワーの経度と緯度の座標を提供するため、地図チャートを作成します。deck.gl散布図タイプは、このデータセットに適しており、マップ上の密なデータポイントによく機能します。

地図のために使用されるクエリを指定する
deck.gl散布図では経度と緯度が必要で、クエリに1つ以上のフィルタを適用することもできます。この例では、UMTSラジオを持つセルタワー用のフィルタと、オランダに割り当てられたモバイル国コード用のフィルタの2つが適用されています。
フィールドlon
とlat
には、経度と緯度が含まれています:

フィルタをmcc
= 204
で追加します(または他のmcc
値に置き換えます):

フィルタをradio
= 'UMTS'
で追加します(または他のradio
値に置き換えます。選択肢はDESCRIBE TABLE cell_towers
の出力で確認できます):

これは、radio = 'UMTS'
およびmcc = 204
でフィルタリングされたチャートの完全な設定です:

UPDATE CHARTをクリックして、可視化をレンダリングします。
チャートをダッシュボードに追加する
このスクリーンショットは、LTE、UMTS、およびGSMラジオを持つセルタワーの位置を示しています。すべてのチャートは同じ方法で作成され、ダッシュボードに追加されます。

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