字典属性
提示
如果你在 ClickHouse Cloud 中使用字典,请使用 DDL 查询方式来创建字典,并使用用户 default 创建字典。
另外,请在 Cloud Compatibility 指南 中核对受支持的字典数据源列表。
structure 子句用于描述字典键以及可用于查询的字段。
XML 描述:
属性通过以下元素来描述:
<id>— 键列<attribute>— 数据列:可以有多个属性。
DDL 查询:
属性在查询体中定义:
PRIMARY KEY— 键列AttrName AttrType— 数据列。可以包含多个属性。
键
ClickHouse 支持以下几种类型的键:
- 数值键。类型为
UInt64。在<id>标签中定义,或使用PRIMARY KEY关键字定义。 - 复合键。由不同类型的值组成的集合。在
<key>标签中定义,或使用PRIMARY KEY关键字定义。
一个 XML 结构中只能包含 <id> 或 <key> 其中之一。DDL 查询语句必须且只能包含一个 PRIMARY KEY。
注意
不得将键描述为属性。
数值键
类型:UInt64。
配置示例:
配置字段:
name– 键所在列的名称。
对于 DDL 查询:
PRIMARY KEY– 作为键的列名。
复合键
键可以是由任意类型字段组成的 tuple。在这种情况下,layout 必须是 complex_key_hashed 或 complex_key_cache。
提示
复合键可以只包含一个元素。例如,这样就可以使用字符串作为键。
在 <key> 元素中定义键结构。键字段的指定格式与字典属性的格式相同。示例:
或
在对 dictGet* 函数发起查询时,需要传入一个元组作为键。示例:dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2))。
属性
配置示例:
或
配置字段:
| Tag | Description | Required |
|---|---|---|
name | 列名。 | Yes |
type | ClickHouse 数据类型:UInt8、UInt16、UInt32、UInt64、Int8、Int16、Int32、Int64、Float32、Float64、UUID、Decimal32、Decimal64、Decimal128、Decimal256、Date、Date32、DateTime、DateTime64、String、Array。 ClickHouse 会尝试将字典中的值转换为指定的数据类型。例如,对于 MySQL 而言,MySQL 源表中的字段可以是 TEXT、VARCHAR 或 BLOB,但在 ClickHouse 中可以作为 String 类型导入。Nullable 目前支持用于 Flat、Hashed、ComplexKeyHashed、Direct、ComplexKeyDirect、RangeHashed、Polygon、Cache、ComplexKeyCache、SSDCache、SSDComplexKeyCache 字典。在 IPTrie 字典中不支持 Nullable 类型。 | Yes |
null_value | 不存在的元素的默认值。 在示例中,它是一个空字符串。NULL 值只能用于 Nullable 类型(参见上一行的类型说明)。 | Yes |
expression | ClickHouse 在该值上执行的表达式。 表达式可以是远程 SQL 数据库中的列名。因此,可以使用它为远程列创建别名。 默认值:无表达式。 | No |
hierarchical | 如果为 true,则该属性包含当前键的父键值。参见 Hierarchical Dictionaries。默认值: false。 | No |
injective | 标志位,用于指示 id -> attribute 映射是否为单射。如果为 true,ClickHouse 可以在 GROUP BY 子句之后自动插入对具有单射属性的字典的请求。通常,这会显著减少此类请求的数量。默认值: false。 | No |
is_object_id | 标志位,用于指示是否通过 ObjectID 来为 MongoDB 文档执行查询。默认值: false。 | No |