With Table.NestedJoin JoinKind.FullOuter, a null may be written into columns when there is a value in the right table "key" that does not exist in the left table "key".
However, unlike a null that is in the left table because the cell is empty, this created null does not = True with the formula [column] = null.
For example:
Joined Table
The null in row 5 was created as a result of the Join

Custom Column
added with formula =[A]=null
note the different results for the null

MCode to reproduce the above
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"
Explanations and suggestions as to how to deal with this would be appreciated.
Edit In addition to the above, doing a Replace will also only replace the null in row 3, and not the null in row 5. Seems there is something different about these two nulls.
Note: If I Expand the table, the null in Column A will now test correctly.








[A] is null, or even([A] as null) = null?List.Count(List.RemoveNulls({[A]}))=0, but that seems a rather awkward method, and certainly not in accord with documentation I have found. And it doesn't handle other issues, like the inability ofReplaceto work.nothingvalue got created, but that should have been weeded out with an explicitnullconversion. A comparison withnullshould yield only atrueorfalseregardless of types involved, notnull, as PQ does not use SQL's three-valued logic.