Power BI如何统计分号分隔字段中各产品对应折扣的企业数
Power BI 拆分单元格分号分隔值并按折扣类型计数操作步骤
核心思路是先把多值单元格拆分为单行单值,保留企业、产品、折扣的对应关系后再做聚合统计,全程不需要复杂代码,操作如下:
- 第一步:进入Power Query编辑器做数据清洗
点击顶部「主页」选项卡 > 「转换数据」,打开已导入的CSV数据表。
选中products列,点击顶部「转换」选项卡下的「拆分列」>「按分隔符」:- 分隔符选择分号,如果原始数据用的是中文分号就对应切换选项
- 拆分触发条件选「每次出现分隔符时」,展开高级设置,务必选择拆分为行,点击确定
踩坑提示:不要选拆分为列,拆分为行会自动把原多产品行展开为多行,每行仅对应1个产品,且自动保留该行原有的企业编号、折扣标识,不会出现匹配错乱。比如原企业1的
A;B+X行会拆为两行:企业1/A/X、企业1/B/X。
操作完成后点击「关闭并应用」,将清洗后的数据加载回数据模型。 - 第二步:生成二维统计结果
两种方案选其一即可:方案1:零代码矩阵快速出表
在可视化面板选择「矩阵」图表,按以下规则拖入字段:- 行区域:放入拆分后的
products字段 - 列区域:放入
discounts字段 - 值区域:放入
company字段,点击字段下拉菜单,将聚合方式改为「非重复计数」,即可直接得到每个产品对应X(无折扣)、Y(有折扣)的企业数量二维表。
方案2:DAX度量值固定统计口径
如果需要后续在其他图表复用统计逻辑,可以新建两个度量值,注意把代码里的你的数据表名替换成你实际导入的表名称:
新建「表格」可视化,行区域放入无折扣企业数 = CALCULATE( DISTINCTCOUNT('你的数据表名'[company]), '你的数据表名'[discounts] = "X" ) 有折扣企业数 = CALCULATE( DISTINCTCOUNT('你的数据表名'[company]), '你的数据表名'[discounts] = "Y" )products字段,值区域放入刚才建好的两个度量值,即可输出统计结果。 - 行区域:放入拆分后的
按照你提供的样例数据,最终统计结果核对参考:
| 产品 | 无折扣企业数(X) | 有折扣企业数(Y) |
|---|---|---|
| A | 2 | 0 |
| B | 2 | 1 |
| C | 1 | 1 |
| D | 0 | 1 |
| E | 1 | 0 |
| F | 0 | 1 |
内容的提问来源于stack exchange,提问作者A A
相关产品推荐
相关产品推荐

