PowerBI数据建模,为什么不建议你使用双向关系?

文/陆文捷

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

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

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

假设模型如下:

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

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

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

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

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

  • 直接路径:'日期’->’采购订单’

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

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

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

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

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

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

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

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

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

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

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

又或者两者兼用?

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

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

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

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

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

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

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

采购数量.无日期-销售订单筛选 =

CALCULATE(

[采购数量] ,

CROSSFILTER( '日期'[日期] , '销售订单'[发货日期] , None )

)

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

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

实践结论:

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

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

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

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

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

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

参考文章:

https://www.sqlbi.com/articles/bidirectional-relationships-and-ambiguity-in-dax/
示例源数据来自于@BI佐罗老师PBI练习素材
(0)

相关推荐

  • 用Excel数据透视表,帮助老板分析人群价值

    每个用户的行为特征和价值各不相同,因此在对待不同的用户时,不能一刀切,应该根据用户的特点进行区别对待. 在众多的客户关系管理(CRM)的分析模式中,RFM模型能够很好地衡量客户价值和客户创利能力,常用 ...

  • Excel中的数据建模:表间关系一线牵,何须大量公式拼数据

    小勤:现在的数据分析往往涉及好多个表,比如客户表.产品表.订单表.订单明细表等等,经常要结合起来分析,每次都要把一个表的数据匹配到另一个表里才能分析,岂不要累屎? 大海:在传统数据透视表里的确是要那么 ...

  • Power Pivot数据建模基础:数据表间的4种基本关系类型

    小勤:在前面<表间关系一线牵,何须大量公式拼数据>的文章里提到,如果产品表的产品名称重复的话,是不能建立表间关系的,这具体是什么情况? 大海:在数据处理的时候,我们经常需要对2张相关的表格 ...

  • 20款优秀的大数据可视化工具测评 (建议收藏)

    如今学习应用数据可视化的渠道有很多,你可以跟踪一些专家博客,但更重要的一点是实践/实操,你必须对目前可用的数据可视化工具有个大致了解.以下是Netmagzine列举的二十大数据可视化工具,无论你是准备 ...

  • 遵守好这五大准则,不愁做不好大数据建模

    在过去的几十年里,数据建模的努力通常集中在关系数据建模或可扩展标记语言(XML)的建模上.只要数据存储在关系数据库中,关系数据建模就会很好,但除此之外,它很少会有其他的用途.大数据建模是一个数据挖掘的 ...

  • 数据分析师的成长建议

    众所周知想要成为数据分析师,那么必然需要具备:数据技术.可视化.统计学基础.业务思维能力.专业能力以及沟通能力等,那么针对数据分析师的成长有哪些好的建议呢? 1.一定要重视可视化.为什么呢?因为数据分 ...

  • 万字长文详解ETL和数据建模~!

    源 /         文/ 什么是ETL ETL是数据抽取(Extract).转换(Transform).加载(Load )的简写,它是将OLTP系统中的数据经过抽取,并将不同数据源的数据进行转换. ...

  • Power BI数据建模

    数据建模并没有那么高深,你同样可以学会!这篇文章通过一个实例创建一个简单的数据建模,并引出两个重要的概念:度量值和DAX. 之前谈论PowerBI与Power Pivot的关系时就提到,Power B ...

  • Power BI财务报表分析:数据建模篇

    PowerBI财务报表分析系列之: 数据建模篇 我们面对的源数据,往往并不是只有一张表,而这些不同的表,需要协同配合才能更有效的使用,多表的协同配合依靠表与表之间的逻辑关系. 根据分析的需求,在多个表 ...

  • 针对公安民警开展数据建模方法的研究和实践

    导  读 2018年3月,公安部科技信息化局以公安基层技术革新奖推荐评选为载体,以公安大数据建设应用为主线,组织开展了"智慧公安我先行"全国公安基层技术革新专项活动.新智认知自主研 ...