【问题标题】:PowerBI DAX: Date periods identification formula issue on previous 3 monthsPowerBI DAX:前 3 个月的日期期间识别公式问题
【发布时间】:2020-04-01 21:36:37
【问题描述】:

我有一个销售数据集,并希望创建一个计算列以用作图表上的图例并用作日期过滤器,但我正在努力识别上个月之前的前 3 个月的部分。

我的公式如下所示:

Period identification = 
IF('Base'[Date]=CALCULATE(MAX('Base'[Date]);FILTER('Base';'Base'[FYTD]="FY1920"));"LM";

IF(
    AND('Base'[Date]>=
            DATEADD(CALCULATE(MAX('Base'[Date]);FILTER('Base';'Base'[FYTD]="FY1920"));-3;MONTH);
        'Base'[Date]<CALCULATE(MAX('Base'[Date]);FILTER('Base';'Base'[FYTD]="FY1920")));"P3M";

IF('Base'[Date]=CALCULATE(MAX('Base'[Date]);FILTER('Base';'Base'[FYTD]="FY1819"));"LM YA";"OTHERS")))

第一个 IF()(上个月 - LM)和最后一个(上个月一年前 - LM YA)工作正常。我只是找不到一种 PBI 的方式来接受我在中间尝试做的那种微积分来识别上个月之前的前 3 个月。

*[FYTD] 是另一个计算列,用于标识 [Date].[Month] 的相应会计年度

提前致谢

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    我认为您可以使用方便的 EOMONTH function 来让这一切变得更容易。

    尝试这样的事情,其中​​RefDate 是您要用于计算相对日期的日期。我在上个月用完。

    Period =
    VAR RefDate = EOMONTH ( TODAY (), -1 )
    RETURN
        SWITCH (
            TRUE (),
            EOMONTH ( Base[Date], 0 ) = EOMONTH ( RefDate, 0 ), "LM",
            Base[Date] > EOMONTH ( RefDate, -4 ), "P3M",
            EOMONTH ( Base[Date], 0 ) = EOMONTH ( RefDate, -12 ), "LM YA",
            "OTHERS"
        )
    

    注意:SWITCH(TRUE(),...) 返回计算结果为TRUE() 的第一个条件的结果。

    【讨论】:

    • 实际上,我真的希望公式的最后一个月与 FYTD 计算列相关,而不是与当前日期 (TODAY()) 相关,因为有时我们没有及时的上个月数据,但您的理性是完美的,经过一些调整,它工作正常。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 2020-03-28
    • 1970-01-01
    • 2018-02-13
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多