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

Power BI中按用户补全非空公司名的方法咨询

解决方案:Power BI中按用户填充空值Company字段

方法一:Power Query(Transform Data)预处理(推荐)

你尝试的Transform Data本身就是非常合适的方案——属于数据清洗环节,能在数据加载阶段完成处理,对后续计算性能更友好,具体步骤如下:

  • 进入Transform Data界面,选中目标数据表
  • 点击「转换」选项卡 → 「分组依据」,配置参数:
    • 分组依据:选择User列
    • 新列名:输入NonEmptyCompany(自定义名称即可)
    • 操作:选择「自定义」,输入公式:List.First(List.RemoveNulls([Company]))

      这个公式会提取当前用户所有行中第一个非空的Company值,确保同一用户的非空值能被统一提取

  • 点击确定后,生成仅包含User和NonEmptyCompany的分组表
  • 返回原数据表,点击「合并查询」→ 「合并查询作为新查询」,选择原表和分组表,匹配列选User,合并类型选「左外部」
  • 展开合并后的列,仅保留NonEmptyCompany字段
  • 添加自定义列,输入公式:if [Company] = null then [NonEmptyCompany] else [Company]
  • 将这个自定义列重命名为Company(或保留原列,用新列替代),最后移除多余辅助列,关闭并应用即可

方法二:DAX计算列(临时需求备选)

如果不想修改原始数据结构,也可以用DAX创建计算列实现:

Filled Company = 
IF(
    ISBLANK('Table'[Company]),
    CALCULATE(
        MAX('Table'[Company]),
        ALLEXCEPT('Table', 'Table'[User])
    ),
    'Table'[Company]
)
  • 原理:ALLEXCEPT保留当前行的User上下文,筛选出该用户的所有行,用MAX提取非空的Company值(若同一用户的非空值一致,MAX/MIN/FIRSTNONBLANK效果相同)
  • 注意:如果同一用户存在多个不同的非空Company值,这个方法会取最大值,需先确认数据逻辑合理性,避免歧义

关键注意事项

  • 若同一用户的非空Company值存在冲突(比如同一用户有两个不同的Company),需先排查数据正确性,否则填充结果会不符合预期
  • Power Query方法适合批量数据清洗,刷新数据时自动同步;DAX计算列适合临时展示或不想改动原始数据的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:28:10