【问题标题】:PowerBI/SSAS Tabular: How to do calculation group "most recent value" item with measures from multiple fact tables?PowerBI/SSAS 表格:如何使用来自多个事实表的度量来计算组“最新值”项?
【发布时间】:2020-11-20 04:43:26
【问题描述】:

要获取度量的最新值,通常会执行以下操作:

Sales Total := sum(SalesFact[SalesAmount])

Sales Current :=
var mostrecent = max(SalesFact[Date])

return
calculate(
    [Sales Total],
    SalesFact[Date] = mostrecent

我的模型有多个事实表 - 例如,SalesFact 和 OrdersFact。因此 [Orders Current] 将返回 date = max(OrdersFact[Date]) 的值。

我想让这个逻辑通用,并把它放到一个计算组中。

问题:一般如何实现“最近日期”部分? SalesFact 的最近日期不必与 OrdersFact 的最近日期相同。

我不能使用日历表中的最大日期,因为日历的未来很远。

我不知道该尝试什么 - 如何让计算项从 相关 表中查找最近的日期?

【问题讨论】:

  • 你如何决定哪个是相关表?
  • 我的意思是,这是我的问题,对吧? Current Orders 需要 Orders 表中的最大数据,而 Current Sales 需要 Sales 表中的最大日期。当一次测量一个“当前值”时,这很简单。我在询问一种在代码中说“selectedmeasure() 正在汇总的表中的最大日期”的方法。 :)

标签: powerbi powerbi-desktop ssas-tabular


【解决方案1】:

我强烈怀疑这是否可能像您希望的那样干净利落,因为度量通常与特定表没有内在关联(它可以存在于一个表上并在其定义中引用零来任意许多其他表) .因此,解决方法是设置显式映射。例如,

MeasureMaxDate =
SWITCH (
    SELECTEDMEASURENAME (),
    "Sales Total", MAX ( SalesFact[Date] ),
    "Orders Total", MAX ( OrdersFact[Date] )
)
Current Sales :=
VAR mostrecent = [MeasureMaxDate]
RETURN
    CALCULATE (
        SELECTEDMEASURE (),
        DateTable[Date] = mostrecent
    )

【讨论】:

  • 是的,我一直在寻找比 if-then(可维护性)更好的方法。但如果这是唯一的方法,那就是唯一的方法。谢谢! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多