* Additional .gitignore entries * Merge a bunch of small articles about system tables into single one * Merge a bunch of small articles about formats into single one * Adapt table with formats to English docs too * Add SPb meetup link to main page * Move Utilities out of top level of docs (the location is probably not yet final) + translate couple articles * Merge MacOS.md into build_osx.md * Move Data types higher in ToC * Publish changelog on website alongside documentation * Few fixes for en/table_engines/file.md * Use smaller header sizes in changelogs * Group up table engines inside ToC * Move table engines out of top level too * Specificy in ToC that query language is SQL based. Thats a bit excessive, but catches eye. * Move stuff that is part of query language into respective folder * Move table functions lower in ToC * Lost redirects.txt update * Do not rely on comments in yaml + fix few ru titles * Extract major parts of queries.md into separate articles * queries.md has been supposed to be removed * Fix weird translation * Fix a bunch of links * There is only table of contents left * "Query language" is actually part of SQL abbreviation * Change filename in README.md too * fix mistype * s/formats\/interfaces/interfaces\/formats/g * Remove extra clarification from header as it was too verbose, probably making it a bit more confusing * Empty article was supposed to be hidden * At least change incorrect title * Move special links to the bottom of nav and slightly highlight them * Skip hidden pages in bottom navigation too * Make front page of documentation to be part of Introduction * Make tables in introduction somewhat readable + move abbreviation definitions earlier * Some introduction text refactoring * Some docs introduction refactoring * Use admonitions instead of divs * Additional .gitignore * Treat .gif as images too * Clarify ToC item
4.5 KiB
Ключ и поля словаря
Секция <structure>
описывает ключ словаря и поля, доступные для запросов.
Общий вид структуры:
<dictionary>
<structure>
<id>
<name>Id</name>
</id>
<attribute>
<!-- Attribute parameters -->
</attribute>
...
</structure>
</dictionary>
В структуре описываются столбцы:
<id>
- ключевой столбец.<attribute>
- столбец данных. Столбцов может быть много.
Ключ
ClickHouse поддерживает следующие виды ключей:
- Числовой ключ. Формат UInt64. Описывается в теге
<id>
. - Составной ключ. Набор значений разного типа. Описывается в теге
<key>
.
Структура может содержать либо <id>
либо <key>
.
!!! attention "Обратите внимание" Ключ не надо дополнительно описывать в атрибутах.
Числовой ключ
Формат: UInt64
.
Пример конфигурации:
<id>
<name>Id</name>
</id>
Поля конфигурации:
- name - имя столбца с ключами.
Составной ключ
Ключем может быть кортеж (tuple
) из полей произвольных типов. layout в этом случае должен быть complex_key_hashed
или complex_key_cache
.
!!! tip "Совет" Cоставной ключ может состоять из одного элемента. Это даёт возможность использовать в качестве ключа, например, строку.
Структура ключа задаётся в элементе <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>Type</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
- Тип столбца. Задает способ интерпретации данных в источнике. Например, в случае MySQL, в таблице-источнике поле может бытьTEXT
,VARCHAR
,BLOB
, но загружено может быть какString
.null_value
- Значение по умолчанию для несуществующего элемента. В примере - пустая строка.expression
- Атрибут может быть выражением. Тег не обязательный.hierarchical
- Поддержка иерархии. Отображение в идентификатор родителя. По умолчанию,false
.injective
- Признак инъективности отображенияid -> attribute
. Еслиtrue
, то можно оптимизироватьGROUP BY
. По умолчанию,false
.is_object_id
- Признак того, что запрос выполняется к документу MongoDB поObjectID
.