Power BI中的关系线为什么是虚线?如何使用虚线关系?

教育   教育培训   2024-09-14 12:03   河南  

经常遇到星友们关于模型的问题:为什么明明已经建立了关系,但是没有筛选作用?仔细一看,原来建立的这个关系显示的是一条虚线。


这篇文章就来介绍一下,为什么有的关系线是虚线?虚线有什么作用,以及如何使用这个虚线关系。




在PowerBI中,两个表之间只能有一个活动关系,活动关系用一条实线显示,如果打算在这两个表之间继续建立更多关系,则会显示为虚线,即非活动关系,也称为虚线关系,虚线关系可以有多条,默认不能发生筛选作用。


以一个最常用的场景来理解,假设订单表中有订单日期以及发货日期,利用订单日期与日期表建立了关系,那么在分析时,都是以订单日期为基础分析的,每天产生了多少订单,订单收入是多少等。


但是如果还需要按照发货日期来分析,比如每天发出的订单金额是多少?就需要按照发货日期与日期表中的日期建立关系,在已有一条活动关系的情况下,再建立一条关系就会以虚线显示,



双击该虚线,进入编辑关系窗口,就可以看到左下角的“使此关系可用”的选项是没有勾选的,


如果你试图勾选它,系统就会提示你,已经有一条关系存在,不允许再建立活动关系。对于活动关系,你也可以去掉上图中的这个勾选,使之变为非活动关系。




继续回到上面的问题。


因为订单日期已经与日期表建立了活动关系,求每个订单日期的订单收入很简单,直接写个度量值就可以了:


收入 = SUM( '订单表'[销售额] )


但发货日期与日期表建立的是非活动关系,这个度量值是没法按照发货日期来计算的,那么建立这个关系有什么用呢,如何按发货日期,计算每天发货的订单收入是多少?


这时候就要用到这个非活动关系,利用DAX函数USERELATIONSHIP来临时激活这个虚线关系,按发货日期的收入度量值可以这样写:


收入 按发货日期
CALCULATE(
    [收入],
    USERELATIONSHIP('日期表'[日期],'订单表'[发货日期]))


USERELATIONSHIP函数是专门用来激活非活动关系的,它的参数是构成关系的两列,这两列的顺序无所谓,不影响计算结果,并且USERELATIONSHIP激活关系的前提是,这两列已经在模型中建立了非活动关系,否则将会报错。


USERELATIONSHIP激活非活动关系后,会自动断开原有的活动关系,不过关系的激活以及原有关系的断开都是临时的,且只在该表达式内部生效,并不影响模型中的其他计算。


用矩阵显示这两个度量值的结果如下:



因为当天的订单,不一定当天都能发货,所以,在某个日期或者某个时间段内,按订单日期的收入与按发货日期的收入总会有个时间差。


更进一步的,如果想动态的切换按订单日期的收入、以及按发货日期的收入,则可以建立个辅助表Power BI 辅助表制作方式汇总



并利用这个辅助表中的类型生成切片器,然后写个度量值来判断切片器的选项,来返回相应的计算:



然后就可以动态切换了。



通过上面的介绍,是不是理解了非活动关系呢,它与USERELATIONSHIP函数总是同时出现,在不影响原有模型的情况下,灵活的实现另一种关系查询。在之前介绍的关联分析中,也用到了非活动关系,可以再看看这篇文章加深理解:

如何用Power BI分析产品关联度? 






PowerBI星球的最新版内容合辑,值得你收藏学习:
「PowerBI星球」内容合集


如果你想深入学习Power BI,欢迎加入PowerBI星球学习社群,获取更多学习资源,和6k+ 深度学习者一起精进~

PowerBI星球
海量干货,帮你轻松上手 Power BI
 最新文章