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

如何在PowerBI中为状态行匹配对应客户值并整理表格

在PowerBI中匹配Status非空行与对应分组首个非空Customer值的实现方法

问题场景

原始数据表:

DateActivitiesStatusCustomer
2022-11-16Not importantnullABC
2022-11-16Not importantnullnull
2022-11-16Not importantnullnull
2022-11-16Not importantnullnull
2022-11-16Not importantSuccesnull
2022-11-16Not importantnullDEF
2022-11-16Not importantnullnull
2022-11-16Not importantnullnull
2022-11-16Not importantnullnull
2022-11-16Not importantFailednull

需要实现:保留Status列非空的行,并为这些行匹配同一Date+Activities分组内首个非空的Customer值,最终结果如下:

DateActivitiesStatusCustomer
2022-11-16Not importantSuccesABC
2022-11-16Not importantFailedDEF

方法一:Power Query 数据转换实现

步骤:

  1. 打开Power Query编辑器,加载原始数据表。
  2. 添加索引列(确保后续计算保留原始行顺序):在「添加列」选项卡中选择「索引列」→「从0开始」或「从1开始」。
  3. 分组计算首个非空Customer:
    • 选中Date和Activities列,点击「转换」选项卡→「分组依据」。
    • 分组设置:
      • 分组依据:已选的Date、Activities
      • 新列名:FirstCustomer
      • 操作:选择「自定义」,输入公式:
        List.First(List.RemoveNulls([Customer]))
        
    • 点击确定,得到分组后的表。
  4. 合并回原始表:
    • 保留分组后的表,回到原始表(未分组的),点击「合并查询」→「合并查询作为新查询」。
    • 合并依据:选择Date和Activities列,关联分组后的表。
    • 展开合并列,只保留FirstCustomer列。
  5. 筛选并整理列:
    • 筛选Status列,仅保留非空值。
    • 删除不需要的列(如索引列),调整列顺序为Date、Activities、Status、Customer(将FirstCustomer重命名为Customer)。

方法二:DAX 创建计算表实现

直接在「数据」选项卡中创建新的计算表,输入以下DAX公式:

目标结果表 = 
// 先按Date和Activities分组,计算每组首个非空Customer
VAR 分组客户映射 = 
    ADDCOLUMNS(
        SUMMARIZE('原始表', '原始表'[Date], '原始表'[Activities]),
        "首个非空客户", 
        CALCULATE(
            FIRSTNONBLANK('原始表'[Customer], 1),
            ALLEXCEPT('原始表', '原始表'[Date], '原始表'[Activities])
        )
    )
// 筛选Status非空的行,并匹配对应的首个客户
RETURN
    SELECTCOLUMNS(
        FILTER('原始表', NOT ISBLANK('原始表'[Status])),
        "Date", '原始表'[Date],
        "Activities", '原始表'[Activities],
        "Status", '原始表'[Status],
        "Customer", LOOKUPVALUE(
            分组客户映射[首个非空客户],
            分组客户映射[Date], '原始表'[Date],
            分组客户映射[Activities], '原始表'[Activities]
        )
    )

说明:

  • 分组客户映射:生成按Date+Activities分组的客户映射表,每组取第一个非空的Customer值。
  • 最终通过FILTER筛选出Status非空的行,再用LOOKUPVALUE匹配对应的客户值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:40:51