Power Query中区分表连接无匹配与字段本身Null的最优方法
区分左外连接中两种Null场景的Power Query写法
要区分「未匹配到Table 2行导致的Date Null」和「匹配到但Table 2本身Date为Null」这两种情况,核心是给Table 2添加一个匹配标记列,明确标识哪些行是真正匹配到的,具体实现如下:
1. 预处理Table 2,添加匹配标记列
先给Table 2新增一个固定值为true的列,用来标记这是来自Table 2的有效匹配行:
#"Table2 With Match Flag" = Table.AddColumn(Table2, "Is_Table2_Matched", each true)
2. 修改连接与展开逻辑
使用带标记列的Table 2执行左外连接,展开时同时带出Date和标记列:
#"Merged Table" = Table.NestedJoin(Source, {"ID"}, #"Table2 With Match Flag", {"ID"}, "Table 2", JoinKind.LeftOuter), #"Expanded Table" = Table.ExpandTableColumn(#"Merged Table", "Table 2", {"Date", "Is_Table2_Matched"}, {"Table2_Date", "Is_Table2_Matched"})
3. 区分两种Null场景
通过Is_Table2_Matched列即可清晰判断Null成因:
- 若
Is_Table2_Matched为null:说明未在Table 2中找到对应ID的行,此时Table2_Date的Null是连接未匹配导致的 - 若
Is_Table2_Matched为true但Table2_Date为null:说明匹配到了Table 2的行,但该行Date字段本身为空
这种写法仅需一次预处理和连接操作,逻辑清晰且性能高效,后续可直接基于标记列做过滤、分类等操作。
内容的提问来源于stack exchange,提问作者Brian Schmitz
相关产品推荐
相关产品推荐

