跳到主要内容

聚合函数

被称为聚合函数的函数家族包含将多个字段值作为其输入信息并每个组返回单个结果的函数,在此类函数中,分组通过图表维度或脚本语句中的 group by 子句定义。

聚合函数包括 Sum()Count()Min()Max() 等更多函数。

大多数聚合函数均可在数据加载脚本和图表表达式中使用,但语法不同。

在数据加载脚本中使用聚合函数

聚合函数只能在 LOAD SELECT 语句内使用。

在图表表达式中使用聚合函数

聚合函数的参数不能包含其他聚合函数,除非这些内部聚合包含 TOTAL 限定符。 有关高级嵌套聚合函数的更多信息,请结合指定维度使用 Aggr 高级函数。

聚合函数会聚合选择项定义的可能记录集合。但替代记录集合可使用集合分析中的集合表达式定义。

请参阅: 集合分析和集合表达式

如何计算聚合

聚合在特定表的记录上循环,聚合其中的记录。例如,计数(<Field>) 将计算 <Field> 所在的表格中记录的数目。如果只想聚合不同字段值,则需要使用 distinct 子句,例如 Count(distinct <Field>)。

如果聚合函数包含来自不同表的字段,则聚合函数将循环遍历组成字段的表的交叉乘积记录。这会降低性能,因此应该避免此类聚合,尤其在您有大量数据时是这样。

关键字段聚合

聚合的计算方式意味着您不能聚合关键字段,因为不清楚应该使用哪个表进行聚合。例如,如果字段 <Key> 链接两个表,则不清楚Count(<Key>) 是否应返回第一个表或第二个表中的记录数。

但是,如果使用 distinct 子句,则聚合是定义良好的,可以进行计算。

因此,如果在聚合函数中使用关键字段而不使用 distinct 子句,则 Qlik Sense 将返回一个可能毫无意义的数字。解决方案是要么使用 distinct 子句,要么使用关键字段的副本 — 一个只驻留在一个表中的副本。

例如,在下表中,ProductID 是表之间的键。

产品和明细表之间的 ProductID 键

Count(ProductID) 可以在 Products 表中计数(每个产品只有一条记录 – ProductID 是主键),也可以在 Details 表中计数(每个产品很可能有多条记录)。如果要计算不同产品的数量,应该使用 Count(distinct ProductID)。如果要计算特定表中的行数,则不应使用键。