【问题标题】:DAX Measure to calculate aggregate data, but group by Case IDDAX Measure 计算聚合数据,但按案例 ID 分组
【发布时间】:2019-07-15 16:59:13
【问题描述】:

所以我有一个变量

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
)

这让我返回了过去 2 年中设备的中断次数。这只是最近两年,因为我的表格视觉对象有一个针对该时间范围的过滤器。

我祈祷我说得通,因为我已经尝试这样做 2 周了。

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            |

【问题讨论】:

  • 感谢您编辑我的帖子,我希望我清楚我的标题和我需要什么。感谢您提前提供的所有帮助。
  • 简单的Outage Count = COUNT(Outages[CASE_ID])有什么问题?
  • 我需要它来计算过去两年的 Case_ID,但仅限于从昨天开始发布的子项。

标签: powerbi dax


【解决方案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 函数是一个表格过滤器,可从视觉对象中删除任何过滤器上下文,以便包含所有未被切片器或页面/报告级别过滤器过滤掉的 DateCase 值。否则,日期早于TODAY()-1 的行会出现空白。日期值布尔过滤是不言自明的,但我在末尾添加了另一个表过滤器 VALUES(Outages[SubItem]),以从视觉对象中添加回 SubItem 上下文。

CALCULATE 部分功能类似。在更改过滤器上下文以删除CaseDate 上的过滤器上下文并仅从变量中生成的列表中获取SubItem 值后,我们计算所有Case 值。

【讨论】:

  • 天啊,我现在可以吻你了,男人(不是同性恋)或女人。我知道我需要创建一个列表,但我不知道在哪里或如何,我想了很长时间。非常感谢你。
  • 我还有一个问题,创建度量以将 count(case_ID) 总数应用于每一行的最佳方法是什么。
  • FILTER 中尝试ALLSELECTED(Outages) 而不是Outages
  • 我尝试了 FILTER ( ALLSELECTED(Outages), Outages[SubItem] IN devices ) 并且一直下降到 9。这等于该区域的总数。
  • 那么你要找的总数是多少?
猜你喜欢
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 2014-12-24
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多