メインコンテンツへスキップ

目標

このガイドでは、次のことを学びます。
  • OpenCelliD のデータを ClickHouse に読み込む
  • Apache Superset を ClickHouse に接続する
  • データセット内のデータを基にダッシュボードを作成する
以下は、このガイドで作成するダッシュボードのプレビューです。

データセットを取得する

このデータセットは OpenCelliD のもので、世界最大の基地局オープンデータベースです。 2021年時点で、世界中の基地局 (GSM、LTE、UMTS など) に関する 4,000 万件を超えるレコードが、地理座標とメタデータ (国コード、ネットワークなど) とともに含まれています。 OpenCelliD Project は Creative Commons Attribution-ShareAlike 4.0 International License の下で提供されており、当社もこのデータセットのスナップショットを同じライセンス条件で再配布しています。最新バージョンのデータセットは、サインイン後にダウンロードできます。

サンプルデータを読み込む

ClickHouse Cloud では、このデータセットを S3 から簡単にアップロードできます。ClickHouse Cloud の組織にログインするか、ClickHouse.cloud で無料トライアルを開始してください。サービスを選択し、Data sources -> Predefined sample data の順にクリックします。Sample data タブで Cell Towers データセットを選択し、Load data をクリックします。

cell_towers テーブルのスキーマを確認する

DESCRIBE TABLE cell_towers
SQL コンソールSQL クライアント接続が必要な場合は、ClickHouse Cloud サービスに関連付けられた Web ベースの SQL コンソールを利用できます。詳細は、以下の SQL コンソールに接続 を展開してご確認ください。
ClickHouse Cloud サービスの一覧から、サービスをクリックします。SQL コンソールにリダイレクトされます。
これは DESCRIBE の出力です。各フィールド型の選択理由については、このガイドの後半で説明します。
┌─name──────────┬─type──────────────────────────────────────────────────────────────────┬
│ radio         │ Enum8('' = 0, 'CDMA' = 1, 'GSM' = 2, 'LTE' = 3, 'NR' = 4, 'UMTS' = 5) │
│ mcc           │ UInt16                                                                │
│ net           │ UInt16                                                                │
│ area          │ UInt16                                                                │
│ cell          │ UInt64                                                                │
│ unit          │ Int16                                                                 │
│ lon           │ Float64                                                               │
│ lat           │ Float64                                                               │
│ range         │ UInt32                                                                │
│ samples       │ UInt32                                                                │
│ changeable    │ UInt8                                                                 │
│ created       │ DateTime                                                              │
│ updated       │ DateTime                                                              │
│ averageSignal │ UInt8                                                                 │
└───────────────┴───────────────────────────────────────────────────────────────────────┴

クエリ例をいくつか実行する

  1. タイプ別の基地局数:
SELECT radio, count() AS c FROM cell_towers GROUP BY radio ORDER BY c DESC
┌─radio─┬────────c─┐
│ UMTS  │ 20686487 │
│ LTE   │ 12101148 │
│ GSM   │  9931304 │
│ CDMA  │   556344 │
│ NR    │      867 │
└───────┴──────────┘

5 rows in set. Elapsed: 0.011 sec. Processed 43.28 million rows, 43.28 MB (3.83 billion rows/s., 3.83 GB/s.)
  1. 移動体国コード (MCC) ごとの基地局:
SELECT mcc, count() FROM cell_towers GROUP BY mcc ORDER BY count() DESC LIMIT 10
┌─mcc─┬─count()─┐
│ 310 │ 5024650 │
│ 262 │ 2622423 │
│ 250 │ 1953176 │
│ 208 │ 1891187 │
│ 724 │ 1836150 │
│ 404 │ 1729151 │
│ 234 │ 1618924 │
│ 510 │ 1353998 │
│ 440 │ 1343355 │
│ 311 │ 1332798 │
└─────┴─────────┘

10 rows in set. Elapsed: 0.019 sec. Processed 43.28 million rows, 86.55 MB (2.33 billion rows/s., 4.65 GB/s.)
上記のクエリとMCC listに基づくと、基地局の数が最も多い国は、米国、ドイツ、ロシアです。 これらの値を変換するために、ClickHouse で Dictionary を作成するとよいでしょう。

