Skip to main content
All quickstarts
Real-time аналитикаХранилище данныхCloudOSS

Обзор

Узнайте, как загружать данные в ClickHouse и выполнять к ним запросы на примере демонстрационного набора данных о такси Нью-Йорка.

Предварительные требования

Для выполнения этого руководства необходим доступ к работающему сервису ClickHouse. Инструкции приведены в руководстве Быстрый старт.
1

Создать новую таблицу

Набор данных о такси Нью-Йорка содержит сведения о миллионах поездок, в том числе такие столбцы, как сумма чаевых, дорожные сборы и тип оплаты. Создайте таблицу для хранения этих данных.
  1. Подключитесь к SQL-консоли:
    • В ClickHouse Cloud выберите сервис в раскрывающемся списке, затем выберите SQL Console в левом меню навигации.
    • В самоуправляемом ClickHouse подключитесь к SQL-консоли по адресу https://_hostname_:8443/play. Уточните необходимые сведения у администратора ClickHouse.
  2. Создайте следующую таблицу trips в базе данных default:
2

Добавьте набор данных

Теперь, когда вы создали таблицу, добавьте данные о поездках на нью-йоркском такси из CSV-файлов в S3.
  1. Следующая команда вставляет около 2 000 000 строк в таблицу trips из двух файлов в S3: trips_1.tsv.gz и trips_2.tsv.gz:
  2. Дождитесь завершения INSERT. Загрузка 150 МБ данных может занять некоторое время.
  3. После завершения вставки убедитесь, что она прошла успешно:
    Этот запрос должен вернуть 1 999 657 строк.
3

Анализ данных

Выполните несколько запросов, чтобы проанализировать данные. Изучите приведённые ниже примеры или напишите собственный SQL-запрос.
  • Рассчитайте среднюю сумму чаевых:

  • Рассчитайте среднюю стоимость по количеству пассажиров:

    Значение passenger_count варьируется от 0 до 9:

  • Рассчитайте ежедневное число поездок с посадкой в каждом районе:

  • Рассчитайте продолжительность каждой поездки в минутах, затем сгруппируйте результаты по продолжительности поездок:

  • Покажите количество поездок с посадкой в каждом районе с разбивкой по часам суток:

  1. Получите данные о поездках в аэропорты Ла-Гуардия или JFK:

4

Создайте словарь

Словарь — это отображение пар «ключ-значение», хранящееся в памяти. Подробнее см. СловариСоздайте словарь, связанный с таблицей в вашем сервисе ClickHouse. Таблица и словарь построены на основе CSV-файла, который содержит по одной строке для каждого района Нью-Йорка.Районы сопоставлены с названиями пяти боро Нью-Йорка (Bronx, Brooklyn, Manhattan, Queens и Staten Island), а также с аэропортом Ньюарк (EWR).Ниже приведён фрагмент используемого CSV-файла в табличном виде. Столбец LocationID в файле соответствует столбцам pickup_nyct2010_gid и dropoff_nyct2010_gid в вашей таблице trips:
  1. Выполните следующую SQL-команду, которая создаёт словарь с именем taxi_zone_dictionary и заполняет его данными из CSV-файла, размещённого в S3. URL-адрес файла: https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/taxi_zone_lookup.csv.
Установка LIFETIME в значение 0 отключает автоматические обновления, чтобы избежать ненужного трафика к нашему S3 бакету. В других случаях это значение можно настроить иначе. Подробнее см. в разделе Refreshing dictionary data using LIFETIME.
  1. Убедитесь, что всё сработало. Следующая команда должна вернуть 265 строк — по одной для каждого района:
  2. Используйте функцию dictGet (или одну из её вариаций), чтобы получить значение из словаря. В качестве аргументов передайте имя словаря, нужное значение и ключ (в нашем примере — столбец LocationID из taxi_zone_dictionary). Например, следующий запрос возвращает Borough для LocationID, равного 132, который соответствует аэропорту JFK):
    JFK находится в Куинсе. Обратите внимание: время получения значения практически равно 0:
  3. Используйте функцию dictHas, чтобы проверить наличие ключа в словаре. Например, следующий запрос возвращает 1 (то есть “true” в ClickHouse):
  4. Следующий запрос возвращает 0, поскольку 4567 отсутствует среди значений LocationID в словаре:
  5. Используйте функцию dictGet, чтобы получить название боро в запросе. Например:
    Этот запрос подсчитывает количество поездок на такси по каждому боро, заканчивающихся в аэропорту LaGuardia или JFK. Результат выглядит следующим образом; обратите внимание, что у довольно большого числа поездок район посадки неизвестен:
5

Выполнить JOIN

Напишите несколько запросов, объединяющих taxi_zone_dictionary с таблицей trips.
  1. Начните с простого JOIN, аналогичного предыдущему запросу для аэропортов:
    Результат совпадает с результатом запроса dictGet:
Обратите внимание: результат приведённого выше запроса JOIN совпадает с результатом предыдущего запроса с dictGetOrDefault (за исключением значений Unknown). Внутренне ClickHouse вызывает функцию dictGet для словаря taxi_zone_dictionary, однако синтаксис JOIN привычнее для SQL-разработчиков.
  1. Этот запрос возвращает строки для 1000 поездок с наибольшими чаевыми, а затем выполняет INNER JOIN каждой строки со словарём:
В целом в ClickHouse не рекомендуется часто использовать SELECT *. Получайте только те столбцы, которые действительно нужны.

Следующие шаги

Подробнее о ClickHouse читайте в следующей документации:
Last modified on August 14, 2026