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

SQL Console

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

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

Работа с таблицами

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

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

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

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

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

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

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

Table view showing data that can be selected and copied

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

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

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

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

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

Чтобы отсортировать таблицу в 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 console поддерживает два других варианта выполнения запроса:

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

Чтобы выполнить выделенную команду (команды), выделите нужную команду или последовательность команд и нажмите кнопку "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. Вас могут попросить подтвердить, что ваши запросы отправляются в Chat-GPT. Чтобы продолжить, необходимо выбрать I agree.

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

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

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

    -- Show me the total price and total number of all uk_price_paid transactions by year.
    SELECT year(date), sum(price) as total_price, Count(*) as total_transactions
    FROM uk_price_paid
    GROUP BY year(date)
    
  5. После того как вы убедились, что запрос корректен, нажмите Run, чтобы выполнить его.

Отладка

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

  1. Создайте новый запрос, нажав на значок +, и вставьте следующий код:

    -- Show me the total price and total number of all uk_price_paid transactions by year.
    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'.

Download as 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
Табличные результаты запроса

Без визуализации эти результаты сложно интерпретировать. Давайте превратим их в диаграмму.

Создание диаграмм

Чтобы приступить к построению визуализации, выберите вариант «Диаграмма» на панели инструментов области результатов запроса. Откроется панель настройки диаграммы:

Переход от запроса к диаграмме

Начнём с создания простой столбчатой диаграммы, отображающей trip_total по week. Для этого перетащите поле week на ось X, а поле trip_total — на ось Y:

Суммарная стоимость поездок по неделям

Большинство типов диаграмм поддерживают несколько полей на числовых осях. Чтобы продемонстрировать это, перетащите поле fare_total на ось Y:

Столбчатая диаграмма

Настройка диаграмм

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

Change from Bar chart to Area

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

Update query name

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

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

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

Update subtitle etc.

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

Adjust axis scale

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

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

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

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

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

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

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

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