ユースケース: Geo data を取り込む

pointInPolygon 関数を使用します。
  1. Polygon を保存するテーブルを作成します。
CREATE TABLE moscow (polygon Array(Tuple(Float64, Float64)))
ORDER BY polygon;
  1. これはモスクワ (「新モスクワ」を除く) の大まかな形状です。
INSERT INTO moscow VALUES ([(37.84172564285271, 55.78000432402266),
(37.8381207618713, 55.775874525970494), (37.83979446823122, 55.775626746008065), (37.84243326983639, 55.77446586811748), (37.84262672750849, 55.771974101091104), (37.84153238623039, 55.77114545193181), (37.841124690460184, 55.76722010265554),
(37.84239076983644, 55.76654891107098), (37.842283558197025, 55.76258709833121), (37.8421759312134, 55.758073999993734), (37.84198330422974, 55.75381499999371), (37.8416827275085, 55.749277102484484), (37.84157576190186, 55.74794544108413),
(37.83897929098507, 55.74525257875241), (37.83739676451868, 55.74404373042019), (37.838732481460525, 55.74298009816793), (37.841183997352545, 55.743060321833575), (37.84097476190185, 55.73938799999373), (37.84048155819702, 55.73570799999372),
(37.840095812164286, 55.73228210777237), (37.83983814285274, 55.73080491981639), (37.83846476321406, 55.729799917464675), (37.83835745269769, 55.72919751082619), (37.838636380279524, 55.72859509486539), (37.8395161005249, 55.727705075632784),
(37.83897964285276, 55.722727886185154), (37.83862557539366, 55.72034817326636), (37.83559735744853, 55.71944437307499), (37.835370708803126, 55.71831419154461), (37.83738169402022, 55.71765218986692), (37.83823396494291, 55.71691750159089),
(37.838056931213345, 55.71547311301385), (37.836812846557606, 55.71221445615604), (37.83522525396725, 55.709331054395555), (37.83269301586908, 55.70953687463627), (37.829667367706236, 55.70903403789297), (37.83311126588435, 55.70552351822608),
(37.83058993121339, 55.70041317726053), (37.82983872750851, 55.69883771404813), (37.82934501586913, 55.69718947487017), (37.828926414016685, 55.69504441658371), (37.82876530422971, 55.69287499999378), (37.82894754100031, 55.690759754047335),
(37.827697554878185, 55.68951421135665), (37.82447346292115, 55.68965045405069), (37.83136543914793, 55.68322046195302), (37.833554015869154, 55.67814012759211), (37.83544184655761, 55.67295011628339), (37.837480388885474, 55.6672498719639),
(37.838960677246064, 55.66316274139358), (37.83926093121332, 55.66046999999383), (37.839025050262435, 55.65869897264431), (37.83670784390257, 55.65794084879904), (37.835656529083245, 55.65694309303843), (37.83704060449217, 55.65689306460552),
(37.83696819873806, 55.65550363526252), (37.83760389616388, 55.65487847246661), (37.83687972750851, 55.65356745541324), (37.83515216004943, 55.65155951234079), (37.83312418518067, 55.64979413590619), (37.82801726983639, 55.64640836412121),
(37.820614174591, 55.64164525405531), (37.818908190475426, 55.6421883258084), (37.81717543386075, 55.64112490388471), (37.81690987037274, 55.63916106913107), (37.815099354492155, 55.637925371757085), (37.808769150787356, 55.633798276884455),
(37.80100123544311, 55.62873670012244), (37.79598013491824, 55.62554336109055), (37.78634567724606, 55.62033499605651), (37.78334147619623, 55.618768681480326), (37.77746201055901, 55.619855533402706), (37.77527329626457, 55.61909966711279),
(37.77801986242668, 55.618770300976294), (37.778212973541216, 55.617257701952106), (37.77784818518065, 55.61574504433011), (37.77016867724609, 55.61148576294007), (37.760191219573976, 55.60599579539028), (37.75338926983641, 55.60227892751446),
(37.746329965606634, 55.59920577639331), (37.73939925396728, 55.59631430313617), (37.73273665739439, 55.5935318803559), (37.7299954450912, 55.59350760316188), (37.7268679946899, 55.59469840523759), (37.72626726983634, 55.59229549697373),
(37.7262673598022, 55.59081598950582), (37.71897193121335, 55.5877595845419), (37.70871550793456, 55.58393177431724), (37.700497489410374, 55.580917323756644), (37.69204305026244, 55.57778089778455), (37.68544477378839, 55.57815154690915),
(37.68391050793454, 55.57472945079756), (37.678803592590306, 55.57328235936491), (37.6743402539673, 55.57255251445782), (37.66813862698363, 55.57216388774464), (37.617927457672096, 55.57505691895805), (37.60443099999999, 55.5757737568051),
(37.599683515869145, 55.57749105910326), (37.59754177842709, 55.57796291823627), (37.59625834786988, 55.57906686095235), (37.59501783265684, 55.57746616444403), (37.593090671936025, 55.57671634534502), (37.587018007904, 55.577944600233785),
(37.578692203704804, 55.57982895000019), (37.57327546607398, 55.58116294118248), (37.57385012109279, 55.581550362779), (37.57399562266922, 55.5820107079112), (37.5735356072979, 55.58226289171689), (37.57290393054962, 55.582393529795155),
(37.57037722355653, 55.581919415056234), (37.5592298306885, 55.584471614867844), (37.54189249206543, 55.58867650795186), (37.5297256269836, 55.59158133551745), (37.517837865081766, 55.59443656218868), (37.51200186508174, 55.59635625174229),
(37.506808949737554, 55.59907823904434), (37.49820432275389, 55.6062944994944), (37.494406071441674, 55.60967103463367), (37.494760001358024, 55.61066689753365), (37.49397137107085, 55.61220931698269), (37.49016528606031, 55.613417718449064),
(37.48773249206542, 55.61530616333343), (37.47921386508177, 55.622640129112334), (37.470652153442394, 55.62993723476164), (37.46273446298218, 55.6368075123157), (37.46350692265317, 55.64068225239439), (37.46050283203121, 55.640794546982576),
(37.457627470916734, 55.64118904154646), (37.450718034393326, 55.64690488145138), (37.44239252645875, 55.65397824729769), (37.434587576721185, 55.66053543155961), (37.43582144975277, 55.661693766520735), (37.43576786245721, 55.662755031737014),
(37.430982915344174, 55.664610641628116), (37.428547447097685, 55.66778515273695), (37.42945134592044, 55.668633314343566), (37.42859571562949, 55.66948145750025), (37.4262836402282, 55.670813882451405), (37.418709037048295, 55.6811141674414),
(37.41922139651101, 55.68235377885389), (37.419218771842885, 55.68359335082235), (37.417196501327446, 55.684375235224735), (37.41607020370478, 55.68540557585352), (37.415640857147146, 55.68686637150793), (37.414632153442334, 55.68903015131686),
(37.413344899475064, 55.690896881757396), (37.41171432275391, 55.69264232162232), (37.40948282275393, 55.69455101638112), (37.40703674603271, 55.69638690385348), (37.39607169577025, 55.70451821283731), (37.38952706878662, 55.70942491932811),
(37.387778313491815, 55.71149057784176), (37.39049275399779, 55.71419814298992), (37.385557272491454, 55.7155489617061), (37.38388335714726, 55.71849856042102), (37.378368238098155, 55.7292763261685), (37.37763597123337, 55.730845879211614),
(37.37890062088197, 55.73167906388319), (37.37750451918789, 55.734703664681774), (37.375610832015965, 55.734851959522246), (37.3723813571472, 55.74105626086403), (37.37014935714723, 55.746115620904355), (37.36944173016362, 55.750883999993725),
(37.36975304365541, 55.76335905525834), (37.37244070571134, 55.76432079697595), (37.3724259757175, 55.76636979670426), (37.369922155757884, 55.76735417953104), (37.369892695770275, 55.76823419316575), (37.370214730163575, 55.782312184391266),
(37.370493611114505, 55.78436801120489), (37.37120164550783, 55.78596427165359), (37.37284851456452, 55.7874378183096), (37.37608325135799, 55.7886695054807), (37.3764587460632, 55.78947647305964), (37.37530000265506, 55.79146512926804),
(37.38235915344241, 55.79899647809345), (37.384344043655396, 55.80113596939471), (37.38594269577028, 55.80322699999366), (37.38711208598329, 55.804919036911976), (37.3880239841309, 55.806610999993666), (37.38928977249147, 55.81001864976979),
(37.39038389947512, 55.81348641242801), (37.39235781481933, 55.81983538336746), (37.393709457672124, 55.82417822811877), (37.394685720901464, 55.82792275755836), (37.39557615344238, 55.830447148154136), (37.39844478226658, 55.83167107969975),
(37.40019761214057, 55.83151823557964), (37.400398790382326, 55.83264967594742), (37.39659544313046, 55.83322180909622), (37.39667059524539, 55.83402792148566), (37.39682089947515, 55.83638877400216), (37.39643489154053, 55.83861656112751),
(37.3955338994751, 55.84072348043264), (37.392680272491454, 55.84502158126453), (37.39241188227847, 55.84659117913199), (37.392529730163616, 55.84816071336481), (37.39486835714723, 55.85288092980303), (37.39873052645878, 55.859893456073635),
(37.40272161111449, 55.86441833633205), (37.40697072750854, 55.867579567544375), (37.410007082016016, 55.868369880337), (37.4120992989502, 55.86920843741314), (37.412668021163924, 55.87055369615854), (37.41482461111453, 55.87170587948249),
(37.41862266137694, 55.873183961039565), (37.42413732540892, 55.874879126654704), (37.4312182698669, 55.875614937236705), (37.43111093783558, 55.8762723478417), (37.43332105622856, 55.87706546369396), (37.43385747619623, 55.87790681284802),
(37.441303050262405, 55.88027084462084), (37.44747234260555, 55.87942070143253), (37.44716141796871, 55.88072960917233), (37.44769797085568, 55.88121221323979), (37.45204320500181, 55.882080694420715), (37.45673176190186, 55.882346110794586),
(37.463383999999984, 55.88252729504517), (37.46682797486874, 55.88294937719063), (37.470014457672086, 55.88361266759345), (37.47751410450743, 55.88546991372396), (37.47860317658232, 55.88534929207307), (37.48165826025772, 55.882563306475106),
(37.48316434442331, 55.8815803226785), (37.483831555817645, 55.882427612793315), (37.483182967125686, 55.88372791409729), (37.483092277908824, 55.88495581062434), (37.4855716508179, 55.8875561994203), (37.486440636245746, 55.887827444039566),
(37.49014203439328, 55.88897899871799), (37.493210285705544, 55.890208937135604), (37.497512451065035, 55.891342397444696), (37.49780744510645, 55.89174030252967), (37.49940333499519, 55.89239745507079), (37.50018383334346, 55.89339220941865),
(37.52421672750851, 55.903869074155224), (37.52977457672118, 55.90564076517974), (37.53503220370484, 55.90661661218259), (37.54042858064267, 55.90714113744566), (37.54320461007303, 55.905645048442985), (37.545686966066306, 55.906608607018505),
(37.54743976120755, 55.90788552162358), (37.55796999999999, 55.90901557907218), (37.572711542327866, 55.91059395704873), (37.57942799999998, 55.91073854155573), (37.58502865872187, 55.91009969268444), (37.58739968913264, 55.90794809960554),
(37.59131567193598, 55.908713267595054), (37.612687423278814, 55.902866854295375), (37.62348079629517, 55.90041967242986), (37.635797880950896, 55.898141151686396), (37.649487626983664, 55.89639275532968), (37.65619302513125, 55.89572360207488),
(37.66294133862307, 55.895295577183965), (37.66874564418033, 55.89505457604897), (37.67375601586915, 55.89254677027454), (37.67744661901856, 55.8947775867987), (37.688347, 55.89450045676125), (37.69480554232789, 55.89422926332761),
(37.70107096560668, 55.89322256101114), (37.705962965606716, 55.891763491662616), (37.711885134918205, 55.889110234998974), (37.71682005026245, 55.886577568759876), (37.7199315476074, 55.88458159806678), (37.72234560316464, 55.882281005794134),
(37.72364385977171, 55.8809452036196), (37.725371142837474, 55.8809722706006), (37.727870902099546, 55.88037213862385), (37.73394330422971, 55.877941504088696), (37.745339592590376, 55.87208120378722), (37.75525267724611, 55.86703807949492),
(37.76919976190188, 55.859821640197474), (37.827835219574, 55.82962968399116), (37.83341438888553, 55.82575289922351), (37.83652584655761, 55.82188784027888), (37.83809213491821, 55.81612575504693), (37.83605359521481, 55.81460347077685),
(37.83632178569025, 55.81276696067908), (37.838623105812026, 55.811486181656385), (37.83912198147584, 55.807329380532785), (37.839079078033414, 55.80510270463816), (37.83965844708251, 55.79940712529036), (37.840581150787344, 55.79131399999368),
(37.84172564285271, 55.78000432402266)]);
  1. モスクワにある基地局の数を確認します:
