Геоданные на основе набора данных о сотовых вышках
Цель
В этом руководстве вы узнаете, как:
- загрузить данные OpenCelliD в ClickHouse
- подключить Apache Superset к ClickHouse
- построить дашборд на основе данных из набора данных
Ниже приведён пример дашборда, который вы создадите в этом руководстве:

Получение набора данных
Этот набор данных взят из OpenCelliD — крупнейшей в мире открытой базы данных сотовых вышек.
По состоянию на 2021 год он содержит более 40 миллионов записей о сотовых вышках (GSM, LTE, UMTS и т. д.) по всему миру с их географическими координатами и метаданными (код страны, сеть и т. д.).
Проект OpenCelliD распространяется под лицензией Creative Commons Attribution-ShareAlike 4.0 International, и мы перераспространяем снимок этого набора данных на условиях той же лицензии. Актуальная версия набора данных доступна для загрузки после входа в систему.
- ClickHouse Cloud
- Самостоятельное управление
Загрузка примера данных
ClickHouse Cloud предоставляет простой способ загрузить этот набор данных из S3. Войдите в свою организацию ClickHouse Cloud или создайте бесплатную пробную версию на ClickHouse.cloud.
Select your service, followed by Data sources -> Predefined sample data.

Выберите набор данных Cell Towers на вкладке Sample data и нажмите 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 МБ):
Выполните несколько примеров запросов
- Количество сотовых вышек по типу:
- Базовые станции сотовой связи по мобильному коду страны (MCC):
На основе приведённого выше запроса и списка MCC странами с наибольшим количеством сотовых вышек являются США, Германия и Россия.
Вы можете создать в ClickHouse словарь (Dictionary) для расшифровки этих значений.
Сценарий использования: использование геоданных
Использование функции pointInPolygon.
- Создайте таблицу, в которой будут храниться полигоны:
- ClickHouse Cloud
- Self-managed
- Это приближённый контур Москвы (без «Новой Москвы»):
- Проверьте, сколько базовых станций сотовой связи находится в Москве:
Обзор схемы
Прежде чем создавать визуализации в Superset, ознакомьтесь со столбцами, которые вы будете использовать. Этот набор данных в первую очередь содержит сведения о местоположении (долгота и широта) и типах радиотехнологий на базовых станциях мобильной связи по всему миру. Описание столбцов можно найти на форуме сообщества. Столбцы, используемые в визуализациях, которые вы будете строить, описаны ниже.
Ниже приведено описание столбцов, взятое с форума OpenCelliD:
| Column | Description |
|---|---|
| radio | Поколение технологии: CDMA, GSM, UMTS, 5G NR |
| mcc | Mobile Country Code: 204 — Нидерланды |
| lon | Longitude: вместе с Latitude, примерное местоположение вышки |
| lat | Latitude: вместе с Longitude, примерное местоположение вышки |
Чтобы найти свой MCC, обратитесь к статье Mobile network codes и используйте три цифры из столбца Mobile country code.
Схема этой таблицы была спроектирована для компактного хранения на диске и высокой скорости выполнения запросов.
- Данные
radioхранятся какEnum8(UInt8), а не как строка. mcc, или Mobile country code, хранится какUInt16, так как известен диапазон значений 1–999.lonиlatимеют типFloat64.
Остальные поля не используются в запросах или визуализациях в этом руководстве, но они описаны на форуме по ссылке выше, если вам интересно.
Создание визуализаций с Apache Superset
Superset достаточно просто запускать в Docker. Если у вас уже запущен Superset, всё, что нужно сделать, — добавить ClickHouse Connect с помощью pip install clickhouse-connect. Если вам нужно установить Superset, воспользуйтесь разделом Launch Apache Superset in Docker ниже.
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:
Чтобы создать дашборд Superset с использованием набора данных OpenCelliD, вам необходимо:
- Добавить ваш экземпляр ClickHouse как database в Superset
- Добавить таблицу cell_towers как dataset в Superset
- Создать несколько charts
- Добавить эти charts в dashboard
Добавьте службу ClickHouse в качестве базы данных Superset
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 или другим системам ClickHouse, где использование SSL является обязательным, у вас включен SSL.

Добавьте таблицу cell_towers как dataset в Superset
В Superset объект dataset соответствует таблице в базе данных. Нажмите «add a dataset», выберите свой сервис ClickHouse, базу данных (default), содержащую таблицу, а затем таблицу cell_towers:

Создание нескольких диаграмм
При добавлении диаграммы в Superset необходимо указать набор данных (cell_towers) и тип диаграммы. Поскольку набор данных OpenCelliD содержит координаты широты и долготы для сотовых вышек, мы создадим диаграмму типа Map. Тип deck.gL Scatterplot подходит для этого набора данных, так как хорошо работает с плотными точками данных на карте.

Укажите запрос, используемый для карты
Для диаграммы рассеяния deck.gl требуются долгота и широта; к запросу также можно применить один или несколько фильтров. В этом примере применены два фильтра: один для сотовых вышек с радиоинтерфейсами UMTS и один для мобильного кода страны (Mobile Country Code, MCC), назначенного Нидерландам.
Поля lon и lat содержат долготу и широту:

Добавьте фильтр с mcc = 204 (или подставьте любое другое значение mcc):

Добавьте фильтр с radio = 'UMTS' (или подставьте любое другое значение radio, варианты можно увидеть в выводе DESCRIBE TABLE cell_towers):

Ниже показана полная конфигурация диаграммы, которая фильтрует по radio = 'UMTS' и mcc = 204:

Нажмите UPDATE CHART, чтобы построить визуализацию.
Добавьте диаграммы на дашборд
Этот скриншот показывает расположение базовых станций сотовой связи с радиоинтерфейсами LTE, UMTS и GSM. Все диаграммы создаются одинаково и добавляются на дашборд.

Данные также доступны для интерактивного выполнения запросов в Playground.
Этот пример автоматически заполнит имя пользователя и даже сам запрос.
Хотя вы не можете создавать таблицы в Playground, вы можете выполнять все запросы и даже использовать Superset (измените имя хоста и номер порта).