Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Иерархические словари

Иерархические словари

ClickHouse поддерживает иерархические словари с числовым ключом.

Рассмотрим следующую иерархию:

0 (Common parent)

├── 1 (United States of America)
│   │
│   └── 2 (California)
│       │
│       └── 3 (San Francisco)

└── 4 (Great Britain)

    └── 5 (London)

Эта иерархия может быть представлена в виде следующей таблицы словаря.

region_id parent_region region_name
1 0 United States of America
2 1 California
3 2 San Francisco
4 0 Great Britain
5 4 London

Эта таблица содержит столбец parent_region, в котором хранится ключ ближайшего родительского элемента.

ClickHouse поддерживает иерархическое свойство для атрибутов внешних словарей. Это свойство позволяет настроить иерархический словарь так, как описано выше.

Функция dictGetHierarchy позволяет получить цепочку родительских элементов. Функция dictGetRoot возвращает только самого верхнего предка (корень) элемента.

Для нашего примера структура словаря может быть следующей:

CREATE DICTIONARY regions_dict
(
    region_id UInt64,
    parent_region UInt64 DEFAULT 0 HIERARCHICAL,
    region_name String DEFAULT ''
)
PRIMARY KEY region_id
SOURCE(...)
LAYOUT(HASHED())
LIFETIME(3600);

Navigation