SELECT count() FROM cell_towers
WHERE pointInPolygon((lon, lat), (SELECT * FROM moscow))
┌─count()─┐
│  310463 │
└─────────┘

1 rows in set. Elapsed: 0.067 sec. Processed 43.28 million rows, 692.42 MB (645.83 million rows/s., 10.33 GB/s.)

スキーマの確認

Superset で可視化を作成する前に、使用するカラムを確認してください。このデータセットには主に、世界中の携帯電話基地局の位置情報 (経度と緯度) と無線方式が含まれています。カラムの説明はコミュニティフォーラムで確認できます。ここでは、これから作成する可視化で使用するカラムについて説明します。 以下は、OpenCelliD フォーラムから引用したカラムの説明です。
ColumnDescription
radio通信方式: CDMA、GSM、UMTS、5G NR
mccモバイル国コード: 204 はオランダ
lon経度: 緯度と合わせて、おおよその基地局位置を示す
lat緯度: 経度と合わせて、おおよその基地局位置を示す
mccMCC を確認するには、Mobile network codesを参照し、Mobile country code カラムの 3 桁の値を使用してください。
このテーブルのスキーマは、ディスク上でのコンパクトな保存とクエリ速度を考慮して設計されています。
  • radio データは、文字列ではなく Enum8 (UInt8) として保存されます。
  • mcc、つまりモバイル国コードは、値の範囲が 1 ~ 999 であることがわかっているため、UInt16 として保存されます。
  • lonlatFloat64 です。
