Clickhouse 数据字典dictionary引擎

1、概述

数据字典是clickhouse提供的一种简单 实用的存储媒介,以键值和属性映射的形式定义数据。字典中的数据会主动或被动加载到内存之中,并支持动态更新。由于字典数据常驻内存特性,比较适合保存常量或者经常使用的维度表数据,以避免不必要的JOIN数据。

数据字典分为内置和扩展两种形式,内置数据字典是以clickhouse默认自带的字典;外部字典是通过用户自定义配置实现的字典,也可以从不同源(ClickHouse,MySQL或通用的ODBC)中获取数据。

Clickhouse是外部数据字典来处理多维数据架构,早期的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 │ └──────────────────────────────────┘

其他函数使用( dictGetOrDefault, dictGetOrNull):

参考:

?

经验分享 程序员 微信小程序 职场和发展