加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2017-09-28 11:54:23)
标签:

it

教育

时评

分类: 数据分析

在Power Pivot模型中,两表之间可以建立多个关系,但是只能有一个关系是处于激活(active)状态的。今天我们通过一个常见案例来看一下如何通过USERELATIONSHIP函数实现两表之间多个关系的调用。

下面是销售记录表,为方便大家理解,源文件只有4行数据。

http://www.agileex.com/upLoad/image/20170926/15064039934921125.png


大家注意[销售日期][送货日期]的关系。有些情况下,比如1月27日卖出去的100台商品,送货日期是在2月份的2月1日。

将数据导入模型并通过[销售日期]建立与日期表的关系: 

http://www.agileex.com/upLoad/image/20170926/15064040259330351.png


创建度量值:

售出数量:=SUM([销售数量])

生成数据透视表如下:

http://www.agileex.com/upLoad/image/20170926/15064040395714750.png


假设此时我们需要在报告中加入送货数量,用来计算每个月送出的货物数量。请查看销售记录表,在我们的数据里,1月份的售出数量是300,但送货数量是50台。由于送货数量要基于送货日期来计算,这和之前的售出数量是冲突的。如果不通过Power Pivot的USERELATIONSHIP,此种情况在Excel里很难解决。

首先,我们需要通过[送货日期]来创建和日期表的第二个关系(下图中虚线的关系)。

 http://www.agileex.com/upLoad/image/20170926/15064041014669126.png


 虚线代表未激活。在“管理关系“窗口看下此时的模型关系。销售记录和日期表之间存在2个关系,其中与[销售日期]关联的是激活状态,与[送货日期]关联的是未激活状态。

http://www.agileex.com/upLoad/image/20170926/15064041138194639.png


 接下来我们通过USERELATIONSHIP调用该未激活关系进行送货数量的计算:

送货数量:=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数据建模分析(进阶篇)。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有