Power BI,发布最后一个工作日和最后两个工作日的总和

Power BI, issue to sum last working day and last two working day


我有一个关于如何计算前一个工作日的总和的问题。

这是我的数据集:

Date      Name  Amount
16/09/20  A     10
17/09/20  A     10
17/09/20  B     30
18/09/20  A     50
21/09/20  A     20
21/09/20  B     60
22/09/20  B     50

在我的仪表板中,我有一个过滤器来选择显示日期,我看到了今天的总和;前一个工作日的最后一个工作日和前一个工作日的倒数第二个。
因此,当我将自己置于 2020 年 9 月 17 日时,我应该会看到:

当我将自己置于 2020 年 9 月 18 日时,我应该会看到:

当我将自己置于 2020 年 9 月 21 日时,我应该会看到:

我找不到使用 calculate 或 sum 对前一天求和的方法,而前一天对我的情况没有帮助。

在此先感谢您的帮助,

我强烈建议为您的模型添加日期维度。这将使 date-based 分析更容易。

这是我的第一次尝试。我假设只有周六和周日是假期。如果您需要考虑其他假期,则需要日期维度 table。另请注意,我在 CALCULATE 中使用了 ALL(Data)。这将删除应用于 Data table.

的任何过滤器
Output = 
VAR _selectedDate =
    MAX ( 'Data'[Date] )
VAR _selectedDateDay =
    WEEKDAY ( _selectedDate )
VAR _selectedDateminus2 =
    SWITCH (
        TRUE,
        _selectedDateDay = 2, _selectedDate - 4,
        _selectedDateDay = 3, _selectedDate - 5,
        _selectedDate - 2
    )
RETURN
    CALCULATE (
        SUM ( 'Data'[Amount] ),
        FILTER (
            ALL ( 'Data' ),
            'Data'[Date] <= _selectedDate
                && 'Data'[Date] >= _selectedDateminus2
        )
    )

创建以下 3 个措施-

D_0 = 
CALCULATE(
    SUM('your_table_name'[Amount]),
    FILTER(
        ALL('your_table_name'),
        your_table_name[Date] = SELECTEDVALUE(your_table_name[Date])
    )
)
D_1 = 
CALCULATE(
    SUM('your_table_name'[Amount]),
    FILTER(
        ALL('your_table_name'),
        your_table_name[Date] = SELECTEDVALUE(your_table_name[Date]) - 1
    )
)
D_2 = 
CALCULATE(
    SUM('your_table_name'[Amount]),
    FILTER(
        ALL('your_table_name'),
        your_table_name[Date] = SELECTEDVALUE(your_table_name[Date]) -2
    )
)

这是您从切片器 select 日期“18/09/20”时的输出-

刚刚找到解决办法,我这里post它:

对于 D:

wd = SUM(data[Amount])

对于 D-1:

lwd = 
    var ad = DATEADD(data[Date];0;DAY)
    var lwd = IF( 
        WEEKDAY(ad) = 1; //sunday
        ad - 2;
        IF(
            WEEKDAY(ad) = 2; //monday
            ad - 3;
            ad - 1 //others
        )
    )
    var sumLWD = CALCULATE(SUM(data[Amount]);data[Date]=lwd)
    return sumLWD

对于 D-2:

l2wd = 
    var ad = DATEADD(data[Date];0;DAY)
    var lwd2 = IF( 
        WEEKDAY(ad) = 2; //monday
        ad - 4;
        IF(
            WEEKDAY(ad) = 3; //tuesday
            ad - 4;
            ad - 2 //others
        )
    )
    var sumLWD2 = CALCULATE(SUM(data[Amount]);data[Date]=lwd2)
    return sumLWD2

感谢大家的帮助和时间。 此致,