Power BI中如何动态激活模型的关系

文摘   2024-10-23 22:03   广东  

PowerBI 中,数据模型通常包含多个表之间的关系。这些关系定义了数据如何在不同表之间流动和关联。默认情况下,PowerBI 会根据查询上下文自动选择合适的关系路径来获取数据。但在某些复杂场景下,需要手动控制关系的激活,以确保正确的数据检索和计算,例如,我们销售订单表中有两个日期列,分别是订单日期和发货日期日期表和销售订单表只能允许一个激活的关系,但是,我们需要同时按照订单日期看销售额,也需要按照发货日期来看发货额,这类场该如何处理呢?

在解决这类场景之前,我们需要了解,在PowerBI中,两个表之间只能有一个活动关系,活动关系用一条实线显示,如果打算在这两个表之间继续建立更多关系,则会显示为虚线,即非活动关系,也称为虚线关系,虚线关系可以有多条,默认不能发生筛选作用。例如,本案例中日期表分别和订单日期和发货日期建立了关系,也就是说日期维度表和销售订单事实表之间创建了2条关系,注意这里面只有一条实线,另外一条是虚线(并没有激活,且不能发生筛选关系,筛选无效)。

前面我们讲了这么多,你可能会问,既然不能产生筛选我还创建这个虚线关系有啥用?不急,我们需要再引入一个函数USERELATIONSHIP,通过这个函数我们可以来激活非活动的关系,也就是让虚线的关系生效。关于这个函数的具体介绍,大家可以参考如下介绍:
USERELATIONSHIP函数,用于在计算中激活特定的关系。其中是来自不同表的列,这两列定义了一个关系,并且这个关系在数据模型中已经存在,但可能不是当前默认激活的关系,例如,假设有一个销售数据表Sales和一个日期维度表Date,它们之间有两种关系:一种是基于订单日期的关系,另一种是基于发货日期的关系。在默认情况下,PowerBI 可能使用订单日期的关系。但如果要计算基于发货日期的指标,就需要使用USERELATIONSHIP函数来激活发货日期对应的关系。

  sales_amount_delivery = CALCULATE(    [sales_amount],    USERELATIONSHIP(      'DimDate'[Date],      'FactSalesOrder'[发货日期]    )  )

上面表格中销售额sales_amount度量值是使用实现的关系:日期表日期->销售订单表订单日期,按照订单日期统计销售额。sales_amount_delivery度量值是通过使用USERELATIONSHIP函数激活非活动关系:日期表日期->销售订单表发货日期,按照发货日期统计销售额。

好了,本期的分享就到这了,如果需要系统学习Power BI课程,可以添加小编私信详细了解会员系统课程。


  • 免费课程:Power BI免费课程更新至202405月
  • 免费课程绝大部分都是录制视频讲解,针对典型案例进行讲解,大家可以当做是一个字典,需要时候来找一找。免费课程不系统,有些基础内容小编默认你是知道,所以没有详细讲解,需要系统学习推荐看看小编的付费系统课程。
  • 付费课程:Power BI会员课程更新(202310)
  • 付费课程从零基础开始讲解,上手平滑,深入浅出,结合实际案例针对性强。具体可以参考介绍,课程内容持续更新,永久学习!(付费后,小编后面开发推出的所有课程和资源免费获取,无需再付费!)
  • 交流学习群:本群为付费制(49/一位),仅作为学习交流Power BI/Excel/Tableau/SQL等数据分析、数据处理工具用,有问题可以描述清楚你的问题,附上案例数据求助。除此外,不讨论任何无关事情,违者立刻剔除。啊?不是吧?加群还要付费?嗯,是的,所以,加群后请谨言慎行!群里会不定期分享各类模板、学习书籍等资讯,确认以上条件都能接受再添加小编私信!



PowerBI Home
分享PowerBI、Tableau、Excel(函数公式、数据透视表、VBA)、Python、SQL等技巧。
 最新文章