このガイドのクエリや可視化では、ほかのフィールドは使用しませんが、興味があれば上記のリンク先フォーラムで説明を確認できます。

Apache Superset で可視化を作成する

Superset は Docker で簡単に実行できます。すでに Superset を実行している場合は、pip install clickhouse-connect で ClickHouse Connect を追加するだけです。Superset をインストールする必要がある場合は、すぐ下の Launch Apache Superset in Docker を開いてください。
Superset には、Docker Compose を使用して Superset をローカルにインストールする手順があります。GitHub から Apache Superset リポジトリをチェックアウトした後、最新の開発コード、または特定のタグを実行できます。pre-release としてマークされていない最新のリリースである 2.0.0 を推奨します。docker compose を実行する前に、いくつかの作業が必要です:
  1. 公式の ClickHouse Connect ドライバーを追加する
  2. Mapbox API キーを取得し、環境変数として追加する (任意)
  3. 実行する Superset のバージョンを指定する
以下のコマンドは、GitHub リポジトリ superset のトップレベルから実行してください。

公式 ClickHouse Connect ドライバー

Superset のデプロイメントで ClickHouse Connect ドライバーを利用できるようにするには、ローカルの requirements ファイルに追加します:
echo "clickhouse-connect" >> ./docker/requirements-local.txt

