在数据可视化领域,将数据以有意义的方式呈现至关重要。例如,仅仅提供某产品线一个月内的销售数量是有用的信息,但如果能提供与去年同期、上个月或本月相关产品线的平均销售量进行比较的数据,就能为业务用户提供更具行动导向的报告或仪表板。QlikView中的集合分析功能正是为了添加这种上下文而设计的。通过集合分析,可以预定义图表或表格使用的数据集,从而通过集合表达式告诉对象(图表/表格)显示对应于不同数据集的值(例如预定义的时间段、地理区域、产品线等)。
集合分析可以通过一个简单的类比来理解QlikView的工作原理。在某些变量上进行选择,整个应用中的变更都会反映出来。这是因为通过选择,创建了一个想要使用的数据集。同样,使用集合分析功能,可以预定义图表中要显示的数据。集合分析的一些特性包括:
在下面的示例中,将探讨如何使用集合分析的语法,它被分解为三个组成部分:标识符、操作符和修饰符。
标识符用于表示不同的数据集,例如:
0: 表示空集,无记录
1: 表示应用中的所有记录集
$: 表示当前选择的记录集
$1: 表示上一次的选择集
Bookmark01: 表示与书签ID或书签名称相对应的所有记录集
操作符用于在标识符上工作,包括并集(+)、差集(-)、交集(*)和对称差集(/)。修饰符始终在尖括号<>内,包含多个字段,所有字段都有选择标准。修饰符中的字段条件绕过当前的选择标准。
如果想要比较当前年份的销售与上一年度的销售,上一年度的销售应该反映与当前年份选择相关的值。例如,如果当前选择的年份是2012年,上一年度应该是2011年;如果当前选择的年份是2013年,上一年度是2012年。表达式可以写成:
=Sum({$<Year = {$(=Max(Year)-1)}>} Sale)
上述表达式始终返回上一年度的销售。这里使用的美元符号($)用于评估上一年度的值。美元符号用于评估表达式并在集合修饰符中使用变量。如果有一个变量持有去年的值(例如vLASTYEAR),那么表达式可以写成:
=Sum({$vLASTYEAR}>} Sale)
假设想要展示去年有销售的公司当前的销售情况。表达式应该类似于:
=sum({$<Year={$(=Max(Year))},Company_Name={Companies who had sales last year}> } Sale)
首先,需要识别去年有销售的公司。为了解决这个问题,将使用P()函数来识别字段内的值,以及E()函数来排除字段内的值。最终的表达式为:
=sum({<Year={$(=Max(Year))},Company_Name=P({<Year={$(=Max(Year)-1)}>}Company_Name)>}Sale)
本文通过一个示例展示了如何在QlikView中使用集合分析。是否使用过这个功能?如果使用过,觉得它有用吗?是否有更多巧妙的技巧使集合分析更有趣?如果没有,认为这篇文章能让在下一个仪表板中使用集合分析吗?请分享对在QlikView中使用这个功能的看法。