Ich stieß auf etwas seltsam mit linken äußeren Joins auf mehreren Schlüsseln in BigQuery. Wenn einer der Schlüssel auf der rechten Tabelle null
ist, stimmt er nicht überein und setzt daher null
in alle Werte für die richtige Tabelle.Links äußerer Join in BigQuery auf mehreren Schlüsseln nicht, wenn einer von ihnen null ist
Wenn ich habe 2 Tabellen
Table1 Table2
------------ ----------------
k1 |k2 |v3 k1 |k2 | v4
------------ ----------------
foo|boo |hey foo|NULL| you
bar|test|yo bar|test| hi
foo|NULL|hey
und ich die folgende beitreten
SELECT t1.k1, t1.k2, t1.v3, t2.v4 FROM [Table1] t1
LEFT OUTER JOIN EACH [Table2] t2
ON t1.k1=t2.k1 AND t1.k2=t2.k2
ich ein Ergebnis wie dieses
t1_k1|t1_k2|t1_v3|t2_v4
-----------------------
foo |boo |hey |NULL --No match here so NULL in t2_v4 it's ok
bar |test |hey |hi --It matches here on bar and test
foo |NULL |hey |NULL --It doesn't match on foo NULL.
ich, dass das letzte erwarten Reihe war
foo |NULL |hey |you
Ist das das erwartete Verhalten? Damit meine ich keine Treffer auf NULL
.
Gibt es eine andere Möglichkeit, das gewünschte Ergebnis zu erzielen?
Einige andere SQL-Anweisungen haben "IS NICHT DISTINCT FROM", aber BigQuery hat sie nicht. Weitere Informationen finden Sie unter "Wie neu zu schreiben IS DISTINCT FROM und nicht von DISTINCT FROM?" http://stackoverflow.com/questions/10416789/how-to-rewrite-is-distinct-from-and-is-not-distinct-from –