Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

aggregate_* 会话设置

这些设置可在 system.settings 中查看,并根据 源代码 自动生成。

aggregate_function_input_format

类型
AggregateFunctionInputFormat
默认值
state
版本历史
版本默认值注释
25.12state新增设置,用于控制 INSERT 操作期间 AggregateFunction 的输入格式。设置值默认为 state

INSERT 操作期间 AggregateFunction 输入的格式。

可能的值:

  • state — 包含序列化状态的二进制字符串 (默认值) 。这是默认行为,即 AggregateFunction 值应以二进制数据形式提供。
  • value — 此格式要求提供聚合函数参数的单个值;如果有多个参数,则要求提供由这些参数组成的 tuple。它们会使用相应的 IDataType 或 DataTypeTuple 进行反序列化,然后聚合形成状态。
  • array — 此格式要求提供一个值的 Array,如上文 value 选项所述。数组中的所有元素都会被聚合以形成状态。

示例

对于一个具有以下结构的表:

CREATE TABLE example (
    user_id UInt64,
    avg_session_length AggregateFunction(avg, UInt32)
);

aggregate_function_input_format = 'value' 时:

INSERT INTO example FORMAT CSV
123,456

aggregate_function_input_format = 'array' 时:

INSERT INTO example FORMAT CSV
123,"[456,789,101]"

注意:valuearray 格式比默认的 state 格式更慢,因为它们在插入时需要创建并聚合值。

aggregate_functions_null_for_empty

类型
Bool
默认值
0

启用或禁用对查询中所有聚合函数的重写,并为它们添加 -OrNull 后缀。若要兼容 SQL 标准,请启用此设置。 它通过查询重写来实现 (类似于 count_distinct_implementation 设置) ,以便在分布式查询中获得一致的结果。

可能的值:

  • 0 — 禁用。
  • 1 — 启用。

示例

请考虑以下包含聚合函数的查询:

SELECT SUM(-1), MAX(0) FROM system.one WHERE 0;

aggregate_functions_null_for_empty = 0 时,结果为:

┌─SUM(-1)─┬─MAX(0)─┐
│       0 │      0 │
└─────────┴────────┘

aggregate_functions_null_for_empty = 1 时,结果为:

┌─SUMOrNull(-1)─┬─MAXOrNull(0)─┐
│          NULL │         NULL │
└───────────────┴──────────────┘
Navigation