Skip to main content
이 튜토리얼에서는 기지국(cell tower) 데이터셋을 사용하여 ClickHouse로 Geo 데이터를 다루는 방법을 살펴봅니다. 먼저 데이터셋을 ClickHouse Cloud에 로드하고 스키마(schema)를 확인한 다음, 수천만 개의 행을 대상으로 집계 쿼리(aggregation query)를 실행합니다. 이어서 딕셔너리(Dictionary)로 데이터를 보강하고, pointInPolygon 함수로 독일 내 기지국 수를 집계한 뒤, ClickHouse Agents를 사용하여 결과를 지도에 시각화합니다.

사전 요구 사항

이 튜토리얼을 진행하려면 다음이 필요합니다.
1

샘플 데이터를 불러오세요

이 튜토리얼에서 사용하는 데이터셋은 세계 최대의 기지국 공개 데이터베이스인 에서 제공합니다. 2021년 기준으로 전 세계 기지국에 대한 수천만 개의 레코드가 포함되어 있으며, 각 레코드에는 지리 좌표와 함께 국가 코드, 네트워크 등의 메타데이터가 들어 있습니다.
  1. ClickHouse Cloud의 왼쪽 메뉴에 있는 드롭다운에서 서비스를 선택하세요
  2. Data sources를 선택하세요
  3. Add sample data 카드를 클릭하세요
  4. Cell Towers (1.1 GB) 데이터셋을 선택하세요
  5. 대상 데이터베이스로 default를 지정하고 Import dataset을 클릭하세요
Data upload history에 상태가 success인 엔트리가 표시됩니다
2

스키마를 확인하세요

  1. 왼쪽 메뉴에서 SQL 콘솔을 선택하세요
  2. 홈 아이콘 옆의 + 탭을 클릭하여 새 쿼리를 만드세요
  3. SQL 편집기에 다음 쿼리를 입력한 후 Run을 클릭하세요:
다음과 같은 결과 테이블이 표시됩니다.
테이블의 각 엔트리는 지구상의 실제 위치에 있는 기지국(cell tower) 하나를 나타내며, 해당 위치는 lon 및 lat 좌표로 표시됩니다.
3

기본 쿼리 실행하기

다음 쿼리를 실행하여 유형별 기지국 수를 확인하십시오:
이번에는 모바일 국가 코드(Mobile Country Code, MCC)별 기지국 수를 확인합니다:
기지국이 가장 많은 국가의 MCC는 310, 262, 250임을 확인할 수 있습니다. 딕셔너리를 사용하면 숫자로 된 mcc 컬럼 값을 국가 이름으로 바꿀 수 있습니다.
딕셔너리를 생성했으므로 이제 이를 사용하여 동일한 목록을 MCC와 함께 국가 이름까지 표시하여 반환할 수 있습니다:
Query
Response
4

Geo 데이터 통합

특정 지리적 영역 안에 기지국이 몇 개나 있는지 확인해 보는 것도 유용합니다. ClickHouse는 이러한 사용 사례에 활용할 수 있는 pointInPolygon 함수 등 다양한 지리 함수를 제공합니다.독일 내에 기지국이 몇 개나 있는지 알아보려 한다고 가정해 보겠습니다. polygon 타입의 컬럼 하나로 구성된 germany 테이블을 생성하세요:
이제 독일(본토) 윤곽선의 좌표를 테이블에 삽입합니다.
이제 pointInPolygon 함수를 사용하여 독일 본토에 위치한 기지국이 몇 개인지 확인할 수 있습니다:
Query
Response
5

선택 사항: ClickHouse Agents를 사용해 데이터 시각화

