如何在PowerBI中为状态行匹配对应客户值并整理表格
在PowerBI中匹配Status非空行与对应分组首个非空Customer值的实现方法
问题场景
原始数据表:
| Date | Activities | Status | Customer |
|---|---|---|---|
| 2022-11-16 | Not important | null | ABC |
| 2022-11-16 | Not important | null | null |
| 2022-11-16 | Not important | null | null |
| 2022-11-16 | Not important | null | null |
| 2022-11-16 | Not important | Succes | null |
| 2022-11-16 | Not important | null | DEF |
| 2022-11-16 | Not important | null | null |
| 2022-11-16 | Not important | null | null |
| 2022-11-16 | Not important | null | null |
| 2022-11-16 | Not important | Failed | null |
需要实现:保留Status列非空的行,并为这些行匹配同一Date+Activities分组内首个非空的Customer值,最终结果如下:
| Date | Activities | Status | Customer |
|---|---|---|---|
| 2022-11-16 | Not important | Succes | ABC |
| 2022-11-16 | Not important | Failed | DEF |
方法一:Power Query 数据转换实现
步骤:
- 打开Power Query编辑器,加载原始数据表。
- 添加索引列(确保后续计算保留原始行顺序):在「添加列」选项卡中选择「索引列」→「从0开始」或「从1开始」。
- 分组计算首个非空Customer:
- 选中
Date和Activities列,点击「转换」选项卡→「分组依据」。 - 分组设置:
- 分组依据:已选的
Date、Activities - 新列名:
FirstCustomer - 操作:选择「自定义」,输入公式:
List.First(List.RemoveNulls([Customer]))
- 分组依据:已选的
- 点击确定,得到分组后的表。
- 选中
- 合并回原始表:
- 保留分组后的表,回到原始表(未分组的),点击「合并查询」→「合并查询作为新查询」。
- 合并依据:选择
Date和Activities列,关联分组后的表。 - 展开合并列,只保留
FirstCustomer列。
- 筛选并整理列:
- 筛选
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
相关产品推荐
相关产品推荐

