首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电源BI,发出最后一个工作日和最后两个工作日的总和

电源BI,发出最后一个工作日和最后两个工作日的总和
EN

Stack Overflow用户
提问于 2020-09-23 14:46:36
回答 3查看 780关注 0票数 1

我有一个问题,那就是如何计算前一个工作日的总和。

这里是我的数据集:

代码语言:javascript
复制
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日的时候,我应该看到:

  • Sum for D (17/09/2020) -> 40
  • -> for D-1 (16/09/2020) -> 10
  • Sum for D-2 (15/09/2020) -> blank

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

  • Sum for D (18/09/2020) -> 50
  • -> for D-1 (17/09/2020) -> 40
  • Sum for D-2 (16/09/2020) -> 10

当我把自己放在2020年9月21日的时候,我应该看到:

  • Sum for D (21/09/2020) -> 80
  • -> for D-1 (18/09/2020) -> 50
  • Sum for D-2 (17/09/2020) -> 40

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

提前感谢你的帮助,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-09-24 09:30:07

我刚找到了一个解决办法,我在这里发了一个帖子:

D组:

代码语言:javascript
复制
wd = SUM(data[Amount])

D-1:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

谢谢你的帮助和时间。致以敬意,

票数 0
EN

Stack Overflow用户

发布于 2020-09-23 18:58:37

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

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

代码语言:javascript
复制
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
        )
    )

票数 0
EN

Stack Overflow用户

发布于 2020-09-24 08:45:58

设定以下3项措施-

代码语言:javascript
复制
D_0 = 
CALCULATE(
    SUM('your_table_name'[Amount]),
    FILTER(
        ALL('your_table_name'),
        your_table_name[Date] = SELECTEDVALUE(your_table_name[Date])
    )
)
代码语言:javascript
复制
D_1 = 
CALCULATE(
    SUM('your_table_name'[Amount]),
    FILTER(
        ALL('your_table_name'),
        your_table_name[Date] = SELECTEDVALUE(your_table_name[Date]) - 1
    )
)
代码语言:javascript
复制
D_2 = 
CALCULATE(
    SUM('your_table_name'[Amount]),
    FILTER(
        ALL('your_table_name'),
        your_table_name[Date] = SELECTEDVALUE(your_table_name[Date]) -2
    )
)

这是从切割机中选择日期为"18/09/20“的输出-

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64030522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档