Перейти к основному содержимому
Перейти к основному содержимому

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

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

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

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

0 (Common parent)
│
├── 1 (Russia)
│   │
│   └── 2 (Moscow)
│       │
│       └── 3 (Center)
│
└── 4 (Great Britain)
    │
    └── 5 (London)

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

region_idparent_regionregion_name
10Russia
21Moscow
32Center
40Great Britain
54London

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

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

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

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

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);