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

Power BI 基于切片器选择筛选列并计算符合条件的年度总销售额

Power BI 按切片器选中年份动态计算合规总销售额方案

前置准备:优化数据表结构

先进入Power Query编辑器对原始宽表做转换,降低后续计算逻辑复杂度:

  • 选中所有非销售额、非排除规则列(如公司ID、公司名称等)作为保留列
  • 选中2016-2020年五列销售额数据,右键选择「逆透视列」,生成存储年份的「属性」列、存储对应销售额的「值」列
  • 将「属性」列重命名为「年份」,数据格式调整为整数类型

方案1:通用动态匹配逻辑(适配任意年份选择组合)

新建如下DAX度量值,可自动匹配选中年份对应的排除规则列:

合规总销售额 = 
VAR 选中年份 = ALLSELECTED('你的表名'[年份])
VAR 排除列后缀 = CONCATENATEX(选中年份, [年份], "-", [年份], ASC)
VAR 符合条件的销售额 = 
SUMX(
    '你的表名',
    IF(
        CALCULATE(VALUES('你的表名'[Excluded 后缀]), TREATAS({排除列后缀}, '你的表名'[排除列后缀])) = "N",
        '你的表名'[销售额],
        0
    )
)
RETURN
符合条件的销售额

注:将代码中你的表名替换为实际数据表名称即可

方案2:固定规则枚举方案(性能更稳定)

如果你的排除规则列固定为15种预设组合,直接用SWITCH枚举所有情况,运行效率更高:

合规总销售额_固定规则版 = 
VAR 选中年份拼接 = CONCATENATEX(ALLSELECTED('你的表名'[年份]), [年份], "-", [年份], ASC)
RETURN
SUMX(
    '你的表名',
    SWITCH(
        选中年份拼接,
        "2016", IF('你的表名'[Excluded 2016] = "N", '你的表名'[2016年销售额], 0),
        "2017", IF('你的表名'[Excluded 2017] = "N", '你的表名'[2017年销售额], 0),
        "2016-2017", IF('你的表名'[Excluded 2016-2017] = "N", '你的表名'[2016年销售额] + '你的表名'[2017年销售额], 0),
        "2016-2017-2018", IF('你的表名'[Excluded 2016-2017-2018] = "N", '你的表名'[2016年销售额] + '你的表名'[2017年销售额] + '你的表名'[2018年销售额], 0)
        // 剩余11种年份组合按照以上规则补全即可
    )
)

最终效果配置

  • 切片器绑定「年份」字段,开启多选模式
  • 表格可视化行维度添加「年份」字段,值添加上述度量值,即可得到示例中的匹配计算结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:18:04