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

SQL Console

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

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

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

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

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

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

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

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

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

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

Представление таблицы с данными, которые можно выделять и копировать

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

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

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

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

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

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

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

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

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

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

Диалог фильтрации с настройкой фильтрации по столбцу с типом radio со значением, равным GSM

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

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

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

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

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

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

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

SQL-консоль может преобразовать ваши сортировки и фильтры непосредственно в 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.

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

Импортируем пример набора данных 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)
    
  2. Нажмите Run. Запрос завершится с ошибкой, потому что мы пытаемся получить значения из pricee вместо price.

  3. Нажмите Fix Query.

  4. GenAI попытается исправить запрос. В этом случае он заменит pricee на price, а также определит, что в этой ситуации лучше использовать функцию toYear.

  5. Выберите 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:

Изменение диаграммы Bar на Area

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

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

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

  • Subtitle
  • Axis titles
  • Ориентация подписей для оси x

Диаграмма будет обновлена соответствующим образом:

Обновление подзаголовка и др.

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

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

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

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

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

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

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

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

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

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