Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

階層型Dictionary

階層型Dictionary

ClickHouse は、数値キー を持つ階層型Dictionaryをサポートしています。

以下の階層構造を見てください。

0 (Common parent)

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

└── 4 (Great Britain)

    └── 5 (London)

この階層は、次の Dictionary テーブルで表せます。

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 は、外部 Dictionary 属性の階層プロパティをサポートしています。このプロパティを使うと、前述のような階層型 Dictionary を設定できます。

dictGetHierarchy 関数を使うと、要素の親チェーンを取得できます。dictGetRoot 関数は、要素の最上位の祖先 (ルート) のみを返します。

この例では、Dictionary の構造は次のようになります。

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