DAX - 运行 基于日期过滤的总计,其中由于同一天的多个输出,相同的每日总计在多行上
DAX - Running total based on date filtering where same daily total is on multiple rows due to multiple outputs for same day
我正在尝试在 Power BI 中使用 DAX,但无论我如何尝试,我似乎都无法做到这一点。
我的源数据包含 SQL 中存储过程的输出,该过程针对一组原始数据计算多个验证检查的通过率和失败率,这些原始数据的行大小也每天发生变化。因此,我每天的数据都具有相同数量的验证检查类型,并给出为每个类型检查的总行数作为相同的值——例如:
Table
Date
Check Ref.
Rows Passed
Rows Failed
Total Rows Checked
01/01/21
Check 1
20
200
220
01/01/21
Check 2
40
180
220
01/01/21
Check 3
60
160
220
01/01/21
Check 4
10
210
220
01/01/21
Check 5
15
205
220
02/01/21
Check 1
20
230
250
02/01/21
Check 2
200
50
250
02/01/21
Check 3
100
150
250
02/01/21
Check 4
40
210
250
02/01/21
Check 5
160
90
250
03/01/21
Check 1
290
10
300
03/01/21
Check 2
110
190
300
03/01/21
Check 3
25
275
300
03/01/21
Check 4
175
125
300
03/01/21
Check 5
20
280
300
等等等
我希望能够在报告选项卡中显示一张 KPI 卡,其中显示在任何特定日期检查的行数(例如 220 年 1 月 1 日)和累积行数 (运行)我 select 的所有日期总数(例如,如果我 select 编辑了 02/01/21 和 03/01/21,我希望看到 550)
我试图创建一个快速度量方法,将检查的总行数除以日期计数(我认为应该等于 5)——这适用于单个日期——但是当我 select 过滤器中的多个日期,我只得到这些值的平均值。当我尝试按日期和检查的总行数的平均总和进行 运行 计数时,也会发生同样的情况。
我能够让它工作的唯一方法是为每个验证检查提供一个从 1 到 5 的索引,然后创建两个快速度量,首先给我检查的行数的值在任何给定的一天,然后创建一个 运行 总度量过滤日期和创建的较早维度度量:
Dimension Measure =
Calculate(
SUM('Table'[Total Rows Checked]),
'Table'[Check Ref. Index]
in { 1 }
(where 1 refers to index 1 (check 1))
Running Total Measure =
Calculate (
[Dimension Measure],
FILTER(
ALLSELECTED('Table'[Date]),
ISONORAFTER('Table'[Date], MAX('Table'[Date]), DESC)
)
)
当然这是一种荒谬的做法,还有更好的方法吗?
对于我的问题或其格式的任何失礼表示歉意 - 这是我的第一个问题!
提前致谢!
如何对您选择的每个日期的最大[检查的总行数]求和?
Rows Checked =
SUMX (
VALUES ( 'Table'[Date] ),
CALCULATE ( MAX ( 'Table'[Total Rows Checked] ) )
)
或者,您可以像这样从每天开始进行第一次检查:
Rows Checked =
CALCULATE (
SUM ( 'Table'[Total Rows Checked] ),
'Table'[Check Ref.] = "Check 1"
)
我正在尝试在 Power BI 中使用 DAX,但无论我如何尝试,我似乎都无法做到这一点。
我的源数据包含 SQL 中存储过程的输出,该过程针对一组原始数据计算多个验证检查的通过率和失败率,这些原始数据的行大小也每天发生变化。因此,我每天的数据都具有相同数量的验证检查类型,并给出为每个类型检查的总行数作为相同的值——例如:
Table
Date | Check Ref. | Rows Passed | Rows Failed | Total Rows Checked |
---|---|---|---|---|
01/01/21 | Check 1 | 20 | 200 | 220 |
01/01/21 | Check 2 | 40 | 180 | 220 |
01/01/21 | Check 3 | 60 | 160 | 220 |
01/01/21 | Check 4 | 10 | 210 | 220 |
01/01/21 | Check 5 | 15 | 205 | 220 |
02/01/21 | Check 1 | 20 | 230 | 250 |
02/01/21 | Check 2 | 200 | 50 | 250 |
02/01/21 | Check 3 | 100 | 150 | 250 |
02/01/21 | Check 4 | 40 | 210 | 250 |
02/01/21 | Check 5 | 160 | 90 | 250 |
03/01/21 | Check 1 | 290 | 10 | 300 |
03/01/21 | Check 2 | 110 | 190 | 300 |
03/01/21 | Check 3 | 25 | 275 | 300 |
03/01/21 | Check 4 | 175 | 125 | 300 |
03/01/21 | Check 5 | 20 | 280 | 300 |
等等等
我希望能够在报告选项卡中显示一张 KPI 卡,其中显示在任何特定日期检查的行数(例如 220 年 1 月 1 日)和累积行数 (运行)我 select 的所有日期总数(例如,如果我 select 编辑了 02/01/21 和 03/01/21,我希望看到 550)
我试图创建一个快速度量方法,将检查的总行数除以日期计数(我认为应该等于 5)——这适用于单个日期——但是当我 select 过滤器中的多个日期,我只得到这些值的平均值。当我尝试按日期和检查的总行数的平均总和进行 运行 计数时,也会发生同样的情况。
我能够让它工作的唯一方法是为每个验证检查提供一个从 1 到 5 的索引,然后创建两个快速度量,首先给我检查的行数的值在任何给定的一天,然后创建一个 运行 总度量过滤日期和创建的较早维度度量:
Dimension Measure =
Calculate(
SUM('Table'[Total Rows Checked]),
'Table'[Check Ref. Index]
in { 1 }
(where 1 refers to index 1 (check 1))
Running Total Measure =
Calculate (
[Dimension Measure],
FILTER(
ALLSELECTED('Table'[Date]),
ISONORAFTER('Table'[Date], MAX('Table'[Date]), DESC)
)
)
当然这是一种荒谬的做法,还有更好的方法吗?
对于我的问题或其格式的任何失礼表示歉意 - 这是我的第一个问题!
提前致谢!
如何对您选择的每个日期的最大[检查的总行数]求和?
Rows Checked =
SUMX (
VALUES ( 'Table'[Date] ),
CALCULATE ( MAX ( 'Table'[Total Rows Checked] ) )
)
或者,您可以像这样从每天开始进行第一次检查:
Rows Checked =
CALCULATE (
SUM ( 'Table'[Total Rows Checked] ),
'Table'[Check Ref.] = "Check 1"
)