Атрибуты словаря
Если вы используете словари с ClickHouse Cloud, используйте DDL-запрос для их создания и создавайте словари от имени пользователя default.
Также проверьте список поддерживаемых источников словарей в руководстве по совместимости с ClickHouse Cloud.
Секция structure описывает ключ словаря и поля, доступные для запросов.
Описание в формате XML:
Атрибуты задаются в элементах:
<id>— ключевой столбец<attribute>— столбец данных: атрибутов может быть несколько.
DDL-запрос:
Атрибуты описываются в теле запроса:
PRIMARY KEY— ключевой столбецAttrName AttrType— столбец данных. Атрибутов может быть несколько.
Ключ
ClickHouse поддерживает следующие типы ключей:
- Числовой ключ.
UInt64. Задаётся в теге<id>или с помощью ключевого словаPRIMARY KEY. - Составной ключ. Набор значений разных типов. Задаётся в теге
<key>или с помощью ключевого словаPRIMARY KEY.
XML-структура может содержать либо <id>, либо <key>. DDL-запрос должен содержать ровно один PRIMARY KEY.
Нельзя описывать ключ как атрибут.
Числовой ключ
Тип: UInt64.
Пример конфигурации:
Поля конфигурации:
name– имя столбца, содержащего ключи.
Для DDL-запроса:
PRIMARY KEY– Имя столбца, содержащего ключи.
Составной ключ
Ключ может быть tuple из полей любых типов. layout в этом случае должен быть complex_key_hashed или complex_key_cache.
Составной ключ может состоять из одного элемента. Например, это позволяет использовать строку в качестве ключа.
Структура ключа задаётся в элементе <key>. Поля ключа указываются в том же формате, что и атрибуты словаря. Пример:
или
В запросе к функции dictGet* в качестве ключа передается кортеж. Пример: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2)).
Атрибуты
Пример конфигурации:
или
Параметры конфигурации:
| Tag | Description | Required |
|---|---|---|
name | Имя столбца. | Yes |
type | Тип данных ClickHouse: UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32, Float64, UUID, Decimal32, Decimal64, Decimal128, Decimal256,Date, Date32, DateTime, DateTime64, String, Array. ClickHouse пытается привести значение из словаря к указанному типу данных. Например, для MySQL поле в исходной таблице MySQL может иметь тип TEXT, VARCHAR или BLOB, но в ClickHouse оно может быть загружено как String.Nullable в настоящее время поддерживается для словарей Flat, Hashed, ComplexKeyHashed, Direct, ComplexKeyDirect, RangeHashed, Polygon, Cache, ComplexKeyCache, SSDCache, SSDComplexKeyCache. В словарях IPTrie типы Nullable не поддерживаются. | Yes |
null_value | Значение по умолчанию для несуществующего элемента. В примере это пустая строка. Значение NULL может использоваться только для типов Nullable (см. предыдущую строку с описанием типов). | Yes |
expression | Выражение, которое ClickHouse выполняет над значением. Выражением может быть имя столбца в удалённой SQL базе данных. Таким образом, вы можете использовать его для создания псевдонима для удалённого столбца. Значение по умолчанию: выражение отсутствует. | No |
hierarchical | Если true, атрибут содержит значение родительского ключа для текущего ключа. См. Иерархические словари.Значение по умолчанию: false. | No |
injective | Флаг, который показывает, является ли отображение id -> attribute инъективным.Если true, ClickHouse может автоматически размещать запросы к инъективным словарям сразу после предложения GROUP BY. Обычно это значительно уменьшает количество таких запросов.Значение по умолчанию: false. | No |
is_object_id | Флаг, который показывает, выполняется ли запрос для документа MongoDB по ObjectID.Значение по умолчанию: false. |