Перейти к основному содержанию
Перейти к основному содержанию

SQL-консоль

SQL-консоль — самый быстрый и простой способ изучать ваши базы данных и выполнять по ним запросы в ClickHouse Cloud. Вы можете использовать SQL-консоль, чтобы:

  • Подключаться к сервисам ClickHouse Cloud
  • Просматривать, фильтровать и сортировать данные таблиц
  • Выполнять запросы и визуализировать результаты всего за несколько кликов
  • Делиться запросами с коллегами по команде и более эффективно сотрудничать.

Изучение таблиц

Просмотр списка таблиц и сведений о схеме

Общий обзор таблиц, содержащихся в вашем экземпляре ClickHouse, доступен в левой боковой панели. Используйте селектор базы данных в верхней части левой панели, чтобы просмотреть таблицы в конкретной базе данных.

Просмотр списка таблиц и схемы, показывающий таблицы базы данных в левой боковой панели

Таблицы в списке можно разворачивать, чтобы просматривать столбцы и их типы.

Вид развёрнутой таблицы, показывающий имена столбцов и типы данных

Изучение данных таблицы

Щёлкните по таблице в списке, чтобы открыть её в новой вкладке. В представлении Table View данные можно легко просматривать, выделять и копировать. Обратите внимание, что структура и форматирование сохраняются при копировании и вставке в табличные приложения, такие как Microsoft Excel и Google Sheets. Вы можете переключаться между страницами данных таблицы (постраничное разбиение по 30 строк) с помощью навигации в нижней части окна.

Table View с данными, которые можно выделить и скопировать

Просмотр данных ячейки

Инструмент Cell Inspector можно использовать для просмотра больших объёмов данных, содержащихся в одной ячейке. Чтобы открыть его, щёлкните правой кнопкой мыши по ячейке и выберите «Inspect Cell». Содержимое Cell Inspector можно скопировать, нажав на значок копирования в правом верхнем углу области содержимого инспектора.

Диалоговое окно инспектора ячеек, показывающее содержимое выбранной ячейки

Фильтрация и сортировка таблиц

Сортировка таблицы

Чтобы отсортировать таблицу в SQL-консоли, откройте таблицу и нажмите кнопку «Sort» на панели инструментов. Откроется меню, в котором вы сможете настроить сортировку. Выберите столбец для сортировки и задайте порядок (по возрастанию или по убыванию). Нажмите «Apply» или Enter, чтобы отсортировать таблицу.

Диалог сортировки с настройкой сортировки по убыванию для столбца

SQL-консоль также позволяет добавить к таблице несколько сортировок. Нажмите кнопку «Sort» ещё раз, чтобы добавить ещё одну сортировку. Примечание: сортировки применяются в том порядке, в котором они отображаются в панели сортировки (сверху вниз). Чтобы удалить сортировку, нажмите кнопку «x» рядом с ней.

Фильтрация таблицы

Чтобы отфильтровать таблицу в SQL-консоли, откройте таблицу и нажмите кнопку «Filter». Аналогично сортировке, откроется меню, в котором вы сможете настроить фильтр. Выберите столбец для фильтрации и задайте необходимые критерии. SQL-консоль автоматически предлагает варианты фильтрации, соответствующие типу данных в столбце.

Диалог фильтрации с настройкой фильтра для radio-столбца со значением GSM

Когда вы будете довольны настройкой фильтра, нажмите «Apply», чтобы отфильтровать данные. Вы также можете добавить дополнительные фильтры, как показано ниже.

Диалог, показывающий, как добавить дополнительный фильтр по диапазону со значением больше 2000

Аналогично сортировке, нажмите кнопку «x» рядом с фильтром, чтобы удалить его.

Одновременная фильтрация и сортировка

SQL-консоль позволяет одновременно фильтровать и сортировать таблицу. Для этого добавьте все необходимые фильтры и сортировки, используя шаги, описанные выше, и нажмите кнопку «Apply».

Интерфейс с одновременным применением фильтрации и сортировки

Создание запроса из фильтров и сортировок

SQL-консоль может преобразовать ваши сортировки и фильтры непосредственно в запрос одним нажатием. Просто нажмите кнопку «Create Query» на панели инструментов, используя нужные параметры сортировки и фильтрации. После нажатия «Create query» откроется новая вкладка с запросом, предварительно заполненная SQL-командой, соответствующей данным, отображаемым в текущем представлении таблицы.

Интерфейс с кнопкой Create Query, которая генерирует SQL из фильтров и сортировок
Примечание

Фильтры и сортировки не являются обязательными при использовании функции «Create Query».

Вы можете узнать больше о выполнении запросов в SQL-консоли, прочитав (link) документацию по запросам.

Создание и выполнение запроса

Создание запроса

Существует два способа создать новый запрос в SQL-консоли.

  • Нажмите кнопку «+» на панели вкладок
  • Выберите кнопку «New Query» в списке запросов на левой боковой панели
Интерфейс, показывающий, как создать новый запрос с помощью кнопки + или кнопки New Query

Выполнение запроса

Чтобы выполнить запрос, введите SQL-команду (или команды) в SQL Editor и нажмите кнопку «Run» или используйте сочетание клавиш cmd / ctrl + enter. Чтобы писать и выполнять несколько команд последовательно, не забудьте добавить точку с запятой после каждой команды.

Параметры выполнения запроса
По умолчанию нажатие кнопки «Run» выполнит все команды, содержащиеся в SQL Editor. SQL-консоль поддерживает ещё два варианта выполнения запроса:

  • Выполнить выделенную команду (команды)
  • Выполнить команду под курсором

Чтобы выполнить выделенную команду (или команды), выделите нужную команду или последовательность команд и нажмите кнопку «Run» (или используйте сочетание клавиш cmd / ctrl + enter). Вы также можете выбрать пункт «Run selected» в контекстном меню SQL Editor (открывается щелчком правой кнопкой мыши в любой части редактора), когда есть выделение.

Интерфейс, показывающий, как выполнить выделенную часть SQL-запроса

Выполнить команду в позиции текущего курсора можно двумя способами:

  • Выберите пункт «At Cursor» в расширенном меню параметров выполнения (или используйте соответствующее сочетание клавиш cmd / ctrl + shift + enter)
Пункт Run at cursor в расширенном меню параметров выполнения
  • Выберите пункт «Run at cursor» в контекстном меню SQL Editor
Пункт Run at cursor в контекстном меню SQL Editor
Примечание

Команда в позиции курсора при выполнении кратковременно подсвечивается жёлтым цветом.

Отмена запроса

Во время выполнения запроса кнопка «Run» на панели инструментов Query Editor будет заменена на кнопку «Cancel». Просто нажмите эту кнопку или клавишу Esc, чтобы отменить запрос. Примечание: любые результаты, которые уже были возвращены, сохранятся после отмены.

Кнопка Cancel, появляющаяся во время выполнения запроса

Сохранение запроса

Если запрос ранее не был переименован, по умолчанию он называется «Untitled Query». Нажмите на имя запроса, чтобы изменить его. Переименование запроса приведёт к его сохранению.

Интерфейс, показывающий, как переименовать запрос с названия Untitled Query

Вы также можете использовать кнопку сохранения или сочетание клавиш cmd / ctrl + s для сохранения запроса.

Кнопка сохранени�я на панели инструментов редактора запросов

Использование GenAI для управления запросами

Эта функция позволяет пользователям писать запросы в виде вопросов на естественном языке, а консоль запросов будет создавать SQL‑запросы на основе контекста доступных таблиц. GenAI также может помогать пользователям отлаживать их запросы.

Для получения дополнительной информации о GenAI см. запись в блоге Announcing GenAI powered query suggestions in ClickHouse Cloud blog post.

Настройка таблицы

