Обзор
Запустите ClickHouse
Создайте таблицу
Добавьте набор данных
Установите pg_clickhouse
Подключение pg_clickhouse
password.
Теперь добавьте таблицу taxi — просто импортируйте все таблицы из удалённой
базы данных ClickHouse в схему Postgres:
\det+, чтобы её увидеть:
\d, чтобы вывести все столбцы:
COUNT(), в ClickHouse, поэтому в
Postgres возвращается только одна строка. Чтобы убедиться в этом, используйте EXPLAIN:
Проанализируйте данные
-
Рассчитайте среднюю сумму чаевых:
-
Рассчитайте среднюю стоимость в зависимости от количества пассажиров:
-
Рассчитайте ежедневное число посадок по районам:
-
Вычислите длительность каждой поездки в минутах, затем сгруппируйте результаты по
длительности поездок:
-
Покажите число посадок в каждом районе с разбивкой по часам суток:
-
Установите часовой пояс отображения для Нью-Йорка и получите данные о поездках в аэропорты
Ла-Гуардия или JFK:
Создайте словарь
LocationID в файле сопоставляется со столбцами pickup_nyct2010_gid и
dropoff_nyct2010_gid в таблице поездок:
| LocationID | Borough | Zone | service_zone |
|---|---|---|---|
| 1 | EWR | Newark Airport | EWR |
| 2 | Queens | Jamaica Bay | Boro Zone |
| 3 | Bronx | Allerton/Pelham Gardens | Boro Zone |
| 4 | Manhattan | Alphabet City | Yellow Zone |
| 5 | Staten Island | Arden Heights | Boro Zone |
-
По-прежнему в Postgres используйте функцию
clickhouse_raw_query, чтобы создать в ClickHouse [словарь] с именемtaxi_zone_dictionaryи заполнить его данными из CSV-файла в S3:
Значение
LIFETIME, равное 0, отключает автоматические обновления, чтобы избежать
лишнего трафика к нашему S3 бакету. В других случаях вы можете настроить его
иначе. Подробнее см. в разделе Обновление данных словаря с помощью
LIFETIME.- Теперь импортируйте его:
- Убедитесь, что запрос к нему выполняется:
- Отлично. Теперь используйте функцию
dictGet, чтобы получить название боро в запросе. Этот запрос суммирует количество поездок на такси по каждому боро, которые заканчиваются либо в аэропорту LaGuardia, либо в JFK:
Выполните JOIN
taxi_zone_dictionary с таблицей
trips.
-
Начните с простого
JOIN, который работает аналогично предыдущему запросу по аэропортам:
Обратите внимание: результат приведённого выше запроса
JOIN совпадает с
результатом запроса dictGet выше (за исключением того, что значения Unknown
в него не входят). Фактически ClickHouse вызывает функцию dictGet для
словаря taxi_zone_dictionary, но синтаксис JOIN более привычен для
SQL-разработчиков.-
Этот запрос возвращает строки для 1000 поездок с самыми большими
чаевыми, а затем выполняет JOIN каждой строки со словарём:
Как правило, мы избегаем использования
SELECT * в PostgreSQL и ClickHouse. Вам
следует извлекать только те столбцы, которые действительно нужны.