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

如何在Power BI中按条件分组汇总表格,实现单Name行输出

解决Power BI中按Name分组取最优Segment组合的问题

下面提供两种实现方案,分别基于Power Query(数据预处理)和DAX(计算表),完全匹配你的需求:


方案一:Power Query 实现(推荐用于数据清洗阶段)

步骤如下:

  1. 将原始数据导入Power BI,进入Power Query编辑器
  2. 选中原始表,点击「转换」选项卡 → 「分组依据」,设置:
    • 分组列:依次添加 Name、Segment1、Segment2
    • 新列名:Count,操作选择「行计数」
      得到每个Name-Segment组合的AccountID计数表
  3. 添加自定义列,计算每个Name对应的最大计数:
    = List.Max(Table.SelectRows(#"分组的行", (x) => x[Name] = [Name])[Count])
    
  4. 筛选行:保留Count等于自定义列值的行(此时已筛选出每个Name的最高计数组合)
  5. 添加优先级列,处理平局时优先选择非空Segment:
    = if [Segment1] <> null and [Segment1] <> "" and [Segment2] <> null and [Segment2] <> "" then 1 
      else if [Segment1] <> null and [Segment1] <> "" then 2 
      else 3
    
  6. 按Name升序、优先级升序排序,确保非空组合排在前面
  7. 再次分组:按Name分组,操作选择「所有行」,新列名设为Grouped Rows
  8. 添加自定义列提取每组第一行:
    = Table.First([Grouped Rows])
    
  9. 展开自定义列,选择需要的字段(Name、Count、Segment1、Segment2),调整列顺序后加载到Power BI

方案二:DAX 计算表实现(适合报表内动态计算)

创建三个DAX计算表,最终得到结果:

1. 计算每个Name-Segment组合的计数

CombinationCounts = 
SUMMARIZE(
    '原始表',
    '原始表'[Name],
    '原始表'[Segment1],
    '原始表'[Segment2],
    "Count", COUNTROWS('原始表')
)

2. 计算每个Name的最大计数

NameMaxCounts = 
SUMMARIZE(
    CombinationCounts,
    CombinationCounts[Name],
    "MaxCount", MAX(CombinationCounts[Count])
)

3. 筛选最优组合并处理平局

FinalResult = 
VAR CombinedTable = NATURALLEFTOUTERJOIN(CombinationCounts, NameMaxCounts)
VAR FilteredMax = FILTER(CombinedTable, [Count] = [MaxCount])
VAR AddPriority = 
    ADDCOLUMNS(
        FilteredMax,
        "Priority",
        SWITCH(
            TRUE(),
            NOT(ISBLANK([Segment1])) && NOT(ISBLANK([Segment2])), 1,
            NOT(ISBLANK([Segment1])), 2,
            3
        )
    )
VAR RankedGroups = 
    ADDCOLUMNS(
        AddPriority,
        "GroupRank", RANKX(FILTER(AddPriority, [Name] = EARLIER([Name])), [Priority], , ASC, DENSE)
    )
RETURN
    SELECTCOLUMNS(
        FILTER(RankedGroups, [GroupRank] = 1),
        "Name", [Name],
        "Max of Count of Account ID", [MaxCount],
        "Segment1", [Segment1],
        "Segment2", [Segment2]
    )

内容的提问来源于stack exchange,提问作者Here 2 Learn VBA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:27:03