【发布时间】:2021-05-27 23:36:40
【问题描述】:
使用Table.NestedJoin JoinKind.FullOuter,当右表“key”中存在左表“key”中不存在的值时,可以将null写入列。
但是,与左表中的 null 不同,因为单元格为空,此创建的 null 不 = True 与公式 [column] = null。
例如:
自定义列
添加了公式 =[A]=null
注意 null 的不同结果
@987654324 @
MCode 重现上述
let
Source1 = Table.FromRecords({
[A="a"],
[A="b"],
[A=null],
[A="c"]
}),
type1 = Table.TransformColumnTypes(Source1,{"A", type text}),
Source2 = Table.FromRecords({
[A="c"],
[A="d"]
}),
type2 = Table.TransformColumnTypes(Source2,{"A", type text}),
combo = Table.NestedJoin(type1,"A",type2,"A","joined",JoinKind.FullOuter),
#"Added Custom" = Table.AddColumn(combo, "Custom", each [A]=null)
in
#"Added Custom"
我们将不胜感激有关如何处理此问题的说明和建议。
编辑 除了上述之外,执行Replace 也只会替换第 3 行中的 null,而不是第 5 行中的 null。似乎有一些不同之处这两个空值。
注意:如果我展开表格,A列中的null现在将正确测试。
【问题讨论】:
-
出于好奇,如果你使用
[A] is null,甚至([A] as null) = null,结果是什么? -
@JeroenMostert 那也没用。
List.Count(List.RemoveNulls({[A]}))=0似乎适用于两个 null 的一种方法,但这似乎是一种相当尴尬的方法,而且肯定不符合我找到的文档。它不处理其他问题,例如Replace无法工作。 -
那么就具有错误的所有特征。我当时在想,可能以某种方式创建了
nothing值,但应该通过明确的null转换来消除它。与null的比较应该只产生true或false而不管涉及的类型,而不是null,因为PQ 不使用SQL 的三值逻辑。 -
@JeroenMostert 这个问题可能是 PQ 评估模型的结果。无论如何,通过使用 Buffer 函数强制求值,两个 null 的行为相同。请参阅下面的答案。
标签: excel powerquery