Геоданные на основе набора данных о сотовых вышках
Цель
В этом руководстве вы узнаете, как:
- загрузить данные 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.
Выберите свой сервис, затем Data sources -> Predefined sample data.

Выберите набор данных Cell Towers на вкладке Sample data и нажмите Load data:

Изучение схемы таблицы cell_towers
Если вам нужен SQL‑клиент, у вашего сервиса ClickHouse Cloud есть связанная веб‑консоль SQL; разверните раздел Connect to SQL console ниже, чтобы узнать подробности.
Connect to SQL console
В списке сервисов ClickHouse Cloud нажмите на нужный сервис.

Произойдет переход в 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 ниже.
Запуск Apache Superset в Docker
В Superset доступны инструкции по локальной установке Superset с использованием Docker Compose. После клонирования репозитория Apache Superset из GitHub можно запустить последнюю версию кода разработки или конкретный тег. Рекомендуется использовать релиз 2.0.0 — это последний релиз, не отмеченный как pre-release.
Перед запуском docker compose необходимо выполнить несколько задач:
- Добавить официальный драйвер ClickHouse Connect
- Получить API-ключ Mapbox и добавить его как переменную окружения (опционально)
- Указать версию Superset для запуска
Приведенные ниже команды необходимо выполнять из корневой директории репозитория GitHub superset.
Официальный драйвер ClickHouse Connect
Чтобы драйвер ClickHouse Connect был доступен в развертывании Superset, добавьте его в локальный файл requirements:
Mapbox
Этот шаг необязателен: вы можете отображать геоданные в Superset без ключа API Mapbox, но при этом увидите сообщение с рекомендацией добавить ключ, а фоновое изображение карты будет отсутствовать (вы увидите только точки данных, но не подложку карты). Mapbox предоставляет бесплатный тарифный план, если вы хотите им воспользоваться.
Некоторые из примерных визуализаций, которые предлагается создать в руководствах, используют данные о местоположении, например долготу и широту. Superset поддерживает карты Mapbox. Чтобы использовать визуализации Mapbox, вам нужен ключ API Mapbox. Зарегистрируйтесь на бесплатный тарифный план Mapbox и сгенерируйте ключ API.
Сделайте ключ API доступным для Superset:
Развертывание Superset версии 2.0.0
Для развертывания релиза 2.0.0 выполните:
Чтобы создать дашборд Superset с использованием набора данных OpenCelliD, вам необходимо:
- Добавить ваш экземпляр ClickHouse как database в Superset
- Добавить таблицу cell_towers как dataset в Superset
- Создать несколько charts
- Добавить эти charts в dashboard
Добавьте службу ClickHouse в качестве базы данных Superset
Чтобы подключиться к ClickHouse по HTTP(S), вам потребуется следующая информация:
| Параметр(ы) | Описание |
|---|---|
HOST и PORT | Обычно используется порт 8443 при использовании TLS или 8123 при отсутствии TLS. |
DATABASE NAME | По умолчанию существует база данных default; используйте имя базы данных, к которой вы хотите подключиться. |
USERNAME и PASSWORD | По умолчанию имя пользователя — default. Используйте имя пользователя, соответствующее вашему сценарию. |
Сведения о вашем сервисе ClickHouse Cloud доступны в консоли ClickHouse Cloud. Выберите сервис и нажмите Connect:

Выберите HTTPS. Параметры подключения отображаются в примере команды curl.

Если вы используете самостоятельное (self-managed) развертывание ClickHouse, параметры подключения задаются администратором ClickHouse.
В 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 (измените имя хоста и номер порта).