Данные датчиков окружающей среды
Sensor.Community — это созданная сообществом глобальная сеть датчиков, формирующая открытые данные об окружающей среде (Open Environmental Data). Данные собираются с датчиков по всему миру. Любой желающий может приобрести датчик и разместить его в любом удобном месте. API для загрузки данных опубликованы на GitHub, а сами данные свободно доступны по лицензии Database Contents License (DbCL).
В датасете более 20 миллиардов записей, поэтому не стоит просто копировать и запускать команды ниже, если ваши ресурсы не готовы к такому объему. Команды ниже выполнялись на продакшн-инстансе ClickHouse Cloud.
- Данные находятся в S3, поэтому мы можем использовать табличную функцию
s3, чтобы создать таблицу из файлов. Мы также можем выполнять запросы к данным непосредственно по месту их хранения. Давайте посмотрим на несколько строк, прежде чем загружать их в ClickHouse:
Данные хранятся в CSV-файлах, но в качестве разделителя используется точка с запятой. Строки имеют следующий вид:
- Мы будем использовать следующую таблицу
MergeTreeдля хранения данных в ClickHouse:
- Сервисы ClickHouse Cloud содержат кластер с именем
default. Мы будем использовать табличную функциюs3Cluster, которая параллельно читает файлы из S3 с узлов вашего кластера. (Если у вас нет кластера, просто используйте функциюs3и уберите имя кластера.)
Этот запрос займет некоторое время — это примерно 1,67 ТБ несжатых данных:
Вот результат — он показывает число строк и скорость обработки. Данные поступают со скоростью более 6 млн строк в секунду!
- Давайте посмотрим, сколько места на диске требуется для таблицы
sensors:
1,67 ТиБ сжаты до 310 ГиБ, и в таблице 20,69 млрд строк:
- Давайте проанализируем данные теперь, когда они уже в ClickHouse. Обратите внимание, что объём данных со временем увеличивается по мере развёртывания всё большего числа датчиков:
Мы можем создать график в SQL Console, чтобы наглядно увидеть результаты:

- Этот запрос подсчитывает число слишком жарких и влажных дней:
Вот как выглядит результат:
