質問
文字列キーと文字列値を使って、MergeTree テーブルをソースにした ClickHouse Dictionary を作成する方法
回答
- Dictionary用のソーステーブルを作成します
CREATE TABLE db1.table1_dict_source
(
id UInt32,
email String,
name String
)
ENGINE = MergeTree()
ORDER BY id;- 行を挿入する
INSERT INTO db1.table1_dict_source
(id, email, name)
VALUES
(1, 'me@domain.com', 'me'),
(2, 'you@domain.com', 'you');- キーと値の両方が String の Dictionary を作成する
CREATE DICTIONARY db1.table1_dict
(
email String,
name String
)
PRIMARY KEY email
SOURCE(
CLICKHOUSE(
TABLE 'table1_dict_source'
USER 'default'
PASSWORD 'ClickHouse123!'))
LAYOUT(COMPLEX_KEY_HASHED())
LIFETIME(MIN 0 MAX 1000);- Dictionaryをテストする
clickhouse-cloud :) SELECT * from db1.table1_dict;
SELECT *
FROM db1.table1_dict
Query id: 098396ce-11dd-4c71-a0e1-40723dd67ddc
┌─email──────────┬─name─┐
│ me@domain.com │ me │
│ you@domain.com │ you │
└────────────────┴──────┘
2 rows in set. Elapsed: 0.001 sec. 次のように、dictGet 関数を使用して値を取得することもできます:
SELECT dictGet('db1.table1_dict', 'name', 'me@domain.com');レスポンス:
┌─dictGet('db1.table1_dict', 'name', 'me@domain.com')─┐
│ me │
└─────────────────────────────────────────────────────┘詳細情報 - https://clickhouse.com/docs/sql-reference/functions/ext-dict-functions