Работа с базами данных Managed Service for ClickHouse®
В этом разделе описана основная информация про работу с Managed Service for ClickHouse®.
Для работы с базой данных Managed Service for ClickHouse® необходимо выполнить следующие шаги:
- Создать соединение, содержащее реквизиты для подключения к базе данных.
- Выполнить запрос к базе данных.
Пример запроса, выполняющего чтение данных из Managed Service for ClickHouse®:
SELECT * FROM clickhouse_mdb_connection.my_table
где:
clickhouse_mdb_connection
— название созданного соединения с базой данных.my_table
— имя таблицы в базе данных.
Настройка соединения
Чтобы создать соединение с Managed Service for ClickHouse®:
-
В консоли управления
выберите каталог, в котором нужно создать соединение. -
В списке сервисов выберите Yandex Query.
-
На панели слева перейдите на вкладку Соединения.
-
Нажмите кнопку
Создать. -
Укажите параметры соединения:
-
В блоке Общие параметры:
- Имя — название соединения с Managed Service for ClickHouse®.
- Тип —
Managed Service for ClickHouse
.
-
В блоке Параметры типа соединения:
-
Кластер — выберите существующий кластер Managed Service for ClickHouse® или создайте новый.
-
Сервисный аккаунт — выберите существующий сервисный аккаунт Managed Service for ClickHouse® или создайте новый с ролью
managed-clickhouse.viewer
, от имени которого будет выполняться подключение к кластерамManaged Service for ClickHouse®
.Чтобы использовать сервисный аккаунт, пользователю нужна роль
iam.serviceAccounts.user
. -
База данных — выберите базу данных, которая будет использоваться при работе с кластером ClickHouse®.
-
Логин — имя пользователя, которое будет использоваться для подключения к базам данных ClickHouse®.
-
Пароль — пароль пользователя, который будет использоваться для подключения к базам данных ClickHouse®.
-
-
-
Нажмите кнопку Создать.
Сервисный аккаунт необходим для обнаружения точек подключения к кластерам Managed Service for ClickHouse® внутри Yandex Cloud, для работы с данными логин и пароль пользователя задаются отдельно.
Важно
Необходимо предварительно разрешить сетевой доступ от Yandex Query до кластеров Managed Service for ClickHouse®. Для этого в настройках базы данных, к которой осуществляется подключение, установите пункт Доступ из Yandex Query.
Синтаксис запросов
Для работы с ClickHouse® используется следующая форма SQL-запроса:
SELECT * FROM <соединение>.<имя_таблицы>
где:
<соединение>
— название созданного соединения с базой данных.<имя_таблицы>
— имя таблицы в базе данных.
Ограничения
При работе с кластерами ClickHouse® существует ряд ограничений.
Ограничения:
-
Внешние источники доступны только для чтения данных через запросы
SELECT
. Запросы, модифицирующие таблицы во внешних источниках, сервисом Yandex Query в настоящее время не поддерживаются. - В YQ используется система типов
Yandex Managed Service for YDB. Однако диапазоны допустимых значений для типов, использующихся в YDB при работе с датой и временем (Date
,Datetime
,Timestamp
), зачастую оказываются недостаточно широкими для того, чтобы вместить значения соответствующих типов ClickHouse® (Date
,Date32
,Datetime
,Datetime64
).
В связи с этим значения даты и времени, прочитанные из ClickHouse®, возвращаются YQ как обычные строки (типUtf8
для обычных колонок или типOptional<Utf8>
для nullable колонок) в формате ISO-8601 .
Пушдаун фильтров
Yandex Query умеет передавать обработку частей запросов в систему-источник данных. Это означает, что фильтрующие выражения передаются сквозь Yandex Query непосредственно в базу данных для обработки, обычно это условия запросов, указанных в WHERE
. Такой способ обработки называется пушдаун фильтров
.
Пушдаун фильтров возможен при использовании:
Описание | Пример |
---|---|
Фильтров вида IS NULL /IS NOT NULL |
WHERE column1 IS NULL или WHERE column1 IS NOT NULL |
Логических условий OR , NOT , AND . |
WHERE column IS NULL OR column2 is NOT NULL . |
Условий сравнения = , <> , < , <= , > , >= c другими колонками или константами. |
WHERE column3 > column4 OR column5 <= 10 . |
Поддерживаемые типы данных для пушдауна фильтров:
Тип данных Yandex Query |
---|
Bool |
Int8 |
Uint8 |
Int16 |
Uint16 |
Int32 |
Uint32 |
Int64 |
Uint64 |
Float |
Double |
Поддерживаемые типы данных
По умолчанию в ClickHouse® колонки физически не могут содержать значение NULL
, однако пользователь имеет возможность создать таблицу с колонками опциональных, или nullable
Ниже приведены таблицы соответствия типов ClickHouse® и Yandex Query. Все остальные типы данных, за исключением перечисленных, не поддерживаются.
Примитивные типы данных
Тип данных ClickHouse® | Тип данных Yandex Query | Примечания |
---|---|---|
Bool |
Bool |
|
Int8 |
Int8 |
|
UInt8 |
Uint8 |
|
Int16 |
Int16 |
|
UInt16 |
Uint16 |
|
Int32 |
Int32 |
|
UInt32 |
Uint32 |
|
Int64 |
Int64 |
|
UInt64 |
Uint64 |
|
Float32 |
Float |
|
Float64 |
Double |
|
Date |
Utf8 |
|
Date32 |
Utf8 |
|
DateTime |
Utf8 |
|
DateTime64 |
Utf8 |
|
String |
String |
|
FixedString |
String |
Нулевые байты FixedString переносятся в String без изменений. |
Опциональные типы данных
Тип данных ClickHouse® | Тип данных Yandex Query | Примечания |
---|---|---|
Nullable(Bool) |
Optional<Bool> |
|
Nullable(Int8) |
Optional<Int8> |
|
Nullable(UInt8) |
Optional<Uint8> |
|
Nullable(Int16) |
Optional<Int16> |
|
Nullable(UInt16) |
Optional<Uint16> |
|
Nullable(Int32) |
Optional<Int32> |
|
Nullable(UInt32) |
Optional<Uint32> |
|
Nullable(Int64) |
Optional<Int64> |
|
Nullable(UInt64) |
Optional<Uint64> |
|
Nullable(Float32) |
Optional<Float> |
|
Nullable(Float64) |
Optional<Double> |
|
Nullable(Date) |
Optional<Utf8> |
|
Nullable(Date32) |
Optional<Utf8> |
|
Nullable(DateTime) |
Optional<Utf8> |
|
Nullable(DateTime64) |
Optional<Utf8> |
|
Nullable(String) |
Optional<String> |
|
Nullable(FixedString) |
Optional<String> |
Нулевые байты FixedString переносятся в String без изменений. |
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc