aggregate_function_input_format
输入格式如何读取AggregateFunction 类型的列。
可能的取值:
state— 聚合函数的序列化状态,即输出格式写出的形式 (默认值) 。value— 聚合函数某个参数的值;若参数有多个,则为这些参数组成的元组。该值会经过聚合形成状态。array— 由上述value选项所描述的值组成的数组。数组中的所有元素都会经过聚合形成状态。
value 和 array 模式下,格式会按值的类型来读取该列:AggregateFunction(f, T) 按 T 读取,AggregateFunction(f, T1, T2) 按 Tuple(T1, T2) 读取,在 array 模式下则按相应的 Array 读取。值采用该格式针对相应类型所使用的表示形式写出:在文本格式中为数字或字符串,在 JSON 格式中为 JSON 数组,在 RowBinary 或 Native 中为该类型的二进制编码,在 Parquet 中为该类型的列,依此类推。这适用于所有输入格式,也适用于嵌套在 Array、Tuple 或 Map 中的 AggregateFunction。
示例
对于具有如下结构的表:
aggregate_function_input_format = 'value' 时:
aggregate_function_input_format = 'array' 时:
value 和 array 格式比默认的 state 格式慢,因为它们需要在插入时创建并聚合值。
aggregate_functions_null_for_empty
启用或禁用对查询中所有聚合函数的重写,并为它们添加 -OrNull 后缀。若要兼容 SQL 标准,请启用此设置。 它通过查询重写来实现 (类似于 count_distinct_implementation 设置) ,以便在分布式查询中获得一致的结果。 可能的值:- 0 — 禁用。
- 1 — 启用。
aggregate_functions_null_for_empty = 0 时,结果为:
aggregate_functions_null_for_empty = 1 时,结果为: