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

如何用Power Query实现不同月份客户财务数据的正确全连接?

解决Power Query中Full Join后客户列出现Null的问题

原始数据

二月开票数据(Feb 23)

customerfeb 23
customer 1$1000
customer 2$2000
customer 4$4000

三月开票数据(Mar 23)

customermar 23
customer 1$1000
customer 3$3000
customer 5$5000

问题描述

使用Full Outer Join合并后,来自三月表的customer 3、customer 5对应的customer列显示为null,无法实现所有客户统一展示、无数据月份显示$0的预期效果。

解决方案

步骤1:统一客户列数据类型

确保两个表的customer列均为文本类型,避免因类型不匹配导致匹配失败。在Power Query编辑器中选中列,点击「转换」→「数据类型」→「文本」。

步骤2:执行完全外部合并

  1. 将两个月份的数据加载到Power Query,分别命名为Feb23和Mar23。
  2. 选中Feb23,点击「合并查询」→「合并查询作为新查询」。
  3. 在合并窗口中,选择Mar23为合并对象,匹配列选择两个表的customer,连接类型选择「完全外部」。

步骤3:合并客户列,修复Null值

合并后会生成包含customer、feb 23、Mar23(嵌套列)的表:

  1. 展开Mar23列,仅选择mar 23字段。
  2. 添加自定义列,公式为:
    = if [customer] = null then [Mar23.customer] else [customer]
    
  3. 将自定义列重命名为customer,删除原customer列和Mar23.customer列(若存在)。

步骤4:替换空值为$0

选中feb 23和mar 23列,点击「转换」→「替换值」,将null替换为$0。如果是数值类型数据,可先替换为0,再设置单元格格式为货币。

完整M代码示例

let
    // 加载二月数据
    Feb23 = Table.FromRecords({
        [customer = "customer 1", #"feb 23" = "$1000"],
        [customer = "customer 2", #"feb 23" = "$2000"],
        [customer = "customer 4", #"feb 23" = "$4000"]
    }),
    // 加载三月数据
    Mar23 = Table.FromRecords({
        [customer = "customer 1", #"mar 23" = "$1000"],
        [customer = "customer 3", #"mar 23" = "$3000"],
        [customer = "customer 5", #"mar 23" = "$5000"]
    }),
    // 完全外部合并
    Merged = Table.FullOuterJoin(Feb23, "customer", Mar23, "customer", JoinKind.FullOuter),
    // 合并客户列,替换null
    CombinedCustomer = Table.AddColumn(Merged, "customer_combined", each if [customer] = null then [Mar23.customer] else [customer]),
    // 删除多余列并重命名
    CleanedColumns = Table.RenameColumns(Table.RemoveColumns(CombinedCustomer, {"customer", "Mar23.customer"}), {{"customer_combined", "customer"}}),
    // 替换空值为$0
    ReplaceNulls = Table.ReplaceValue(CleanedColumns, null, "$0", Replacer.ReplaceValue, {"feb 23", "mar 23"}),
    // 调整列顺序
    ReorderedColumns = Table.ReorderColumns(ReplaceNulls, {"customer", "feb 23", "mar 23"})
in
    ReorderedColumns

最终结果

customerfeb 23mar 23
customer 1$1000$1000
customer 2$2000$0
customer 3$0$3000
customer 4$4000$0
customer 5$0$5000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:37:44