structure 子句用于描述可供查询的字典键和各个字段。
XML 描述:
<id>— 键列<attribute>— 数据列:属性可以有多个。
PRIMARY KEY— 键列AttrName AttrType— 数据列。属性可以有多个。
键
- 数值键。
UInt64。在<id>标签中定义,或通过PRIMARY KEY关键字定义。 - 复合键。由不同类型的值组成的集合。在
<key>标签中定义,或通过PRIMARY KEY关键字定义。
<id> 或 <key> 其中之一。DDL 查询中必须且只能包含一个 PRIMARY KEY。
不得将键描述为属性。
数值键
UInt64。
配置示例:
name– 存放键的列名。
PRIMARY KEY– 键所在列的名称。
复合键
tuple。在这种情况下,布局必须为 complex_key_hashed 或 complex_key_cache。
键的结构在 <key> 元素中设置。键字段的指定格式与字典属性相同。示例:
dictGet* 函数的查询,键会以元组形式传入。示例:dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2))。
属性
| 标签 | 描述 | 必填 |
|---|---|---|
name | 列名。 | 是 |
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 类型。 | 是 |
null_value | 不存在元素的默认值。 在该示例中,它是空字符串。只有 Nullable 类型才能使用 NULL 值 (请参见上一行的类型说明) 。 | 是 |
expression | ClickHouse 在该值上执行的 Expression。 该表达式可以是远程 SQL 数据库中的列名。因此,你可以用它为远程列创建别名。 默认值:无表达式。 | 否 |
hierarchical | 如果为 true,则该属性包含当前键的父键值。请参见 Hierarchical Dictionaries。默认值: false。 | 否 |
injective | 用于表明 id -> attribute 映射是否为 injective 的标志。如果为 true,ClickHouse 可以自动将具有单射性质的字典请求移到 GROUP BY 子句之后。通常这会显著减少此类请求的数量。默认值: false。 | 否 |
is_object_id | 用于表明查询是否通过 ObjectID 针对 MongoDB 文档执行的标志。默认值: false。 |