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

Power BI DAX需求:基于多选筛选动态计算客户分组并生成图表

Power BI 图表制作方案

需求概述

制作X轴为分组区间(Band)、Y轴为对应区间客户数量的图表,同时配置支持多选的筛选器(选项为Type1、Type2、Type3),筛选器选中不同组合时,需按规则计算客户剩余价值并匹配对应区间统计数量:

  • 选中Type1:计算Column D - Column E,结果10对应「6-10」区间、15对应「10+」区间,图表显示两区间各1个客户
  • 选中Type2:计算Column D - Column F,结果5、4均对应「1-5」区间,图表显示该区间2个客户
  • 选中Type3:计算Column D - Column G,结果2对应「1-5」区间、6对应「6-10」区间,图表显示两区间各1个客户
  • 同时选中Type1和Type2:计算Column D - (Column E+Column F),结果0对应「0」区间、3对应「1-5」区间,图表显示两区间各1个客户

实现步骤

1. 创建筛选器维度表

新建独立维度表(用于提供筛选器选项),内容如下:

Type
Type1
Type2
Type3

注:该表无需与主数据表建立关系,用于后续通过DAX识别选中的筛选项

2. 编写DAX计算逻辑

(1)剩余价值计算度量值

创建度量值剩余价值,根据筛选器选中的Type组合计算对应值:

剩余价值 = 
VAR SelectedTypes = VALUES('Type筛选表'[Type])
RETURN
SWITCH(
    TRUE(),
    "Type1" IN SelectedTypes && "Type2" IN SelectedTypes && "Type3" IN SelectedTypes, SUM('主数据表'[Column D]) - SUM('主数据表'[Column E]) - SUM('主数据表'[Column F]) - SUM('主数据表'[Column G]),
    "Type1" IN SelectedTypes && "Type2" IN SelectedTypes, SUM('主数据表'[Column D]) - SUM('主数据表'[Column E]) - SUM('主数据表'[Column F]),
    "Type1" IN SelectedTypes && "Type3" IN SelectedTypes, SUM('主数据表'[Column D]) - SUM('主数据表'[Column E]) - SUM('主数据表'[Column G]),
    "Type2" IN SelectedTypes && "Type3" IN SelectedTypes, SUM('主数据表'[Column D]) - SUM('主数据表'[Column F]) - SUM('主数据表'[Column G]),
    "Type1" IN SelectedTypes, SUM('主数据表'[Column D]) - SUM('主数据表'[Column E]),
    "Type2" IN SelectedTypes, SUM('主数据表'[Column D]) - SUM('主数据表'[Column F]),
    "Type3" IN SelectedTypes, SUM('主数据表'[Column D]) - SUM('主数据表'[Column G]),
    SUM('主数据表'[Column D]) // 未选中任何Type时的默认值,可按需调整
)

(2)区间客户数统计度量值

创建度量值区间客户数,将剩余价值匹配到对应区间并统计客户数量:

区间客户数 = 
VAR CurrentBand = SELECTEDVALUE('区间表'[Band])
RETURN
COUNTROWS(
    FILTER(
        '主数据表',
        VAR IndividualValue = 
            SWITCH(
                TRUE(),
                "Type1" IN VALUES('Type筛选表'[Type]) && "Type2" IN VALUES('Type筛选表'[Type]), '主数据表'[Column D] - '主数据表'[Column E] - '主数据表'[Column F],
                "Type1" IN VALUES('Type筛选表'[Type]) && "Type3" IN VALUES('Type筛选表'[Type]), '主数据表'[Column D] - '主数据表'[Column E] - '主数据表'[Column G],
                "Type2" IN VALUES('Type筛选表'[Type]) && "Type3" IN VALUES('Type筛选表'[Type]), '主数据表'[Column D] - '主数据表'[Column F] - '主数据表'[Column G],
                "Type1" IN VALUES('Type筛选表'[Type]), '主数据表'[Column D] - '主数据表'[Column E],
                "Type2" IN VALUES('Type筛选表'[Type]), '主数据表'[Column D] - '主数据表'[Column F],
                "Type3" IN VALUES('Type筛选表'[Type]), '主数据表'[Column D] - '主数据表'[Column G],
                '主数据表'[Column D]
            )
        RETURN
            SWITCH(
                TRUE(),
                IndividualValue = 0, "0",
                IndividualValue > 0 && IndividualValue <=5, "1-5",
                IndividualValue >5 && IndividualValue <=10, "6-10",
                IndividualValue >10, "10+"
            ) = CurrentBand
    )
)

(3)创建区间维度表

新建区间表用于X轴分组,内容如下:

Band
0
1-5
6-10
10+

3. 配置图表与筛选器

  • 将区间表中的Band字段拖至图表X轴
  • 将区间客户数度量值拖至图表Y轴
  • 将Type筛选表中的Type字段拖至筛选器面板,设置为多选模式

效果验证

根据筛选器的不同选择,图表将自动计算剩余价值并匹配对应区间统计客户数量,与预期结果一致:

  • 选Type1:「6-10」「10+」区间各1个客户
  • 选Type2:「1-5」区间2个客户
  • 选Type3:「1-5」「6-10」区间各1个客户
  • 选Type1+Type2:「0」「1-5」区间各1个客户

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:35:55