5.6 KiB
Ключ и поля словаря
Секция <structure>
описывает ключ словаря и поля, доступные для запросов.
Общий вид структуры:
<dictionary>
<structure>
<id>
<name>Id</name>
</id>
<attribute>
<!-- Attribute parameters -->
</attribute>
...
</structure>
</dictionary>
В структуре описываются столбцы:
<id>
— ключевой столбец.<attribute>
— столбец данных. Столбцов может быть много.
Ключ
ClickHouse поддерживает следующие виды ключей:
- Числовой ключ. UInt64. Описывается в теге
<id>
. - Составной ключ. Набор значений разного типа. Описывается в теге
<key>
.
Структура может содержать либо <id>
либо <key>
.
!!! warning "Обратите внимание" Ключ не надо дополнительно описывать в атрибутах.
Числовой ключ
Тип: UInt64
.
Пример конфигурации:
<id>
<name>Id</name>
</id>
Поля конфигурации:
name
— имя столбца с ключами.
Составной ключ
Ключом может быть кортеж (tuple
) из полей произвольных типов. В этом случае layout должен быть complex_key_hashed
или complex_key_cache
.
!!! tip "Совет" Составной ключ может состоять из одного элемента. Это даёт возможность использовать в качестве ключа, например, строку.
Структура ключа задаётся в элементе <key>
. Поля ключа задаются в том же формате, что и атрибуты словаря. Пример:
<structure>
<key>
<attribute>
<name>field1</name>
<type>String</type>
</attribute>
<attribute>
<name>field2</name>
<type>UInt32</type>
</attribute>
...
</key>
...
При запросе в функции dictGet*
в качестве ключа передаётся кортеж. Пример: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2))
.
Атрибуты
Пример конфигурации:
<structure>
...
<attribute>
<name>Name</name>
<type>ClickHouseDataType</type>
<null_value></null_value>
<expression>rand64()</expression>
<hierarchical>true</hierarchical>
<injective>true</injective>
<is_object_id>true</is_object_id>
</attribute>
</structure>
Поля конфигурации:
Тег | Описание | Обязательный |
---|---|---|
name |
Имя столбца. | Да |
type |
Тип данных ClickHouse. ClickHouse пытается привести значение из словаря к заданному типу данных. Например, в случае MySQL, в таблице-источнике поле может быть TEXT , VARCHAR , BLOB , но загружено может быть как String . Nullable не поддерживается. |
Да |
null_value |
Значение по умолчанию для несуществующего элемента. В примере это пустая строка. Нельзя указать значение NULL . |
Да |
expression |
Выражение, которое ClickHouse выполняет со значением. Выражением может быть имя столбца в удаленной SQL базе. Таким образом, вы можете использовать его для создания псевдонима удаленного столбца. Значение по умолчанию: нет выражения. |
Нет |
hierarchical |
Поддержка иерархии. Отображение в идентификатор родителя. Значение по умолчанию: false . |
Нет |
injective |
Признак инъективности отображения id -> attribute . Если true , то обращения к словарям с включенной инъективностью могут быть автоматически переставлены ClickHouse за стадию GROUP BY , что как правило существенно сокращает их количество.Значение по умолчанию: false . |
Нет |
is_object_id |
Признак того, что запрос выполняется к документу MongoDB по ObjectID .Значение по умолчанию: false . |
Нет |