使用 Power BI 中的动态条件过滤 table 的意外结果

Unexpected result of measure from filtering table with dynamic criteria in Power BI

我有一个 table 叫 DW_XYZ:

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

*月=2

无B类数据

我想创建一个度量来存储我已经使用 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,所以我拖动度量,并将列类型拖动到 'visual filter' 并手动 select 'A',并对第二个视觉(类型 B)执行相同的操作。

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

尝试

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 的过滤器。如果没有这个,您应用于视觉对象的外部过滤器将强制评估仅在确定这些值时考虑该类型。