使用USERELATIONSHIP实现两表之间多个关系的调用

标签:
it教育时评 |
分类: 数据分析 |
在Power Pivot模型中,两表之间可以建立多个关系,但是只能有一个关系是处于激活(active)状态的。今天我们通过一个常见案例来看一下如何通过USERELATIONSHIP函数实现两表之间多个关系的调用。
下面是销售记录表,为方便大家理解,源文件只有4行数据。
http://www.agileex.com/upLoad/image/20170926/15064039934921125.png
大家注意[销售日期]和[送货日期]的关系。有些情况下,比如1月27日卖出去的100台商品,送货日期是在2月份的2月1日。
将数据导入模型并通过[销售日期]建立与日期表的关系:
创建度量值:
售出数量:=SUM([销售数量])
生成数据透视表如下:
http://www.agileex.com/upLoad/image/20170926/15064040395714750.png
假设此时我们需要在报告中加入送货数量,用来计算每个月送出的货物数量。请查看销售记录表,在我们的数据里,1月份的售出数量是300,但送货数量是50台。由于送货数量要基于送货日期来计算,这和之前的售出数量是冲突的。如果不通过Power Pivot的USERELATIONSHIP,此种情况在Excel里很难解决。
首先,我们需要通过[送货日期]来创建和日期表的第二个关系(下图中虚线的关系)。
送货数量:=CALCULATE('销售记录'[售出数量],USERELATIONSHIP('销售记录'[送货日期],'日期表'[日期]))
USERELATIONSHIP需要2个参数,分别是所调用关系的多端和一端。
最终的计算结果:
http://www.agileex.com/upLoad/image/20170926/15064041684413145.png
送货数量被准确的计算出来,这样我们就通过USERELATIONSHIP实现了两表之间多个关系的使用。
特别提示:
USERELATIONSHIP所调用的关系必须在模型中实际存在(哪怕是未激活关系都行)。
USERELATIONSHIP需要的2个参数必须准确输入所调用关系的多和一端。
USERELATIONSHIP 只能用在采用筛选器作为参数的函数中。例如:CALCULATE、CALCULATETABLE。
这就是我们今天的分享内容,更多Power Pivot DAX函数的用法请参考我们的视频课程- Excel Power Pivot数据建模分析(进阶篇)。