다음으로 이 데이터를 시각화해 보겠습니다. 이 단계는 선택 사항인 예시 실행입니다. ClickHouse Agents는 모델 기반의 베타 기능이므로 계획, 도구 트레이스, 출력 결과가 실행할 때마다 다를 수 있습니다. ClickHouse Agents를 사용하면 SQL이나 오케스트레이션 로직을 직접 작성하지 않고도 대화만으로 ClickHouse 데이터를 손쉽게 쿼리하고 탐색할 수 있습니다. 에이전트는 사용자의 의도를 해석하고 단계를 계획한 뒤, 구성된 도구를 호출하여 결과를 반환합니다.왼쪽 메뉴 하단의 조직 이름 아래에 있는 ClickHouse agents를 클릭하여 ClickHouse Agents를 여십시오. 채팅을 통해 ClickHouse 에이전트에 메시지를 보낼 수 있습니다. “Visualize cell towers within Germany on a map using the default.cell_towers and default.germany tables”를 입력하고 전송하세요. 한 실행에서 에이전트는 다음 단계를 수행했습니다.
  • mcc_country_dict에서 독일의 모바일 국가 코드를 조회하여 MCC 262를 찾았습니다.
  • pointInPolygon을 사용하여 germany의 폴리곤 내부에 있으면서 mcc = 262인 기지국 수를 집계했으며, 그 결과 2,588,635개가 나왔습니다. 추가된 mcc 필터로 인해 폴리곤 내부에 있더라도 다른 국가에 등록된 기지국은 제외되므로, 앞서 구한 개수보다 약간 적습니다.
  • 260만 개의 지점을 하나하나 표시하는 대신 lon과 lat을 반올림하여 기지국을 0.1° x 0.1° 그리드로 그룹화했으며, 그 결과 4,821개의 셀이 생성되었습니다. 또한 셀별 개수의 합계가 정확히 2,588,635개인지 확인하여 구간화 과정에서 누락되거나 중복 집계된 항목이 없음을 검증했습니다.
  • germany에서 폴리곤을 가져와 그리드 위에 윤곽선으로 그렸으며, 밀집된 도시 셀과 희소한 농촌 셀이 모두 잘 보이도록 로그 색상 척도를 적용했습니다.
생성된 파일을 열어 결과를 확인하십시오. 밝게 표시된 밀집 지역은 베를린, 함부르크, 뮌헨, 프랑크푸르트 등 주요 대도시권입니다.

다음 단계

이 튜토리얼에서는 OpenCelliD 기지국 데이터셋을 ClickHouse Cloud에 로드하고, 스키마를 살펴본 뒤, 수천만 개의 행을 대상으로 집계 쿼리를 실행했습니다. 또한 딕셔너리(Dictionary)를 생성하여 숫자형 mcc 컬럼에 국가 이름을 보강하고, 독일의 경계를 다각형으로 저장한 다음, pointInPolygon을 사용하여 그 안에 있는 기지국 수를 계산했습니다. 마지막으로 ClickHouse Agents를 사용하여 집계 코드나 시각화 코드를 직접 작성하지 않고도 같은 질문을 밀도 지도로 시각화했습니다. 이제 다음과 같은 작업을 이어서 진행할 수 있습니다.
  • 에이전트에게 후속 질문하기. LTE와 GSM 같은 무선 유형에 따라 밀도가 어떻게 다른지, 또는 NR 기지국이 가장 많은 도시가 어디인지 질문해 보십시오. 자주 사용하는 프롬프트는 프롬프트 라이브러리에 저장해 두거나, Agent Builder에서 특화된 에이전트를 만들 수 있습니다.
  • 국가별로 비교하기. 다른 국가의 다각형을 삽입하고 각 국가를 대상으로 동일한 pointInPolygon 쿼리를 실행해 보십시오. 앞서 생성한 딕셔너리를 사용하면 결과에 국가 이름을 레이블로 붙일 수 있습니다.
  • H3 또는 geohash로 기지국 그룹화하기. 에이전트는 단순한 반올림 격자를 사용했습니다. ClickHouse는 H3 및 geohash 함수도 제공합니다. 이 함수들은 계층형 셀을 생성하므로 확대/축소가 가능한 지도에 적합합니다.
  • 다른 데이터셋 살펴보기. NYC taxi 데이터셋에도 승차 및 하차 좌표가 포함되어 있으며, 샘플 데이터셋 목록에서 더 많은 데이터셋을 확인할 수 있습니다.
마지막 수정일 2026년 9월 26일