Powerbi DAX度量用于计算聚合数据,但按案例ID分组
所以我有一个变量Powerbi DAX度量用于计算聚合数据,但按案例ID分组,powerbi,dax,Powerbi,Dax,所以我有一个变量 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 ) 这给
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
)
这给了我过去两年设备的停机次数。这仅仅是过去两年,因为我的table visual有一个针对该时间段的过滤器
我祈祷我说的有道理,因为我已经尝试了两周了
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 |
我认为你想要的更接近这个:
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 )
)
这将创建一个子项
值列表,而不是使用MAX
获得的单个值,这就是ALLSELECTED
函数需要执行的操作
编辑:要在
子项
级别合计,请尝试以下调整:
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完全是关于过滤器的
对于变量设备
,我们需要当前上下文中受日期约束的所有子项
值的列表。CALCULATETABLE
函数允许我们修改过滤器上下文。ALLSELECTED
函数是一个表过滤器,它从可视化视图中删除任何过滤器上下文,以便包括所有未被切片器或页面/报告级过滤器过滤掉的Date
和Case
值。否则,日期早于TODAY()-1
的行将出现空白。日期值布尔筛选是不言自明的,但是我在末尾添加了另一个表筛选器,VALUES(Outages[SubItem])
,以从可视化视图中添加回子项
上下文
计算
工件的功能类似。在更改过滤器上下文以删除Case
和Date
上的过滤器上下文后,我们计算所有Case
值,并且只从变量中生成的列表中获取子项
值。感谢编辑我的帖子,我希望我清楚我的标题和需要什么。提前感谢您的帮助。简单地中断计数=Count(中断[CASE\u ID])
有什么问题吗?我需要它来计算过去两年的CASE\u ID,但只计算从昨天起就已过时的子项。天哪,我现在可以吻你了,男人(不是同性恋)或女人。我知道我需要创建一个列表,但我不知道在哪里或如何创建,我花了很长时间试图找到它。非常感谢。我还有一个问题,创建一个度量值以将计数总数(case_ID)应用于每行的最佳方法是什么。请尝试ALLSELECTED(Outages)
而不是过滤器中的Outages
。我尝试了过滤器(ALLSELECTED(Outages),设备中的Outages[子项])一路下来就得到了9分。这等于面积的总和。那么你要找的总数是多少?