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 日时,我应该会看到:
- 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
我找不到使用 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
感谢大家的帮助和时间。
此致,
我有一个关于如何计算前一个工作日的总和的问题。
这是我的数据集:
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
我找不到使用 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
感谢大家的帮助和时间。 此致,