参照3.5节的方式,下面为线下销售表也创建一个度量:
回到报表模式,在“可视化”区中选择柱形图。将“线下销售金额”字段拖入“值”栏中,将地理表的“CountryName”字段拖入“轴”栏下,将鼠标光标悬停在柱形图上,此时销售金额没有按国家维度分类,国家维度对线下销售表没有产生影响,如图3.6.1所示。
为了找出原因,下面切换到关系模式。先找出两个干系表,上下摆放。之后我们发现它们之间有一个经销商表,经销商表与线下销售表之间是一条虚线,这意味着两个表之间的关系处于未激活状态。这两个表的数据“断流”了,这解释了为什么国家维度对经销商表的度量“无动于衷”,如图3.6.2所示。
单击图3.6.2中所示的虚线,在“编辑关系”对话框尝试勾选“使此关系可用”复选框。此时提示错误:无法激活表之间的关系的原因是销售区域表和线下销售表之间产生多义性。
图3.6.1
图3.6.2
切换到“关系”模式,把其中涉及的几个表都拉到一起。此时可以发现还有员工表处于中间关联表的位置,所以把它也包含了。图3.6.3中标出了3条地理表通往线下销售表的路线。下面先梳理这些表彼此之间的商业逻辑。
图3.6.3
表3.6.1和表3.6.2阐述了几个表间的商业逻辑关系。解决问题的关键在于整理出地理信息和销售事实间的通路。事实上,只有路径3可以让地理表中的数据到达线下销售表。路径1和路径2因为中间的水流方向为反向会走不通。
表3.6.1
表3.6.2
如表3.6.3所示,可以用3种方法解决此问题。其中,最后一种方法虽然难一些,但是能一劳永逸地解决问题,下面介绍方法3的具体操作步骤。
表3.6.3
此处要引入新函数CALCULATE和USERELATIONSHIP实现方法3的计算,至于函数介绍暂时放在后文。创建新的度量,输入如图3.6.4所示的公式。
图3.6.4
这个公式的意思是:通过ResellerKey字段打开经销商表与线下销售表之间的联系,并汇总 SalesAmount字段,如图3.6.5所示。
图 3.6.5
将货币单位改为美元。用新的度量替换原有度量,并拖曳到柱形图中,结果如图3.6.6所示。
图 3.6.6
注意: 本质上,聚合功能越全面,BI工具的威力就越强大。用户可以通过CALCULATE函数设置特定聚合的条件和聚合的方式。CALCULATE函数是DAX中核心的聚合函数,所谓“无CALCULATE,无DAX,无Power BI”。
技巧: 用户可使用“//”符号为DAX公式添加单价注释,“/* …… */”为添加多行注释。对于复杂的DAX嵌套公式,添加注释非常有必要。
有的显性度量都是基于DAX公式创建的。3.7节会系统地介绍DAX函数的知识,使读者更加全面地了解DAX的功能与特性。