用户与订单之间的关系_认识Power BI模型中的双向关系

文/陆文捷
物流供应链优化分析师,Power BI爱好者,知乎:Beethovenist

经常有伙伴会在星球中询问在数据模型中,如何通过事实表对维度表筛选计算的问题,此类需求在PowerBI中启用表之间双向筛选配合度量值可以解决。

但在复杂的数据模型中开启双向筛选会对度量计算产生让使用者难以察觉的影响。本文就此结合案例,和大家一起揭开这一隐秘的角落。

假设模型如下:

a4cfcbf36dbd3c3996d950e207aa4319.png

数据模型由不同维度表和销售订单/采购订单建立的一对多关系。分别对客户[客户名称]和 产品[产品子类别] 字段建立切片器,此时这两个切片器无法互相筛选。

因为当前模型中这两张表都是作为一端对多端的事实表进行筛选,尝试将‘产品’和‘销售订单’两表间的双向筛选激活:

a1e1beaf86e40325553df4ca25a2e858.png

此时物理模型间的箭头也同时指向了两端

4f7db56adf73707d2851e001f0fa5a49.png

开启前两个切片器均显示全局数据;开启后选择不同客户时相应的产品子类别也在动态变化,不难理解双向筛让‘客户’表的数据通过‘销售订单’表能够对‘产品’表的数据进行筛选。是不是很方便?

24b4f9201bb9f960f8549de3dd0e5455.png

9fac1a13830a8196170a801000f78e0e.png

再次观察数据模型,发现此时的‘日期’表’筛选采购订单表有两条路径:

  • 直接路径:‘日期’->’采购订单’
  • 间接路径:‘日期’->’销售订单’->’产品’->’采购订单’

Power BI对这类多条路径指向同一目标表的情况通常会自动选择具有最短传递层级的那一条,也就是‘日期’->’采购订单’的直接路径。很自然,也很智能的做法。

b78cba3b2ba8213d54dcf98c69bb4a9c.png

那么双向筛选是不是解决各类表与表之间的相互筛选的良方?激活所有的双向筛选就可以一劳永逸了?

不妨基于更为复杂的模型创建度量值验证上述疑问。

caab6fce5d757f0d3adbc1523b208a5e.png

根据数据模型,用三种颜色标记三条数据筛选的流向,

1、‘客户’表会对‘采购订单’进行筛选

2、‘日期’表会对‘销售订单’进行筛选

3、‘日期’表会对‘采购订单’进行筛选

特别注意:‘日期’和‘客户’表会同时对‘销售订单’进行筛选,也同时对‘采购订单’进行筛选,那么此时如果用日期表来筛选采购订单表:

Power BI还会通过最短路径(3深蓝色线路)执行筛选吗?

还是会通过销售订单的的间接路径关系进行筛选?

又或者两者兼用?

实践是检验真理的唯一标准,创建度量值来验证下吧,

采购数量 = SUMX( '采购订单' , [数量] )

b0c40e9e2a4e7cf705b8e3d576183ef1.png

‘客户’[客户行业]->‘采购订单’表的筛选路径为标注的蓝色线路;‘日期’[年份名称]-> ‘采购订单’表的筛选路径同时有两条起作用:标注的深蓝色线路以及借由‘日期’表与‘销售订单’表之间的关系(标注的橙色线路)进而间接地对采购订单表的筛选。

利用CROSSFILTER函数断开日期表与采购订单表的筛选看看是什么结果:

采购数量.无日期-采购订单筛选 = CALCULATE( [采购数量] , CROSSFILTER( '日期'[日期] , '采购订单'[发货日期] , None ) )

b2e21415b6901b1b0b42e3335e46feb0.png

用CROSSFILTER取消日期表和采购订单表间的筛选,‘日期’[年份名称]和‘客户’[客户行业]对采购订单表的筛选全都经由销售订单表这座桥梁来完成。计算结果发生了变化。

同样的方式,如果断开日期表与销售订单表的关系,又会变成什么样的结果呢?

采购数量.无日期-销售订单筛选 =
CALCULATE(
[采购数量] ,
CROSSFILTER( '日期'[日期] , '销售订单'[发货日期] , None )
)

412f6eaac0d187c65812c281df6c6c46.png

这一次是取消日期表和销售订单的筛选,你变我也变~,当然又是不一样的计算结果啦。

注:CROSSFILTER函数作用是更改表之间的筛选流向(SINGLE-单向,BOTH-双向,NONE-取消筛选)。

实践结论:

由于销售订单表和产品表双向筛选的存在,使得模型中同时有两条路径能让日期表对采购订单表进行筛选。

当使用CROSSFILTER取消 日期-采购订单 或 日期-销售订单 的任一筛选传递,日期表会根据另一条有效路径对采购订单进行筛选;

不作任何处理时,两条路径同时生效。

不同的筛选传递都带来不一样的计算结果,如果用户没有察觉其中的细微之处,即便定义了符合业务逻辑的计算,也有可能得到背离初衷的结果。

案例中的数据模型有五张表,一条双向筛选,就已经对计算产生多种影响。实际业务场景往往模型更为复杂,某一个筛选流向的变化都可能生出一个数据迷宫。

下一次激活双向筛选前,你是不是要三思而为呢?

更多推荐:

采悟:Power BI财务报表分析:手把手教你制作一个动态财务分析报告​zhuanlan.zhihu.com
e0f12500f20ea566f2424f1d6ff6a018.png
采悟:Power BI实践应用:教你轻松制作RFM客户价值分类模型​zhuanlan.zhihu.com
691d65bfbda2258a8c3dc0e659ac645d.png
采悟:可视化演练:如何用Power BI制作疫情地图?​zhuanlan.zhihu.com
07296f5ab10004bade51ca3791c51d61.png

b688a128f8d03f4248897cbfbc7f769f.png

喜欢别忘了点赞哦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值