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

如何在PowerBI中基于多表创建生产汇总表并计算总量与占比

DAX实现多季节产量汇总及占比计算

核心思路

先将三个独立的季节表合并为统一数据集,再按季节分组计算单季总产,最后基于全局总产量计算各季节的产量占比。

完整DAX代码(适用于季节表已包含对应季节名称的情况)

如果你的季节A、季节B、季节C表中,season字段的值已经是"A"、"B"、"C",直接用以下代码创建新表:

Season_Production_Summary = 
VAR CombinedData = 
    UNION(
        '季节A',
        '季节B',
        '季节C'
    )
VAR TotalAllSeasons = CALCULATE(SUM(CombinedData[production]), ALL(CombinedData))
RETURN
    ADDCOLUMNS(
        SUMMARIZE(
            CombinedData,
            CombinedData[season],
            "Total_prodtn", SUM(CombinedData[production])
        ),
        "Percentage_Prodtn", DIVIDE([Total_prodtn], TotalAllSeasons, 0)
    )

代码解释

  • CombinedData:用UNION函数合并三个结构一致的表,生成包含所有季节产量数据的临时表。
  • TotalAllSeasons:通过CALCULATE+ALL计算全局总产量,ALL函数会忽略后续分组带来的筛选,确保得到所有季节的总和。
  • SUMMARIZE:按season字段分组,计算每个季节的总产量Total_prodtn。
  • ADDCOLUMNS:为分组后的表添加Percentage_Prodtn列,用DIVIDE函数处理除法(第三个参数0用于处理分母为0的异常情况,避免报错)。

特殊情况处理(季节表未直接标记季节名称)

如果你的三个表中season字段没有明确的"A"/"B"/"C"标识,需要用SELECTCOLUMNS手动指定季节名称后再合并:

Season_Production_Summary = 
VAR CombinedData = 
    UNION(
        SELECTCOLUMNS('季节A', "season", "A", "production", '季节A'[production]),
        SELECTCOLUMNS('季节B', "season", "B", "production", '季节B'[production]),
        SELECTCOLUMNS('季节C', "season", "C", "production", '季节C'[production])
    )
VAR TotalAllSeasons = CALCULATE(SUM(CombinedData[production]), ALL(CombinedData))
RETURN
    ADDCOLUMNS(
        SUMMARIZE(
            CombinedData,
            CombinedData[season],
            "Total_prodtn", SUM(CombinedData[production])
        ),
        "Percentage_Prodtn", DIVIDE([Total_prodtn], TotalAllSeasons, 0)
    )

注意事项

  • 确保三个原始表的字段名完全一致(season和production),否则UNION函数会执行失败。
  • DIVIDE函数是DAX中处理除法的推荐方式,相比直接用/运算符,它能自动处理除零错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:37:00