所以我有一个变量
var varSubItem = CALCULATE (MAX(Outages[SubItem]), Outages[DATE] >= DATE(2019, 07, 14) )
计算出在1天内发生故障的项目。见下文。
然后我还有另一个变量
var data =
CALCULATE (
COUNT ( Outages[CASE_ID] ),
ALLSELECTED ( Outages ),
Outages[SubItem] = devices
)
这使我可以回溯过去两年中设备的停机次数。这只是最近两年,因为我的表格视觉效果具有针对该时间范围的过滤器。
我祈祷我有道理,因为我已经尝试这样做了两个星期。
Devices w Outages 2Yr =
VAR devices =
CALCULATE ( MAX ( Outages[DEVICE_ID] ), Outages[DATE] >= DATE ( 2019, 07, 14 ) )
VAR data =
CALCULATE (
COUNT ( Outages[CASE_ID] ),
ALLSELECTED ( Outages ),
Outages[DEVICE_ID] = devices
)
RETURN data
我明白了
| Area | Item | SubItem | Case | Date | Outage Count |
|--------|------|---------|-----------|-----------------|--------------|
| XXXXX' | ABC1 | 123A | 123456789 | 7/14/19 1:15 AM | 1 |
| | ABC2 | 123B | 132456798 | 7/14/19 3:20 AM | 1 |
| | ABC3 | 123C | 984561325 | 7/14/19 6:09 PM | 1 |
| | ABC4 | 123D | 789613453 | 7/14/19 3:54 PM | 3 |
| | ABC5 | 123E | 335978456 | 7/14/19 2:10 PM | 2 |
| Total | | | | | 8 |
当我应该得到这个时,
| Area | Item | SubItem | Case | Date | Outage Count |
|--------|------|---------|-----------|-----------------|--------------|
| XXXXX' | ABC1 | 123A | 123456789 | 7/14/19 1:15 AM | 1 |
| | ABC2 | 123B | 132456798 | 7/14/19 3:20 AM | 1 |
| | ABC3 | 123C | 984561325 | 7/14/19 6:09 PM | 1 |
| | ABC4 | 123D | 789613453 | 7/14/19 3:54 PM | 1 |
| | ABC4 | 123D | 789613211 | 4/19/18 4:20 AM | 1 |
| | ABC4 | 123D | 789611121 | 9/24/17 5:51 AM | 1 |
| | ABC5 | 123E | 335978456 | 7/14/19 2:10 PM | 1 |
| | ABC5 | 123E | 335978111 | 2/21/19 7:19 AM | 1 |
| Total | | | | | 8 |
答案 0 :(得分:1)
我认为您想要的更接近此:
Devices w Outages 2Yr =
VAR devices =
CALCULATETABLE (
VALUES ( Outages[SubItem] ),
ALLSELECTED ( Outages ),
Outages[DATE] >= TODAY() - 1
)
RETURN
CALCULATE (
COUNT ( Outages[Case] ),
FILTER ( Outages, Outages[SubItem] IN devices )
)
这将创建一个SubItem
值列表,而不是您从MAX
获得的值列表,这就是您的ALLSELECTED
函数需要使用的位置。
编辑:要在SubItem
级进行总计,请尝试以下调整:
Devices w Outages 2Yr =
VAR devices =
CALCULATETABLE (
VALUES ( Outages[SubItem] ),
ALLSELECTED ( Outages ),
Outages[DATE] >= TODAY() - 1,
VALUES ( Outages[SubItem] )
)
RETURN
CALCULATE (
COUNT ( Outages[Case] ),
ALLSELECTED ( Outages ),
Outages[SubItem] IN devices
)
对于初学者DAX用户而言,这里的确切逻辑有些复杂,但是请记住,DAX完全是关于过滤器的。
对于变量devices
,我们想要一个受日期约束的当前上下文中所有SubItem
值的列表。 CALCULATETABLE
函数允许我们修改过滤器上下文。 ALLSELECTED
函数是表过滤器,它从视觉上删除任何过滤器上下文,以便包括所有未由切片器或页面/报告级别过滤器过滤掉的Date
和Case
值。否则,对于日期在TODAY()-1
之前的行,您将获得空白。日期值布尔过滤是不言自明的,但是我在末尾添加了另一个表过滤器VALUES(Outages[SubItem])
,以便从视觉对象中添加回SubItem
上下文。
CALCULATE
的功能类似。在更改过滤器上下文以删除Case
和Case
上的过滤器上下文之后,我们仅对变量中生成的列表中的Date
值进行计数,然后对所有SubItem
值进行计数。>