首页 > 解决方案 > DAX 自定义总计未按预期运行

问题描述

我有一个 Measure 计算累积总数:

CumulativeCount:=
VAR date1 = MAX( DimDate[Date] )
VAR date2 = MAX( FactTable[EndDate] )
RETURN
CALCULATE (
    SUM( FactTable[Count] ),
    DimDate[Date] <= date1,
    DimDate[Date] <= date2, 
    ALL( DimDate[Date] )
)

另一个,实际用于数据透视表,在计算总计时,应该将每个日期的累积总计相加:

CumulativeCountForPivot:=
IF (
    -- If calculating for one group
    COUNTROWS( VALUES( FactTable[Group] ) ) = 1,
    -- Do core logic
    [CumulativeCount],
    -- Else add up the results from each group
    SUMX(
        VALUES( FactTable[Group] ),
        [CumulativeCount]
    )
)

我不明白为什么最后一栏中的总计是 12,而不是 6。

在此处输入图像描述

标签: powerbidaxpowerpivot

解决方案


原因是总计是针对GroupA并合并的,并且在该日期GroupB有一个累积计数(对于每个组)。126

On 06/01/2017there are no records for GroupAso the [CumulativeCount]measure is return a blank,即使在该日期之前有记录并且计数为6. 如果您GroupA使用 a Countof 0on添加了一条记录06/01/2017,那么您会看到6出现。

6如果您想要仅在该日期显示的度量,请尝试以下操作:

CountForPivot =
    VAR TempTable = SUMMARIZE(FactTable,
                        FactTable[Group],
                        FactTable[EndDate],
                        "Cumulative",
                            CALCULATE(SUM(FactTable[Count]),
                                FILTER(ALLEXCEPT(FactTable, FactTable[Group]),
                                    FactTable[EndDate] <= MAX(FactTable[EndDate])
                                )
                            )
                    )
    RETURN SUMX(TempTable, [Cumulative])

推荐阅读