DAX:上一年周金额

DAX: Previous Year Week Amount

Power BI如何计算上一年周金额?

类似 sameperiodlastyear 功能,但持续数周(而非数月)

预估结果:

我是如何用卑鄙的把戏达到这个结果的:

我在日历中创建 table 去年 DateKey 列:LyDatekey = DateKey-1000(在我的例子中 Datekey 是 YYYYWWD) 然后创建以下措施:

MaxLyInventory = CALCULATE(prjMeasures[MaxInventory],USERELATIONSHIP('Calendar'[LyDateKey],SupplyData[DateKey]))

为什么我不喜欢这个: 模型应计算明年预测和未来 2 年预测 - 这意味着 Calendar table 中有 3 个额外的 DataKey 列,Model 视图中每个 table 有 3 个额外的连接- 看起来很乱。

我试过的(下面屏幕上的输出可用):

1 几乎没问题,但计算的总数有误(returns MAX 而不是 SUM

tmpMaxLyInventory = 
CALCULATE(
    [MaxInventory],
    FILTER(
        ALL('Calendar'), 
        'Calendar'[DateKey]=MAX(Calendar[DateKey])-1000
    )
)

2 看起来聪明又漂亮,但行不通...;)

2tmpMaxLyInventory = 
    VAR fltInventory =
        FILTER(
            SupplyData,
            SupplyData[PF Measure] = "Inventory"
            && RELATED('Calendar'[isWeekLastInPeriod])=TRUE() 
            && SupplyData[DateKey]=max(SupplyData[DateKey])-1000
        )     
    VAR t =
        SUMMARIZE(                        
                fltInventory,            
                SupplyData[DateKey],
                "tMaxInventory", SUM(SupplyData[PF Max Level])            
        )        
    RETURN
        SUMX(t,[tMaxInventory])

USERELATIONSHIP 的技巧就可以了!

要避免这种情况:

Why I don't like this: Model should calculate next year forecast and next 2 years forecast - it means 3 additional DataKey columns in Calendar table and 3 additional connections per table in Model view - looks messy.

您可以创建仅包含一列的额外“虚拟”Calendar table - DateKey 并在日历和事实 table 之间使用它。

然后最终结果将如下所示(之前和之后):

vlmAct_LY1Weeks = 
    CALCULATE(
        [vlmAct],
        USERELATIONSHIP(routeCalendar[kYWD],'Calendar'[LY1W_kYWD])
    )

P.S。可能在未来 self joins 支持将被实施 - 然后不需要“虚拟” table.