带聚合函数的嵌套聚合函数
使用 TOTAL 嵌套并非总是足以应付一切。要获得更通用的嵌套,您必须结合使用高级聚合函数与计算的维度。
示例:
以下数据已从脚本读取:
有关此数据的显然问题是:“每一名销售代表拥有多少名客户?”。
此问题使用标准 QlikView 表很容易回答:
根据刚才获得的知识,可能会提出一些新问题:“多少销售代表仅有一名客户?多少销售代表有三名或更多客户?”。
如果您忽略此简单案例中的事实:您可以轻松地手动计数表达式列中的数字,这些是需要二阶聚合顺序的问题类型。计算所需的数据不存在于原始字段中,也无法从原始字段直接计算。
如同新图表中的维度一样,您需要找到在图表中使用表达式列的方法。这可通过使用高级聚合函数获得。
为了将第一个图表的计算作为新图表中的内部图表计算执行,您需要对该维度使用以下语句:
=Aggr(Count(Customer),SalesRep)
然后,您需要输入新图表的以下表达式:
Count(Distinct SalesRep)
DISTINCT 限定符是必要的,因为 QlikView 会计算基础表格的行数。
结果表会回答问题“多少名销售代表拥有 1 名、2 名、3 名客户等等?”:
必须注意两件事情:
- 第二图表不会以任何方式要求第一图表的存在。它是完全自包含的,同时包含维度内定义的第一顺序聚合。
- 嵌套的可能性至此未结束。当然,高级聚合函数的维度参数可能包含计算的维度,这反过来又使用高级聚合函数。但是,当经过三级聚合时,放松追踪您正在做的事情相对容易。