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

Power BI中使用DAX从多表创建新表报错,求解决方案

解决DAX创建新表的报错问题

错误原因分析

你的公式存在两个核心问题:

  1. SUMMARIZE 以 Assets 表为上下文,但直接在分组列中引用 Costs[Type Name],若两张表未建立正确的激活关系,或关系方向不匹配,DAX无法自动关联两张表的数据,导致上下文冲突报错。
  2. 筛选条件中使用的 Assets[AssetsKEY] 与分组列的 Assets[AssetsSKEY] 列名不一致,可能是笔误,若这并非同一列,筛选逻辑会出现偏差。

修正方案

方案1:使用 SUMMARIZECOLUMNS(推荐)

SUMMARIZECOLUMNS 是更现代、稳定的多表分组聚合函数,能自动处理表间关系:

NewTable = 
SUMMARIZECOLUMNS (
    Assets[AssetsSKEY],
    'Costs'[Type Name],
    // 筛选非空的AssetsSKEY(注意列名与分组列统一)
    FILTER(Assets, Assets[AssetsSKEY] <> BLANK()),
    "Forecast", SUM('Costs'[Forecast Costs])
)

方案2:修正 SUMMARIZE + ADDCOLUMNS 组合

若坚持使用 SUMMARIZE,需通过 RELATED 或 CALCULATE 明确关联另一表的数据:

NewTable = 
CALCULATETABLE (
    ADDCOLUMNS (
        // 先按Assets表的主键分组
        SUMMARIZE(Assets, Assets[AssetsSKEY]),
        // 通过表间关系获取Costs表的Type Name(要求关系为一对多,Assets是一方)
        "Type Name", RELATED('Costs'[Type Name]),
        // 计算对应资产的成本总和
        "Forecast", CALCULATE(SUM('Costs'[Forecast Costs]))
    ),
    // 筛选非空的资产主键
    Assets[AssetsSKEY] <> BLANK()
)

额外注意事项

  • 检查表间关系:确保 Assets 和 Costs 表已通过关联列(如 AssetsSKEY)建立激活的关系,关系方向需符合业务逻辑(通常是 Assets 为一方,Costs 为多方)。
  • 列名一致性:确认 Assets[AssetsSKEY] 和 Assets[AssetsKEY] 是否为同一列,若为笔误请统一修正列名。
  • 多值处理:若一个 AssetsSKEY 对应多个 Type Name,需根据业务需求选择聚合方式(如用 CONCATENATEX 合并多值,或调整分组逻辑)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:04:59