Cell tower 데이터셋으로 지리 데이터 다루기
Cell tower 데이터셋으로 지리 데이터 다루기
이 가이드에서는 OpenCelliD 데이터를 ClickHouse에 로드하고, Apache Superset을 ClickHouse에 연결하고, 데이터셋의 데이터를 기반으로 대시보드를 만드는 방법을 배워요. cell_towers 테이블을 만들고 S3에서 데이터를 가져오고, pointInPolygon으로 지리 쿼리를 실행해요.
본문
목표 (Goal)
이 가이드에서 다음을 배우게 돼요:
- ClickHouse에 OpenCelliD 데이터 로드하기
- Apache Superset을 ClickHouse에 연결하기
- 데이터셋의 데이터를 기반으로 대시보드 만들기
이 가이드에서 만드는 대시보드의 미리보기는 이러해요.
데이터셋 가져오기
이 데이터셋은 전 세계에서 가장 큰 Cell Tower 공개 데이터베이스인 OpenCelliD에서 온 거예요. 2021년 기준, 전 세계 cell tower(GSM, LTE, UMTS 등)에 대한 4천만 개 이상의 기록과 지리적 좌표와 메타데이터(국가 코드, 네트워크 등)를 담고 있어요. OpenCelliD 프로젝트는 Creative Commons Attribution-ShareAlike 4.0 International License로 라이선스되며, 우리는 이 데이터셋의 스냅샷을 동일한 라이선스 조건으로 재배포해요. 최신 버전의 데이터셋은 로그인 후 다운로드할 수 있어요.
- ClickHouse Cloud
- Self-managed
샘플 데이터 로드하기
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 서비스에 연결된 웹 기반 SQL 콘솔이 있어요. 아래의 Connect to SQL console을 펼쳐 자세한 내용을 확인하세요.
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 │
└───────────────┴───────────────────────────────────────────────────────────────────────┴
- 테이블을 만듭니다:
CREATE TABLE cell_towers
(
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
)
ENGINE = MergeTree ORDER BY (radio, mcc, net, created);
- 공개 S3 버킷(686 MB)에서 데이터셋을 가져옵니다:
INSERT INTO cell_towers SELECT * FROM s3('https://datasets-documentation.s3.amazonaws.com/cell_towers/cell_towers.csv.xz', NOSIGN, 'CSVWithNames')
예시 쿼리 실행하기
- 유형별 cell tower 수:
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.)
- 모바일 국가 코드(MCC)별 cell tower:
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 목록을 기반으로, cell tower가 가장 많은 국가는 미국, 독일, 러시아예요. 이 값들을 디코딩하려면 ClickHouse에 Dictionary를 만드는 것을 고려해 볼 수 있어요.
사용 사례: 지리 데이터 포함하기
pointInPolygon 함수를 사용해요.
- 폴리곤을 저장할 테이블을 만듭니다:
ClickHouse Cloud:
CREATE TABLE moscow (polygon Array(Tuple(Float64, Float64)))
ORDER BY polygon;
Self-managed:
CREATE TEMPORARY TABLE
moscow (polygon Array(Tuple(Float64, Float64)));
- 이것은 모스크바의 대략적인 모양이에요 ("new Moscow" 제외):
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)]);
- 모스크바에 cell tower가 몇 개 있는지 확인해 보세요:
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.)
스키마 검토 (Review of the schema)
Superset에서 시각화를 만들기 전에 사용할 컬럼을 살펴보세요. 이 데이터셋은 주로 전 세계 모바일 셀룰러 타워의 위치(경도·위도)와 라디오 유형을 제공해요. 컬럼 설명은 커뮤니티 포럼에서 찾을 수 있어요. 만들 시각화에 사용되는 컬럼은 아래에 설명돼요. OpenCelliD 포럼에서 가져온 컬럼 설명이에요.
| 컬럼 | 설명 |
|---|---|
| radio | 기술 세대: CDMA, GSM, UMTS, 5G NR |
| mcc | Mobile Country Code: 204는 네덜란드 |
| lon | 경도: 위도와 함께 대략적인 타워 위치 |
| lat | 위도: 경도와 함께 대략적인 타워 위치 |
mcc 자신의 MCC를 찾으려면 Mobile network codes를 확인하고 Mobile country code 컬럼의 세 자리를 사용하세요.
이 테이블의 스키마는 디스크의 컴팩트 저장과 쿼리 속도를 위해 설계됐어요.
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을 설치해야 한다면 아래의 Launch Apache Superset in Docker를 여세요.
Launch Apache Superset in Docker: Superset은 Docker Compose로 로컬에 Superset 설치 지침을 제공해요. GitHub에서 Apache Superset 저장소를 체크아웃한 후 최신 개발 코드나 특정 태그를 실행할 수 있어요. pre-release로 표시되지 않은 최신 릴리스이므로 2.0.0 릴리스를 권장해요. docker compose를 실행하기 전에 해야 할 몇 가지 작업이 있어요:
- 공식 ClickHouse Connect 드라이버 추가
- Mapbox API 키를 얻어서 환경 변수로 추가 (선택 사항)
- 실행할 Superset 버전 지정
아래 명령들은 GitHub 저장소 superset의 최상위 레벨에서 실행돼요.
공식 ClickHouse connect 드라이버: Superset 배포에서 ClickHouse Connect 드라이버를 사용할 수 있게 하려면 로컬 requirements 파일에 추가하세요:
echo "clickhouse-connect" >> ./docker/requirements-local.txt
Mapbox: 이건 선택 사항이에요. Mapbox API 키 없이도 Superset에서 위치 데이터를 플롯할 수 있지만, 키를 추가해야 한다는 메시지가 보이고 지도의 배경 이미지가 없을 거예요 (데이터 포인트만 보이고 지도 배경은 안 보임). 사용하고 싶다면 Mapbox가 무료 티어를 제공해요. 가이드에서 만들게 하는 일부 샘플 시각화는 경도와 위도 같은 위치 데이터를 사용해요. Superset은 Mapbox 지도 지원을 포함해요. Mapbox 시각화를 사용하려면 Mapbox API 키가 필요해요. Mapbox 무료 티어에 가입하고 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 database로 추가
- cell_towers 테이블을 Superset dataset으로 추가
- 몇 가지 charts 만들기
- 차트를 dashboard에 추가
ClickHouse 서비스를 Superset database로 추가
HTTP(S)로 ClickHouse에 연결하려면 이 정보가 필요해요:
| 파라미터 | 설명 |
|---|---|
HOST와 PORT |
보통 TLS 사용 시 포트는 8443, TLS 미사용 시 8123. |
DATABASE NAME |
기본적으로 default라는 데이터베이스가 있어요. 연결하려는 데이터베이스의 이름을 사용하세요. |
USERNAME과 PASSWORD |
기본적으로 사용자 이름은 default예요. 사용 사례에 적절한 사용자 이름을 사용하세요. |
ClickHouse Cloud 서비스의 세부 정보는 ClickHouse Cloud 콘솔에서 확인할 수 있어요. 서비스를 선택하고 Connect을 클릭하세요. HTTPS를 선택하세요. 연결 세부 정보가 예시 curl 명령에 표시돼요.
셀프 매니지드 ClickHouse를 사용 중이라면 연결 세부 정보는 ClickHouse 관리자가 설정해요. Superset에서 데이터베이스 유형을 선택하고 연결 세부 정보를 제공해서 데이터베이스를 추가할 수 있어요. Superset을 열고 **+**를 찾아보세요. Data 다음에 Connect database 옵션이 있는 메뉴가 있어요. 목록에서 ClickHouse Connect를 선택하세요.
ClickHouse Connect가 옵션에 없다면 설치해야 해요. 명령은 pip install clickhouse-connect이고, 자세한 정보는 여기에서 확인할 수 있어요.
연결 세부 정보 추가
ClickHouse Cloud나 SSL 사용을 강제하는 다른 ClickHouse 시스템에 연결할 때는 SSL을 켜야 해요.
cell_towers 테이블을 Superset dataset으로 추가
Superset에서 dataset은 데이터베이스 내의 테이블에 매핑돼요. dataset 추가를 클릭하고 ClickHouse 서비스, 테이블이 있는 데이터베이스(default), cell_towers 테이블을 선택하세요.
몇 가지 charts 만들기
Superset에서 차트 추가를 선택하면 데이터셋(cell_towers)과 차트 유형을 지정해야 해요. OpenCelliD 데이터셋이 cell tower의 경도·위도 좌표를 제공하므로 Map 차트를 만들 거예요. deck.gl Scatterplot 유형은 지도의 조밀한 데이터 포인트와 잘 동작하므로 이 데이터셋에 적합해요.
지도에 사용하는 쿼리 지정: deck.gl Scatterplot은 경도와 위도가 필요하며, 쿼리에 하나 이상의 필터를 적용할 수도 있어요. 이 예시에서는 두 필터를 적용해요. 하나는 UMTS 라디오를 가진 cell tower용, 하나는 네덜란드에 할당된 Mobile country code용. lon과 lat 필드는 경도와 위도를 담아요. mcc = 204(또는 다른 mcc 값 사용 가능)로 필터를 추가하세요. radio = 'UMTS'(또는 다른 radio 값 사용 가능, DESCRIBE TABLE cell_towers의 출력에서 선택을 볼 수 있음)로 필터를 추가하세요. 이렇게 하면 radio = 'UMTS'와 mcc = 204로 필터링하는 차트의 전체 구성이 돼요. UPDATE CHART를 클릭해서 시각화를 렌더링하세요.
차트를 dashboard에 추가
이 스크린샷은 LTE, UMTS, GSM 라디오를 가진 cell tower 위치를 보여줘요. 차트는 모두 같은 방식으로 만들어지고 대시보드에 추가돼요.
데이터는 Playground에서 인터랙티브 쿼리로도 사용할 수 있어요. 이 예시는 사용자 이름과 쿼리까지 채워 줄 거예요. Playground에서는 테이블을 만들 수 없지만, 모든 쿼리를 실행할 수 있고 Superset도 사용할 수 있어요 (호스트 이름과 포트 번호 조정).