Обзор
pg_clickhouse:
- Из консоли, если вы используете ClickHouse Managed Postgres.
- Из PSQL, если вы самостоятельно устанавливаете и настраиваете расширение.
Запустите ClickHouse
Создайте таблицу
Добавьте набор данных
Через консоль
pg_clickhouse и подключиться к сервису ClickHouse через консоль ClickHouse Cloud.
Откройте сервис Managed Postgres, выберите Настройки и найдите раздел
ClickHouse integration. Нажмите Включить pg_clickhouse.
В форме настройки укажите имя внешнего сервера. Выберите сервис ClickHouse,
базу данных и пользователя для подключения. Введите пароль ClickHouse, затем
выберите базу данных Postgres и целевую схему, в которую нужно импортировать
таблицы ClickHouse. Нажмите Подключить, чтобы создать внешний сервер и
импортировать схему.
После завершения настройки консоль отобразит подтверждение, а внешний сервер
появится в списке серверов.
Теперь вы можете открыть SQL консоль Postgres и выполнять запросы к импортированным таблицам:
taxi
и импортируйте её в целевую схему taxi.
Из PSQL
Установите pg_clickhouse
Подключение pg_clickhouse
Если вы используете консоль ClickHouse Cloud для выполнения SQL, предоставьте пользователю-администратору консоли доступ к внешнему серверу:
password.
Теперь добавьте таблицу taxi — просто импортируйте все таблицы из удалённой
базы данных ClickHouse в схему Postgres:
\det+, чтобы её увидеть:
\d, чтобы вывести все столбцы:
COUNT(), в ClickHouse, поэтому в
Postgres возвращается только одна строка. Чтобы убедиться в этом, используйте EXPLAIN:
Проанализируйте данные
-
Рассчитайте среднюю сумму чаевых:
-
Рассчитайте среднюю стоимость в зависимости от количества пассажиров:
-
Рассчитайте ежедневное число посадок по районам:
-
Вычислите длительность каждой поездки в минутах, затем сгруппируйте результаты по
длительности поездок:
-
Покажите число посадок в каждом районе с разбивкой по часам суток:
-
Установите часовой пояс отображения для Нью-Йорка и получите данные о поездках в аэропорты
Ла-Гуардия или JFK:
Создайте словарь
LocationID в файле сопоставляется со столбцами pickup_nyct2010_gid и
dropoff_nyct2010_gid в таблице поездок:
-
По-прежнему в Postgres используйте функцию
clickhouse_raw_query, чтобы создать в ClickHouse [словарь] с именемtaxi_zone_dictionaryи заполнить его данными из CSV-файла в S3:ЗначениеLIFETIME, равное 0, отключает автоматические обновления, чтобы избежать лишнего трафика к нашему S3 бакету. В других случаях вы можете настроить его иначе. Подробнее см. в разделе Обновление данных словаря с помощью LIFETIME.- Теперь импортируйте его:
- Убедитесь, что запрос к нему выполняется:
- Отлично. Теперь используйте функцию
dictGet, чтобы получить название боро в запросе. Этот запрос суммирует количество поездок на такси по каждому боро, которые заканчиваются либо в аэропорту LaGuardia, либо в JFK:
Этот запрос подсчитывает количество поездок на такси по каждому боро, которые заканчиваются в аэропорту Ла-Гуардия или JFK. Обратите внимание, что довольно много поездок, в которых район посадки неизвестен.
Выполните JOIN
taxi_zone_dictionary с таблицей
trips.
-
Начните с простого
JOIN, который работает аналогично предыдущему запросу по аэропортам:Обратите внимание: результат приведённого выше запросаJOINсовпадает с результатом запросаdictGetвыше (за исключением того, что значенияUnknownв него не входят). Фактически ClickHouse вызывает функциюdictGetдля словаряtaxi_zone_dictionary, но синтаксисJOINболее привычен для SQL-разработчиков. -
Этот запрос возвращает строки для 1000 поездок с самыми большими
чаевыми, а затем выполняет JOIN каждой строки со словарём:
Как правило, мы избегаем использования
SELECT * в PostgreSQL и ClickHouse. Вам
следует извлекать только те столбцы, которые действительно нужны.