Clickhouse 数据字典dictionary引擎
1、概述
數(shù)據(jù)字典是clickhouse提供的一種簡單 實用的存儲媒介,以鍵值和屬性映射的形式定義數(shù)據(jù)。字典中的數(shù)據(jù)會主動或被動加載到內(nèi)存之中,并支持動態(tài)更新。由于字典數(shù)據(jù)常駐內(nèi)存特性,比較適合保存常量或者經(jīng)常使用的維度表數(shù)據(jù),以避免不必要的JOIN數(shù)據(jù)。
數(shù)據(jù)字典分為內(nèi)置和擴展兩種形式,內(nèi)置數(shù)據(jù)字典是以clickhouse默認(rèn)自帶的字典;外部字典是通過用戶自定義配置實現(xiàn)的字典,也可以從不同源(ClickHouse,MySQL或通用的ODBC)中獲取數(shù)據(jù)。
Clickhouse是外部數(shù)據(jù)字典來處理多維數(shù)據(jù)架構(gòu),早期的clickhouse版本適用XML配置,在新版本中ClickHouse有了顯著的進步,可以使用DDL語句來定義字典。
2、建表
| CREATE?DICTIONARY dict( key_column UInt64?DEFAULT?0, value_column String?DEFAULT?'a' ) PRIMARY?KEY?key_column SOURCE(CLICKHOUSE(HOST?'localhost'?PORT 9000?USER?'default'?TABLE?'t_dict'?PASSWORD?''?DB?'datasets')) LIFETIME(MIN?1?MAX?10) LAYOUT(HASHED()); |
或者
| CREATE?TABLE?%table_name% (%fields%) engine = Dictionary(%dictionary_name%)` |
3、使用
?dictGet()
SELECT dictGet('datasets.dict', 'value_column', toUInt64(1))
┌─dictGet('datasets.dict', 'value_column', toUInt64(1))─┐
│ A1 │
└──────────────────────────────────┘
其他函數(shù)使用(?dictGetOrDefault, dictGetOrNull):https://clickhouse.tech/docs/en/sql-reference/functions/ext-dict-functions/#dictget
?
參考:
https://clickhouse.tech/docs/en/engines/table-engines/special/dictionary/?
https://altinity.com/blog/2020/5/19/clickhouse-dictionaries-reloaded?rq=Dictionaries
https://blog.csdn.net/vkingnew/article/details/106973674
總結(jié)
以上是生活随笔為你收集整理的Clickhouse 数据字典dictionary引擎的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 半入耳的蓝牙耳机哪个好?半入耳式蓝牙耳机
- 下一篇: GprMax2D / 3D——文件下载与