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

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

Выберите набор данных Сотовые вышки на вкладке Образцы данных, и Загрузить данные:

Изучите схему таблицы cell_towers
Если вам нужно подключение SQL клиента, ваш сервис ClickHouse Cloud имеет связанную веб-систему SQL консоли; разверните Подключение к SQL консоли ниже для получения подробной информации.
Подключение к SQL консоли
В списке ваших сервисов ClickHouse Cloud нажмите на нужный сервис.

Это перенаправит вас в SQL консоль.

Это вывод команды DESCRIBE
. Ниже в этом руководстве будут описаны типы полей.
- Создайте таблицу:
- Импортируйте набор данных из публичного S3 бакета (686 МБ):
Выполните несколько примерных запросов
- Количество сотовых вышек по типу:
- Сотовые вышки по мобильному коду страны (MCC):
Согласно вышеуказанному запросу и списку MCC, страны с наибольшим количеством сотовых вышек: США, Германия и Россия.
Вы можете создать Словарь в ClickHouse для декодирования этих значений.
Случай использования: включение геоданных
Используя функцию pointInPolygon
.
- Создайте таблицу, где мы будем хранить полигоны:
- ClickHouse Cloud
- Самоуправляемый
- Это грубая форма Москвы (без "новой Москвы"):
- Проверьте, сколько сотовых вышек в Москве:
Обзор схемы
Прежде чем строить визуализации в Superset, посмотрите на столбцы, которые вы будете использовать. Этот набор данных в первую очередь предоставляет местоположение (долгота и широта) и типы радиосетей на мобильных сотовых вышках по всему миру. Описания столбцов можно найти на форуме сообщества. Столбцы, используемые в визуализациях, которые будут построены, описаны ниже.
Вот описание столбцов, взятое с форума OpenCelliD:
Столбец | Описание |
---|---|
radio | Технологическое поколение: CDMA, GSM, UMTS, 5G NR |
mcc | Мобильный код страны: 204 - Нидерланды |
lon | Долгота: совместно с широтой, приблизительное местоположение вышки |
lat | Широта: совместно с долготой, приблизительное местоположение вышки |
Чтобы найти свой MCC, проверьте Коды мобильных сетей и используйте три цифры в колонке Мобильный код страны.
Схема для этой таблицы была создана для компактного хранения на диске и быстроты выполнения запросов.
- Данные
radio
хранятся в видеEnum8
(UInt8
), а не строки. mcc
или мобильный код страны хранится какUInt16
, так как мы знаем, что диапазон составляет от 1 до 999.lon
иlat
имеют типFloat64
.
Ни одно из других полей не используется в запросах или визуализациях в этом руководстве, но они описаны в форуме, ссылка на который приведена выше, если вам интересно.
Создание визуализаций с Apache Superset
Superset легко запустить из Docker. Если у вас уже запущен Superset, все, что вам нужно сделать, это добавить ClickHouse Connect с помощью команды pip install clickhouse-connect
. Если вам нужно установить Superset, откройте Запустить Apache Superset в 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, добавьте его в файл локальных требований:
Mapbox
Это необязательно, вы можете отображать данные о местоположении в Superset без ключа API Mapbox, но вы увидите сообщение, в котором говорится, что вам следует добавить ключ, а фоновое изображение карты будет отсутствовать (вы будете видеть только точки данных, а не фон карты). Mapbox предоставляет бесплатный тариф, если вы хотите его использовать.
Некоторые из образцов визуализаций, которые предлагает создать руководство, используют данные о местоположении, например, долготу и широту. Superset поддерживает карты Mapbox. Чтобы использовать визуализации Mapbox, вам нужен ключ API Mapbox. Зарегистрируйтесь на бесплатном тарифе Mapbox и сгенерируйте ключ API.
Сделайте ключ API доступным для Superset:
Развертывание версии Superset 2.0.0
Чтобы развернуть версию 2.0.0, выполните:
Чтобы создать панель мониторинга Superset с использованием набора данных OpenCelliD, вам следует:
- Добавить вашу службу ClickHouse в качестве базы данных Superset
- Добавить таблицу cell_towers в качестве набора данных Superset
- Создать несколько графиков
- Добавить графики на панель мониторинга
Добавьте вашу службу ClickHouse в качестве базы данных Superset
Чтобы подключиться к ClickHouse с помощью HTTP(S), вам необходима следующая информация:
-
ХОСТ и ПОРТ: как правило, порт 8443 при использовании TLS или 8123 при отсутствии TLS.
-
ИМЯ БАЗЫ ДАННЫХ: по умолчанию существует база данных с именем
default
, используйте имя базы данных, к которой вы хотите подключиться. -
ИМЯ ПОЛЬЗОВАТЕЛЯ и ПАРОЛЬ: по умолчанию имя пользователя
default
. Используйте имя пользователя, подходящее для вашего случая.
Данные для вашего сервиса ClickHouse Cloud доступны в консоли ClickHouse Cloud. Выберите сервис, к которому вы хотите подключиться, и нажмите Подключиться:

Выберите HTTPS, и данные будут доступны в примере команды curl
.

Если вы используете самоуправляемый ClickHouse, детали подключения устанавливаются вашим администратором ClickHouse.
В Superset база данных может быть добавлена, выбрав тип базы данных и затем указав детали подключения. Откройте Superset и найдите +, у него есть меню с опциями Данные и затем Подключить базу данных.

Выберите ClickHouse Connect из списка:

Если ClickHouse Connect не является одним из ваших вариантов, вам нужно будет установить его. Команда pip install clickhouse-connect
, и больше информации доступно здесь.
Добавьте ваши данные подключения
Убедитесь, что вы включили SSL при подключении к ClickHouse Cloud или другим системам ClickHouse, которые требуют использования SSL.

Добавьте таблицу cell_towers в качестве набора данных Superset
В Superset набор данных соответствует таблице в базе данных. Нажмите, чтобы добавить набор данных, и выберите вашу службу ClickHouse, базу данных, содержащую вашу таблицу (default
), и выберите таблицу cell_towers
:

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

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

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

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

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

Нажмите на ОБНОВИТЬ ГРАФИК, чтобы отобразить визуализацию.
Добавьте графики на панель мониторинга
Этот скриншот показывает местоположения сотовых вышек с LTE, UMTS и GSM радиосетями. Все графики создаются одинаковым образом и добавляются на панель мониторинга.

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