You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI使用UNION/SUMMARIZE/FILTER生成新表时Last Month字段汇总错误求助

问题分析与解决方案

你的DAX表达式中,ADDCOLUMNS里的COUNT('Users'[Name])没有针对当前行的Account做筛选,因此返回的是整个Users表的用户总数,而非对应Account的上月用户数。同时UNION后的两个汇总表字段不匹配(第一部分无Last Month,第二部分无Total Units),导致后续补全字段时无法关联上下文。

以下是两种可行的修正方案:

方案一:在ADDCOLUMNS中添加上下文筛选

New Table = 
ADDCOLUMNS(
    UNION(
        // 从Purchased表汇总符合条件的Account与Total Units
        SUMMARIZE(
            FILTER('Purchased', 'Purchased'[Units] > 1),
            'Purchased'[Account],
            "Total Units", SUM('Purchased'[Units])
        ),
        // 从Users表汇总上月的Account与对应用户数
        SUMMARIZE(
            FILTER('Users', 'Users'[Start Time].[MonthNo] = EOMONTH(TODAY(), -1)),
            'Users'[Account],
            "Last Month", COUNT('Users'[Name])
        )
    ),
    // 针对当前Account计算上月用户数
    "Last Month", 
    CALCULATE(
        COUNT('Users'[Name]),
        FILTER(
            'Users',
            'Users'[Account] = EARLIER([Account]) &&
            'Users'[Start Time].[MonthNo] = EOMONTH(TODAY(), -1)
        )
    ),
    // 补全Total Units的缺失值(无对应数据时返回空)
    "Total Units", 
    CALCULATE(
        SUM('Purchased'[Units]),
        FILTER(
            'Purchased',
            'Purchased'[Account] = EARLIER([Account]) &&
            'Purchased'[Units] > 1
        )
    )
)

方案二:先提取所有Account再分别计算指标(逻辑更清晰)

New Table = 
VAR AllAccounts = 
    DISTINCT(
        UNION(
            SELECTCOLUMNS(FILTER('Purchased', 'Purchased'[Units] > 1), "Account", 'Purchased'[Account]),
            SELECTCOLUMNS(FILTER('Users', 'Users'[Start Time].[MonthNo] = EOMONTH(TODAY(), -1)), "Account", 'Users'[Account])
        )
    )
RETURN
ADDCOLUMNS(
    AllAccounts,
    "Total Units",
    CALCULATE(
        SUM('Purchased'[Units]),
        'Purchased'[Account] = EARLIER([Account]),
        'Purchased'[Units] > 1
    ),
    "Last Month",
    CALCULATE(
        COUNT('Users'[Name]),
        'Users'[Account] = EARLIER([Account]),
        'Users'[Start Time].[MonthNo] = EOMONTH(TODAY(), -1)
    )
)

关键说明

  • 使用EARLIER([Account])获取当前行的Account值,作为筛选条件,确保计算范围限定在当前Account。
  • CALCULATE会修改筛选上下文,结合筛选条件精准提取对应Account的目标数据。

内容的提问来源于stack exchange,提问作者MicrobicTiger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 01:50:28