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

Power BI如何按两列groupby并列出另两列唯一值同时计数

Power BI按字段分组拼接唯一值+计数实现方案

你判断的方向是对的,CONCATENATEX是DAX里实现分组字符串拼接最直接的函数,以下是可直接复用的操作方法:

方法一:DAX新建计算表(无需进入Power Query,直接在建模层实现)

操作路径:点击顶部菜单栏「建模」选项卡 → 选择「新表」,在公式栏输入对应DAX代码即可。

分组聚合结果 = 
SUMMARIZE(
    '你的CSV表名', // 替换为你实际导入的CSV数据源表名称
    '你的CSV表名'[car],
    '你的CSV表名'[city],
    // 拼接color唯一值,套[]匹配输出格式
    "color", "[" & CONCATENATEX(DISTINCT('你的CSV表名'[color]), '你的CSV表名'[color], ", ") & "]",
    // 拼接code唯一值
    "code", "[" & CONCATENATEX(DISTINCT('你的CSV表名'[code]), '你的CSV表名'[code], ",") & "]",
    // 统计组内唯一行数
    "count", COUNTROWS(DISTINCT('你的CSV表名'))
)

核心逻辑说明:

  • SUMMARIZE函数承担分组作用,指定的car、city就是分组维度,和SQL的GROUP BY逻辑一致
  • DISTINCT()负责提取当前分组下对应字段的去重值,避免重复值被拼接到结果里
  • CONCATENATEX是迭代拼接函数,会逐行遍历去重后的值集合,按你指定的分隔符拼接为完整字符串
  • 计数部分用COUNTROWS(DISTINCT('你的CSV表名'))可以自动排除组内完全重复的行,统计结果更准确

方法二:Power Query清洗阶段实现(适合需要提前固化清洗逻辑的场景)

如果你更习惯在数据预处理阶段完成计算,可以在Power Query编辑器里操作:

  1. 导入CSV数据源后进入Power Query编辑器,同时选中car、city两列,点击顶部「转换」选项卡 → 选择「分组依据」
  2. 在弹出的配置窗口中,依次添加3个聚合列:
    • 列名输入color,聚合操作选择「所有行」,自定义公式为"[" & Text.Combine(List.Distinct([color]),", ") & "]"
    • 列名输入code,聚合操作选择「所有行」,自定义公式为"[" & Text.Combine(List.Distinct([code]),",") & "]"
    • 列名输入count,聚合操作选择「对行进行计数」
  3. 点击确认后即可得到和预期完全一致的输出结果。

提示:如果你的原始数据里同一个分组下存在重复的color或code值,两种方法都已经通过去重函数做了处理,不会出现重复拼接的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 07:01:02