Power BI 按日期、条件和维度的累计不同计数
PowerBI Cumulative Distinctcount by Date, Condition and through Dimension
我有以下 Table:
它表示某个团队在一段时间内处理的案例,直到案例结束。
在日期列上还有一个日期 Table。
我想累计计算所选日期之前的未结案例。
所以我使用了这个措施:
CountOpen =
VAR CurrentDate = MAX('Date'[Date])
VAR Closed =
CALCULATE(
DISTINCTCOUNT(Tabelle1[case]),
ALL('Date'),'Date'[Date]<=CurrentDate,Tabelle1[Status_Open]="0")
VAR OpenAll =
CALCULATE(
DISTINCTCOUNT(Tabelle1[case]),
ALL('Date'),'Date'[Date]<=CurrentDate,Tabelle1[Status_Open]="1")
RETURN OpenAll-Closed
它适用于整体视图。但是对于 Dimension CurrentTeam 中的视图,它是不正确的:
应该是:
a = 0
b = 1
c = 0
所以...这实际上非常棘手,您必须选择每个案例在所选日期之前的最新状态。在我的解决方案中,我创建了一个 table,其中有一列 R
对每个日期的案例进行排名,然后在结果中根据您选择的团队过滤那些。
措施如下:
VAR CurrentDate = MAX('Date'[Date])
VAR CurrentTeam = SELECTEDVALUE(Tabelle1[CurrentTeam])
VAR tbl =
SUMMARIZE(
FILTER(ALL('Tabelle1'), 'Tabelle1'[Date] <= CurrentDate),
Tabelle1[case],
Tabelle1[CurrentTeam],
Tabelle1[Status_Open],
Tabelle1[Date],
"R",
VAR c = MAX(Tabelle1[case])
VAR d = LASTDATE(Tabelle1[Date])
RETURN
CALCULATE(DISTINCTCOUNT(Tabelle1[Date]),
ALLSELECTED(Tabelle1),
Tabelle1[case] = c,
Tabelle1[Date] >= d)
)
RETURN SUMX(
FILTER(tbl,
[R] = 1 &&
(ISBLANK(CurrentTeam) || [CurrentTeam] = CurrentTeam) &&
[Status_Open])
, 1) + 0 //+0 is here to show 0 where it would be blank
我有以下 Table:
它表示某个团队在一段时间内处理的案例,直到案例结束。
在日期列上还有一个日期 Table。
我想累计计算所选日期之前的未结案例。
所以我使用了这个措施:
CountOpen =
VAR CurrentDate = MAX('Date'[Date])
VAR Closed =
CALCULATE(
DISTINCTCOUNT(Tabelle1[case]),
ALL('Date'),'Date'[Date]<=CurrentDate,Tabelle1[Status_Open]="0")
VAR OpenAll =
CALCULATE(
DISTINCTCOUNT(Tabelle1[case]),
ALL('Date'),'Date'[Date]<=CurrentDate,Tabelle1[Status_Open]="1")
RETURN OpenAll-Closed
它适用于整体视图。但是对于 Dimension CurrentTeam 中的视图,它是不正确的:
应该是:
a = 0
b = 1
c = 0
所以...这实际上非常棘手,您必须选择每个案例在所选日期之前的最新状态。在我的解决方案中,我创建了一个 table,其中有一列 R
对每个日期的案例进行排名,然后在结果中根据您选择的团队过滤那些。
措施如下:
VAR CurrentDate = MAX('Date'[Date])
VAR CurrentTeam = SELECTEDVALUE(Tabelle1[CurrentTeam])
VAR tbl =
SUMMARIZE(
FILTER(ALL('Tabelle1'), 'Tabelle1'[Date] <= CurrentDate),
Tabelle1[case],
Tabelle1[CurrentTeam],
Tabelle1[Status_Open],
Tabelle1[Date],
"R",
VAR c = MAX(Tabelle1[case])
VAR d = LASTDATE(Tabelle1[Date])
RETURN
CALCULATE(DISTINCTCOUNT(Tabelle1[Date]),
ALLSELECTED(Tabelle1),
Tabelle1[case] = c,
Tabelle1[Date] >= d)
)
RETURN SUMX(
FILTER(tbl,
[R] = 1 &&
(ISBLANK(CurrentTeam) || [CurrentTeam] = CurrentTeam) &&
[Status_Open])
, 1) + 0 //+0 is here to show 0 where it would be blank