Ключ и поля словаря
Секция <structure>
описывает ключ словаря и поля, доступные для запросов.
Описание в формате XML:
Атрибуты описываются элементами:
<id>
— столбец с ключом.<attribute>
— столбец данных. Можно задать несколько атрибутов.
Создание словаря запросом:
Атрибуты задаются в теле запроса:
PRIMARY KEY
— столбец с ключомAttrName AttrType
— столбец данных. Можно задать несколько столбцов.
Ключ
ClickHouse поддерживает следующие виды ключей:
- Числовой ключ.
UInt64
. Описывается в теге<id>
или ключевым словомPRIMARY KEY
. - Составной ключ. Набор значений разного типа. Описывается в теге
<key>
или ключевым словомPRIMARY KEY
.
Структура может содержать либо <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))
.
Атрибуты
Пример конфигурации:
или
Поля конфигурации:
Тег | Описание | Обязательный |
---|---|---|
name | Имя столбца. | Да |
type | Тип данных ClickHouse: UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32, Float64, UUID, Decimal32, Decimal64, Decimal128, Decimal256, String, Array. ClickHouse пытается привести значение из словаря к заданному типу данных. Например, в случае MySQL, в таблице-источнике поле может быть TEXT , VARCHAR , BLOB , но загружено может быть как String . Nullable в настоящее время поддерживается для словарей Flat, Hashed, ComplexKeyHashed, Direct, ComplexKeyDirect, RangeHashed, Polygon, Cache, ComplexKeyCache, SSDCache, SSDComplexKeyCache. Для словарей IPTrie Nullable -типы не поддерживаются. | Да |
null_value | Значение по умолчанию для несуществующего элемента. В примере это пустая строка. Значение NULL можно указывать только для типов Nullable (см. предыдущую строку с описанием типов). | Да |
expression | Выражение, которое ClickHouse выполняет со значением. Выражением может быть имя столбца в удаленной SQL базе. Таким образом, вы можете использовать его для создания псевдонима удаленного столбца. Значение по умолчанию: нет выражения. | Нет |
hierarchical | Если true , то атрибут содержит ключ предка для текущего элемента. Смотрите Иерархические словари.Значение по умолчанию: false . | Нет |
is_object_id | Признак того, что запрос выполняется к документу MongoDB по ObjectID .Значение по умолчанию: false . | Нет |
Смотрите также