Давайте импортируем пример набора данных UK Price Paid и используем его для создания некоторых запросов GenAI.

  1. Откройте сервис ClickHouse Cloud.

  2. Создайте новый запрос, нажав на значок +.

  3. Вставьте и выполните следующий код:

    CREATE TABLE uk_price_paid
    (
        price UInt32,
        date Date,
        postcode1 LowCardinality(String),
        postcode2 LowCardinality(String),
        type Enum8('terraced' = 1, 'semi-detached' = 2, 'detached' = 3, 'flat' = 4, 'other' = 0),
        is_new UInt8,
        duration Enum8('freehold' = 1, 'leasehold' = 2, 'unknown' = 0),
        addr1 String,
        addr2 String,
        street LowCardinality(String),
        locality LowCardinality(String),
        town LowCardinality(String),
        district LowCardinality(String),
        county LowCardinality(String)
    )
    ENGINE = MergeTree
    ORDER BY (postcode1, postcode2, addr1, addr2);
    

    Выполнение этого запроса должно занять около 1 секунды. После завершения у вас должна появиться пустая таблица с именем uk_price_paid.

  4. Создайте новый запрос и вставьте следующий запрос:

    INSERT INTO uk_price_paid
    WITH
       splitByChar(' ', postcode) AS p
    SELECT
        toUInt32(price_string) AS price,
        parseDateTimeBestEffortUS(time) AS date,
        p[1] AS postcode1,
        p[2] AS postcode2,
        transform(a, ['T', 'S', 'D', 'F', 'O'], ['terraced', 'semi-detached', 'detached', 'flat', 'other']) AS type,
        b = 'Y' AS is_new,
        transform(c, ['F', 'L', 'U'], ['freehold', 'leasehold', 'unknown']) AS duration,
        addr1,
        addr2,
        street,
        locality,
        town,
        district,
        county
    FROM url(
        'http://prod.publicdata.landregistry.gov.uk.s3-website-eu-west-1.amazonaws.com/pp-complete.csv',
        'CSV',
        'uuid_string String,
        price_string String,
        time String,
        postcode String,
        a String,
        b String,
        c String,
        addr1 String,
        addr2 String,
        street String,
        locality String,
        town String,
        district String,
        county String,
        d String,
        e String'
    ) SETTINGS max_http_get_redirects=10;
    

Этот запрос загружает набор данных с сайта gov.uk. Размер файла около 4 ГБ, поэтому выполнение запроса займет несколько минут. После того как ClickHouse обработает запрос, весь набор данных будет находиться в таблице uk_price_paid.

Создание запроса

Давайте создадим запрос, используя естественный язык.

  1. Выберите таблицу uk_price_paid, затем нажмите Create Query.

  2. Нажмите Generate SQL. Вас могут попросить подтвердить, что ваши запросы отправляются в ChatGPT. Чтобы продолжить, необходимо выбрать I agree.

  3. Теперь вы можете использовать это поле, чтобы вводить запрос на естественном языке и позволить ChatGPT преобразовать его в SQL‑запрос. В этом примере мы введем:

    Покажи мне общую сумму цен и общее количество всех транзакций uk_price_paid по годам.

  4. Консоль сгенерирует нужный нам запрос и отобразит его в новой вкладке. В нашем примере GenAI создал следующий запрос:

    -- Покажи мне общую сумму цен и общее количество всех транзакций uk_price_paid по годам.
    SELECT year(date), sum(price) as total_price, Count(*) as total_transactions
    FROM uk_price_paid
    GROUP BY year(date)
    
  5. После того как вы убедились, что запрос корректен, нажмите Run для его выполнения.

Отладка

Теперь давайте протестируем возможности GenAI по отладке запросов.

  1. Создайте новый запрос, нажав на значок +, и вставьте следующий код:
   -- Показать общую стоимость и общее количество всех транзакций uk_price_paid по годам.
   SELECT year(date), sum(pricee) as total_price, Count(*) as total_transactions
   FROM uk_price_paid
   GROUP BY year(date)
  1. Нажмите Run. Запрос завершится с ошибкой, так как мы пытаемся получить значения из pricee вместо price.
  2. Нажмите Fix Query.
  3. GenAI попытается исправить запрос. В данном случае он заменил pricee на price, а также определил, что toYear — более подходящая функция в этом сценарии.
  4. Выберите Apply, чтобы добавить предложенные изменения в запрос, и нажмите Run.

Помните, что GenAI — экспериментальная функция. Будьте осторожны при выполнении запросов, сгенерированных GenAI, для любых наборов данных.

Расширенные возможности выполнения запросов

Поиск по результатам запроса

После выполнения запроса вы можете быстро выполнить поиск по полученному набору результатов, используя поле поиска в панели результатов. Эта функция помогает просматривать результаты дополнительного условия WHERE или просто проверять, что в набор результатов включены определённые данные. После ввода значения в поле поиска панель результатов обновится и вернёт записи, содержащие вхождение, совпадающее с введённым значением. В этом примере мы найдём все упоминания breakfast в таблице hackernews среди комментариев, которые содержат ClickHouse (без учёта регистра):

Поиск данных Hacker News

Примечание: Будут возвращены любые поля, содержащие введённое значение. Например, третья запись на приведённом выше скриншоте не содержит 'breakfast' в поле by, но содержит его в поле text:

Совпадение в тексте сообщения

Настройка параметров разбивки на страницы

По умолчанию панель результатов запроса отображает все записи на одной странице. Для больших наборов результатов может быть удобнее включить постраничный просмотр. Это можно сделать с помощью селектора разбивки на страницы в правом нижнем углу панели результатов:

Параметры разбивки на страницы

После выбора размера страницы к набору результатов сразу будет применена разбивка на страницы, а в центральной части нижней панели результатов появятся элементы навигации.

Навигация по страницам

Экспорт данных результатов запроса

Наборы результатов запроса можно легко экспортировать в формат CSV непосредственно из SQL-консоли. Для этого откройте меню ••• в правой части панели инструментов области результатов и выберите «Download as CSV».

Скачать как CSV

Визуализация данных запроса

Некоторые данные проще интерпретировать в виде диаграмм. Вы можете быстро создавать визуализации на основе результатов запросов прямо из SQL-консоли всего за несколько кликов. В качестве примера мы используем запрос, который вычисляет еженедельную статистику поездок на такси в Нью-Йорке:

SELECT
   toStartOfWeek(pickup_datetime) AS week,
   sum(total_amount) AS fare_total,
   sum(trip_distance) AS distance_total,
   count(*) AS trip_total
FROM
   nyc_taxi
GROUP BY
   1
ORDER BY
   1 ASC
Табличные результаты запроса

Без визуализации эти результаты трудно интерпретировать. Преобразуем их в график.

Создание графиков

Чтобы начать построение визуализации, выберите параметр «Chart» на панели инструментов области результатов запроса. Появится панель настройки графика:

Переключение с запроса на график

Мы начнём с создания простого столбчатого графика, показывающего trip_total по week. Для этого перетащим поле week на ось x, а поле trip_total — на ось y:

Общая стоимость поездки по неделям

Большинство типов графиков поддерживают несколько полей на числовых осях. Для демонстрации перетащим поле fare_total на ось y:

Столбчатый график

Настройка графиков

SQL-консоль поддерживает десять типов графиков, которые можно выбрать в селекторе типа графика на панели настройки графика. Например, мы можем легко изменить предыдущий тип графика со столбчатого (Bar) на областной (Area):

Изменение столбчатого графика на областной

Заголовки графиков соответствуют имени запроса, который предоставляет данные. Изменение имени запроса приведёт к обновлению заголовка графика:

Обновление имени запроса

Ряд более продвинутых характеристик графика также можно настроить в разделе «Advanced» панели настройки графика. Для начала изменим следующие параметры:

  • Подзаголовок
  • Заголовки осей
  • Ориентация подписей для оси x

Наш график будет обновлён соответствующим образом:

Обновление подзаголовка и других параметров

В некоторых случаях может потребоваться настроить масштабы осей для каждого поля независимо. Это также можно сделать в разделе «Advanced» панели настройки графика, указав минимальные и максимальные значения для диапазона оси. В качестве примера: приведённый выше график выглядит хорошо, но для демонстрации корреляции между полями trip_total и fare_total диапазоны осей требуют некоторой корректировки:

Настройка масштаба осей

Совместное использование запросов

Консоль SQL позволяет делиться запросами с вашей командой. Когда запрос становится общим, все участники команды могут просматривать и изменять его. Общие запросы — отличный способ совместной работы с вашей командой.

Чтобы поделиться запросом, нажмите кнопку «Share» на панели инструментов запроса.

Кнопка «Share» на панели инструментов запроса

Откроется диалоговое окно, в котором вы можете поделиться запросом со всеми участниками команды. Если у вас несколько команд, вы можете выбрать, с какой командой поделиться запросом.

Диалоговое окно редактирования доступа к общему запросу
Интерфейс добавления команды к общему запросу
Интерфейс редактирования доступа участника к общему запросу

В некоторых случаях может потребоваться настроить масштаб осей для каждого поля отдельно. Это также можно сделать в разделе «Advanced» панели настроек графика, указав минимальные и максимальные значения для диапазона оси. Например, приведённый выше график выглядит хорошо, но для демонстрации корреляции между полями trip_total и fare_total диапазоны осей нужно немного скорректировать:

Раздел «Shared with me» в списке запросов