Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 功率BI,发放至最后一个工作日和最后两个工作日的总和 我有一个关于如何计算上一个工作日的总和的问题_Powerbi_Dax_Powerbi Desktop_Measure - Fatal编程技术网

Powerbi 功率BI,发放至最后一个工作日和最后两个工作日的总和 我有一个关于如何计算上一个工作日的总和的问题

Powerbi 功率BI,发放至最后一个工作日和最后两个工作日的总和 我有一个关于如何计算上一个工作日的总和的问题,powerbi,dax,powerbi-desktop,measure,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日时,我应该看到:

这是我的数据集:

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金额(2020年9月17日)->40
  • D-1的金额(2020年9月16日)->10
  • D-2总计(2020年9月15日)->空白
当我把自己放在2020年9月18日时,我应该看到:

  • D(2020年9月18日)->50
  • D-1的金额(2020年9月17日)->40
  • D-2(2020年9月16日)->10
当我把自己放在2020年9月21日时,我应该看到:

  • D(2020年9月21日)->80
  • D-1的金额(2020年9月18日)->50
  • D-2的金额(2020年9月17日)->40
我没有找到一种方法来计算前一天使用的计算或总和和前一天在我的情况下是没有帮助的


提前感谢您的帮助,

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

这是我的第一次尝试。我以为只有星期六和星期天是假日。如果你需要考虑其他假日,你需要一个日期维度表。还请注意,我在
计算中使用了
ALL(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
        )
    )
输出=
VAR_selectedDate=
最大值('数据'[日期])
VAR\u选择的DateDay=
工作日(选定日期)
VAR _selectedDateminus2=
开关(
是的,
_SelectedDateDate=2,_selectedDate-4,
_SelectedDateDate=3,_selectedDate-5,
_选定日期-2
)
返回
算计(
总和('数据'[金额]),
滤器(
全部(‘数据’),
“数据”[Date]=\u选择的日期为2
)
)

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

这是我的第一次尝试。我以为只有星期六和星期天是假日。如果你需要考虑其他假日,你需要一个日期维度表。还请注意,我在
计算中使用了
ALL(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
        )
    )
输出=
VAR_selectedDate=
最大值('数据'[日期])
VAR\u选择的DateDay=
工作日(选定日期)
VAR _selectedDateminus2=
开关(
是的,
_SelectedDateDate=2,_selectedDate-4,
_SelectedDateDate=3,_selectedDate-5,
_选定日期-2
)
返回
算计(
总和('数据'[金额]),
滤器(
全部(‘数据’),
“数据”[Date]=\u选择的日期为2
)
)

创建以下三个度量-

D_0 = 
CALCULATE(
    SUM('your_table_name'[Amount]),
    FILTER(
        ALL('your_table_name'),
        your_table_name[Date] = SELECTEDVALUE(your_table_name[Date])
    )
)
以下是从切片器中选择日期“18/09/20”时的输出-


创建以下三个度量-

D_0 = 
CALCULATE(
    SUM('your_table_name'[Amount]),
    FILTER(
        ALL('your_table_name'),
        your_table_name[Date] = SELECTEDVALUE(your_table_name[Date])
    )
)
以下是从切片器中选择日期“18/09/20”时的输出-


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

对于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
谢谢大家的帮助和时间。
关于,

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

对于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
谢谢大家的帮助和时间。

关于,

您希望每行的3列中包含这3个值吗?或者在卡片上显示单独的值?我想要三个单独的值,D,D-1和D-2。想法是在最后能够看到D-(D-1)的结果,以恢复两个值之间的差距。如果没有以前的日期怎么办?如果它喜欢日期为17/09/20的D-2,它可以显示空/空。这并不重要,因此日期为21/09/20的D-1和D-2都将为空,对吗?您希望每行的3列中包含这3个值吗?或者在卡片上显示单独的值?我想要三个单独的值,D,D-1和D-2。这个想法是在最后能够看到D-(D-1)的结果,以恢复两个值之间的差距。如果没有以前的日期怎么办?如果它喜欢日期为17/09/20的D-2,它可以显示空/空。这并不重要,因此日期为21/09/20的D-1和D-2都将为空,对吗?嗨,非常感谢这个想法,但是我错误地解释了我认为数据集的部分。这是一篇摘录,因为我在问题中编辑了其他价值。所以我测试了你的解决方案,但最小/最大值不起作用。你能提供一个它不起作用的样本数据集吗?嗨,非常感谢你的想法,但我认为我错误地解释了数据集部分。这是一篇摘录,因为我在问题中编辑了其他价值。因此,我测试了您的解决方案,但最小/最大值不起作用。您能提供一个它不起作用的示例数据集吗?您好,感谢您的解决方案,但您管理前一天和前两天,但不包括周六和周日的工作日。它适用于18/09,但不适用于21/09。这就是我要问的。现在,你如何定义工作日?或者,找到以前的可用日期作为D-1对您来说合适吗?我的意思是,无论间隔有多大,度量都会找到上一个可用的日期。Worday day是一周中除周六和周日之外的所有日子。我已经找到了一个适合我的解决方案,我已经发布了。谢谢你的帮助投票或接受答案真的很感谢:)很高兴看到你得到了解决方案。顺便说一句,你也可以接受你自己的答案,以便其他访问这里的人可以了解哪个答案是解决这个问题的答案。嗨,谢谢你的解决方案,但你管理前一天和前两天,但不包括周六和周日的工作日。它适用于18/09,但不适用于21/09。这就是我要问的。现在,你如何定义工作日?或者,找到以前的可用日期作为D-1对您来说合适吗?我的意思是测量w