Mapbox

これは任意です。Mapbox API キーがなくても Superset で位置データをプロットできますが、キーを追加するよう促すメッセージが表示され、地図の背景画像は表示されません (データポイントだけが表示され、地図の背景は表示されません) 。Mapbox には無料 tier もあります。このガイドで作成するサンプル可視化の一部では、たとえば経度や緯度などの位置データを使用します。Superset には Mapbox マップのサポートが含まれています。Mapbox の可視化を使用するには、Mapbox API キーが必要です。Mapbox free tier にサインアップし、API キーを生成してください。API キーを Superset で利用できるようにします:
echo "MAPBOX_API_KEY=pk.SAMPLE-Use-your-key-instead" >> docker/.env-non-dev

Superset バージョン 2.0.0 をデプロイ

リリース 2.0.0 をデプロイするには、次を実行します:
git checkout 2.0.0
TAG=2.0.0 docker-compose -f docker-compose-non-dev.yml pull
TAG=2.0.0 docker-compose -f docker-compose-non-dev.yml up
OpenCelliD データセットを使って Superset ダッシュボードを作成するには、次の手順を実行します。
  • ClickHouseサービスを Superset の データベース として追加する
  • テーブル cell_towers を Superset の データセット として追加する
  • チャートをいくつか作成する
  • それらのチャートを ダッシュボード に追加する

