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

时间:2020-09-23 14:46:36

标签: powerbi dax powerbi-desktop measure


我对如何计算上一个工作日的总和有疑问。

这是我的数据集:

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日时,应该看到以下内容:

  • D的总和(17/09/2020)-> 40
  • D-1的总和(16/09/2020)-> 10
  • D-2的总和(15/09/2020)->空白

当我将自己放在2020年9月18日的日期时,应该看到以下内容:

  • D的总和(18/09/2020)-> 50
  • D-1的总和(17/09/2020)-> 40
  • D-2的总和(16/09/2020)-> 10

当我将自己放在2020年9月21日的日期时,应该看到以下内容:

  • D的总和(21/09/2020)-> 80
  • D-1的总和(18/09/2020)-> 50
  • D-2的总和(17/09/2020)-> 40

我没有找到使用计算或求和来求和前一天的方法,而就我而言,前一天没有帮助。

预先感谢您的帮助,

3 个答案:

答案 0 :(得分:0)

我强烈建议您在模型中添加一个日期维度。这将使基于日期的分析更加容易。

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

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
        )
    )

enter image description here

答案 1 :(得分:0)

创建以下3种措施-

    Type de fichier de clés : JKS
Fournisseur de fichier de clés : SUN

Votre fichier de clés d'accès contient 1 entrée

***myalias***, 16 mai 2018, PrivateKeyEntry,
Empreinte du certificat (SHA1) : ************************************************************
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
    )
)

当您从切片器中选择日期“ 18/09/20”时,这是输出-

enter image description here

答案 2 :(得分:0)

我刚找到一个解决方案,在这里发布它:

对于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

感谢大家的帮助和时间。 问候