Кратко:
- Работа с метеорологической службой и погодными данными.
- Автоматизированный сбор данных с датчиков на центральный сервер.
- Обработка данных и запись в файл.
- Необходимость учета истории наблюдений для прогноза.
- Тренировка добавления данных из файлов в БД ClickHouse.
- Создание таблицы в БД с соответствующими полями и типами данных.
- Вставление данных в таблицу с помощью клиента командной строки clickhouse-client.
- Загрузка данных в БД из приложений или клиентов с графическим интерфейсом.
- Анализ 10-летнего среза данных о погоде в Москве и Санкт-Петербурге в ClickHouse.
Практическая работа. Добавление данных
Предположим, вы работаете в метеорологической службе и постоянно изучаете датасеты с погодными данными. Сбор данных о погоде автоматизирован: на территории области расположены несколько десятков пунктов наблюдения с датчиками. Информация о температуре, давлении, влажности и скорости ветра раз в полчаса передаётся с датчиков на центральный сервер. Приложение на сервере обрабатывает данные, переводит их в нужный формат и записывает в файл. Каждый файл содержит данные за три часа наблюдений. Для прогноза нужно учитывать всю историю наблюдений за последние несколько лет, то есть все файлы потребуется собрать в одну БД.
Давайте потренируемся добавлять данные из файлов в БД ClickHouse.
На предыдущих уроках мы создали кластер, на котором развёрнута БД, и научились подключаться к нему. Продолжим работать с этой БД, а в качестве добавляемого файла возьмем уже известный вам датасет с данными о погоде в Москве и Санкт-Петербурге.
Сохраните файл на компьютере.
Прежде чем добавлять файл в БД, создадим в ней таблицу, куда будут вставляться данные. Перейдите в SQL-консоль кластера и выполните команду:
CREATE TABLE <имя вашей БД>.Weather
( LocalDateTime DateTime,
LocalDate Date,
Month Int8,
Day Int8,
TempC Float32,
Pressure Float32,
RelHumidity Int32,
WindSpeed10MinAvg Int32,
VisibilityKm Float32,
City String
) ENGINE=MergeTree
ORDER BY LocalDateTime;
В результате будет создана пустая таблица с полями и типами данных, соответствующими полям и типам данных в нашем файле (датасете).

Вставим данные в таблицу с помощью клиента командной строки
clickhouse-client. Команды для его установки (для Ubuntu):sudo apt update && sudo apt install --yes apt-transport-https ca-certificates dirmngr && \
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4 && \
echo "deb https://repo.clickhouse.com/deb/stable/ main/" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list
sudo apt update && sudo apt install --yes clickhouse-client
mkdir --parents ~/.clickhouse-client && \
wget "https://storage.yandexcloud.net/mdb/clickhouse-client.conf.example" \
--output-document ~/.clickhouse-client/config.xml
Подробности о том, как установить клиент и работать с ним, вы найдёте в документации ClickHouse.
Подключитесь к кластеру. Пример строки подключения посмотрите в консоли управления.
Добавим файл с данными в БД с помощью команды:
cat weather_data.tsv | clickhouse-client \
--host <адрес вашей БД> \
--secure \
--user user1 \
--database db1 \
--port 9440 \
-q "INSERT INTO db1.Weather FORMAT TabSeparated" \
--ask-password
Переключившись в SQL-консоль, вы увидите, что данные появились в таблице.

Данные в БД можно загружать и другими способами: из приложений или клиентов с графическим интерфейсом (например DBeaver). В этом случае подключение к БД и передача данных будут идти по HTTP-протоколу через порт
8443.Теперь вы можете анализировать 10-летний срез данных о погоде в Москве и Санкт-Петербурге непосредственно в ClickHouse, без обращений к внешним источникам. Попробуйте, например, выяснить, какой день был самым ветреным в этих городах.
После практической работы остановите кластер, но не удаляйте его. Кластер ещё понадобится, когда мы будем рассматривать сервис визуализации и анализа данных Yandex DataLens.