ClickHouse service を Superset のデータベースとして追加する

HTTP(S) で ClickHouse に接続するには、次の情報が必要です。
Parameter(s)Description
HOST and PORT通常、TLS を使用する場合のポートは 8443、TLS を使用しない場合は 8123 です。
DATABASE NAMEデフォルトでは default という名前のデータベースがあります。接続先のデータベース名を使用してください。
USERNAME and PASSWORDデフォルトのユーザー名は default です。用途に応じたユーザー名を使用してください。
ClickHouse Cloud サービスの詳細は、ClickHouse Cloud コンソールで確認できます。 サービスを選択し、Connect をクリックします。 HTTPS を選択します。接続情報は curl コマンドの例として表示されます。 セルフマネージド ClickHouse を使用している場合、接続情報は ClickHouse 管理者によって設定されます。 Superset では、データベースの種類を選択し、接続情報を入力するとデータベースを追加できます。Superset を開き、+ をクリックして、DataConnect database の順に選択します。 一覧から ClickHouse Connect を選択します。
ClickHouse Connect が選択肢に表示されない場合は、インストールする必要があります。コマンドは pip install clickhouse-connect です。詳しくはこちらを参照してください。

接続情報を追加する

ClickHouse Cloud や、SSL の使用が必須のその他の ClickHouse システムに接続する場合は、SSL をオンにしてください。

テーブル cell_towers を Superset の データセット として追加する

Superset では、データセット はデータベース内のテーブルに対応します。Add dataset をクリックし、ClickHouse サービス、テーブルを含むデータベース (default) 、そして cell_towers テーブルを選択します。

いくつかのチャートを作成する

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

地図に使用するクエリを指定する

deck.gl の Scatterplot では経度と緯度が必要です。また、クエリには 1 つ以上のフィルターを適用できます。この例では 2 つのフィルターを適用しています。1 つは UMTS 無線方式を持つ基地局用、もう 1 つはオランダに割り当てられた モバイル国コード 用です。 フィールド lonlat には、それぞれ経度と緯度が格納されています。 mcc = 204 のフィルターを追加します (または別の mcc 値に置き換えます) 。 radio = 'UMTS' のフィルターを追加します (または別の radio 値に置き換えます。選択肢は DESCRIBE TABLE cell_towers の出力で確認できます) 。 以下は、radio = 'UMTS' および mcc = 204 でフィルターするチャートの完全な設定です。 可視化を表示するには、UPDATE CHART をクリックします。

グラフをダッシュボードに追加する

このスクリーンショットは、LTE、UMTS、GSM の無線方式ごとの基地局の位置を示しています。グラフはいずれも同じ手順で作成し、ダッシュボードに追加します。
このデータは、Playground で対話的にクエリすることもできます。このを使うと、ユーザー名だけでなくクエリも自動で入力されます。Playground ではテーブルは作成できませんが、すべてのクエリを実行でき、Superset も利用できます (ホスト名とポート番号は適宜調整してください) 。
最終更新日 2026年6月10日