【问题标题】:Unexpected result of measure from filtering table with dynamic criteria in Power BIPower BI 中具有动态条件的筛选表的测量结果意外
【发布时间】:2022-01-07 18:03:03
【问题描述】:

我有一个名为 DW_XYZ 的表:

Year Month Type Value
2021 1 A 10
2021 1 B 12
2021 2 A 20

*类型 B 在 Month=2 中没有数据

我想创建一个度量来存储我已经过滤的数据,这些数据是我上个月使用 dax 公式存储在 DW_XYZ 中的数据:

CALCULATE( 
 SUM(DW_XYZ[Value]), 
 FILTER(DW_XYZ,DW_XYZ[Month]= 
 CALCULATE(MAX(DW_XYZ[Month]), 
 FILTER(DW_XYZ,DW_XYZ[Year]=
 MAX(DW_XYZ[Year]))) && DW_XYZ[Year]=MAX(DW_XYZ[Year]))

根据度量,我创建了 2 个卡片视觉效果来分别显示 A 类和 B 类的数据。第一个视觉对象显示类型 A,所以我拖动度量,并将列类型拖动到“视觉过滤器”并手动选择“A”,并对第二个视觉对象(类型 B)执行相同操作。

对于 A 类型,卡片显示预期值(A 类型和 Month=2)。 但是对于 B 类型,卡片显示意外值(B 类型且月份 = 1),它应该是 B 类型和月份 = 2,即空白/零。 **顺便说一句,如果包含空白值处理的公式为零 (0) 而不是空白,将不胜感激。

【问题讨论】:

    标签: powerbi measure


    【解决方案1】:

    试试

    MyMeasure =
    VAR MaxYear =
        CALCULATE ( MAX ( DW_XYZ[Year] ), ALL ( DW_XYZ[Type] ) )
    VAR MaxMonth =
        CALCULATE ( MAX ( DW_XYZ[Month] ), ALL ( DW_XYZ[Type] ) )
    RETURN
        0
            + CALCULATE (
                SUM ( DW_XYZ[Value] ),
                FILTER ( DW_XYZ, DW_XYZ[Year] = MaxYear && DW_XYZ[Month] = MaxMonth )
            )
    

    上述内容与您的尝试之间的一个重要区别是,在确定最近的年份和月份时,将 ALL 应用于类型列作为CALCULATE 的过滤器。如果没有这个,您应用于视觉对象的外部过滤器将强制评估仅在确定这些值时考虑该类型。

    【讨论】:

    • 天啊,太棒了,返回完美的结果。非常感谢您的好意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    相关资源
    最近更新 更多