You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Power BI中基于关联至中心事实表的两个维度表创建DATEDIFF度量值的可行性咨询

解决方案:计算事实表与关联表日期的日期间隔

当然可以实现这个需求!不过先得区分下DAX里计算列度量值的适用场景——你要的是给事实表每条记录返回对应日差,用计算列会更直接;如果是需要配合动态筛选的场景,度量值也能搞定,下面给你详细说明:

一、用计算列实现(推荐,适合每条记录存固定值)

因为StartVerkoopdatum在你的事实表中,而KAOOndertekend在关联的维度表里,我们可以用RELATED函数拉取关联表的日期,再计算日差:

销售至K签约天数 = DATEDIFF(
    '你的事实表名称'[StartVerkoopdatum],
    RELATED('关联维度表名称'[KAOOndertekend]),
    DAY
)

关键说明:

  • RELATED函数会根据表间已建立的关联(就是你图里红线标出来的关联字段),自动匹配当前事实表记录对应的维度表日期
  • 如果存在某条记录的日期为空的情况,可以加个空值判断,避免报错:
    销售至K签约天数 = 
    IF(
        NOT(ISBLANK('你的事实表名称'[StartVerkoopdatum])) && NOT(ISBLANK(RELATED('关联维度表名称'[KAOOndertekend]))),
        DATEDIFF('你的事实表名称'[StartVerkoopdatum], RELATED('关联维度表名称'[KAOOndertekend]), DAY),
        BLANK()
    )
    

二、用度量值实现(适合动态筛选场景)

如果你的需求是在可视化中根据筛选条件动态计算日差,而不是在表中固定每条记录的值,可以用度量值:

销售至K签约天数_度量值 = 
VAR CurrentStartDate = MAX('你的事实表名称'[StartVerkoopdatum])
VAR CurrentKDate = CALCULATE(MAX('关联维度表名称'[KAOOndertekend]), RELATEDTABLE('你的事实表名称'))
RETURN
    IF(
        NOT(ISBLANK(CurrentStartDate)) && NOT(ISBLANK(CurrentKDate)),
        DATEDIFF(CurrentStartDate, CurrentKDate, DAY),
        BLANK()
    )

关键说明:

  • MAX用来获取当前筛选上下文里的日期值,RELATEDTABLE确保关联关系的正确性
  • 这个度量值在你把事实表的记录放到可视化组件(比如表格)时,会自动为每条记录返回对应的日差

前提条件:

一定要确保事实表和维度表的关联关系是正确建立的(一对一或事实表为“多”端的一对多关系),否则RELATEDRELATEDTABLE无法正确拉取数据。

内容的提问来源于stack exchange,提问作者Sander De Weert

火山引擎 最新活动