Wie schreibt man einen LEFT JOIN in BigQuery ist Standard-SQL?

Wir haben eine Abfrage, die funktioniert in BigQuery-Legacy-SQL. Wie schreiben wir es in Standard-SQL, damit es funktioniert?

SELECT Hour, Average, L.Key AS Key FROM
(SELECT 1 AS Key, * 
FROM test.table_L AS L)
LEFT JOIN 
(SELECT 1 AS Key, Avg(Total) AS Average 
FROM test.table_R) AS R 
ON L.Key = R.Key ORDER BY Hour ASC

Derzeit die Fehler die es gibt ist:

Equality is not defined for arguments of type ARRAY<INT64> at [4:74]

BigQuery verfügt über zwei Modi für Anfragen: ältere SQL und SQL-Standard. Wir haben uns angeschaut, die BigQuery Standard-SQL-Dokumentation und auch sehen, SO beantworten auf Standard-SQL-joins in BigQuery - aber so weit, so unklar ist uns, was die key-änderung benötigt werden könnte.

Table_L sieht wie folgt aus:

Row    Hour
 1      A
 2      B
 3      C

Table_R sieht wie folgt aus:

Row    Value
 1      10
 2      20
 3      30

Ergebnisse Gewünscht:

Row  Hour  Average(OfR)  Key
 1     A      20          1
 2     B      20          1 
 3     C      20          1

Wie wir diese umschreiben BigQuery Legacy-SQL-Abfrage zum arbeiten im Standard-SQL?

  • Was willst du mit dieser Abfrage zu tun? Es sei denn key ist eine Spalte in table_L dies nicht funktionieren sollte, in einer der beiden Versionen.
  • zeigen Sie die Abfrage, die für Sie arbeitet im Legacy-SQL, und so werden wir in der Lage sein, um Ihnen zu helfen mit der Arbeit, die version in Standard-SQL
  • Die Abfrage, die funktioniert im Legacy-SQL aufgelistet werden, ist bereits gezeigt. Das ist die eine, die die Fehler bei der Verwendung in SQL-Standard, wird gezeigt, wie gut.
  • Abfrage in deine Frage macht nicht viel Sinn und so ist es schwer zu helfen, w/o zu verstehen, was es ist, dass Sie versuchen zu tun. Ich schlage vor, Sie zu erklären, was genau Sie tun, mit dem Beispiel von Eingabedaten und erwartete Ausgabe
  • Die Abfrage ist das hinzufügen der Durchschnitt der Tabelle auf der "rechten" zu jeder Zeile der "linken" Tabelle. Ist es eine Art zu tun, die einen cross join. Es funktioniert gut auf BigQuery. Warum sollte es nicht funktionieren?
  • Beispiel-Tabellen Hinzugefügt.
  • Da die ON Zustand hat l.key in es. Es sei denn, dass eine Spalte in der Tabelle, dann erhalten Sie eine Fehlermeldung. Und, Sie haben bereits zwei Spalten mit key im select, das ist umständlich, zumindest.
  • Schlüssel-Feld ist nicht in der Tabelle - was ist der Sinn/die Logik hinter "key" - Feld?
  • Das Key-Feld in dieser Abfrage ermöglicht einen cross-join-Typ Funktion zwischen den beiden Tabellen, wenn die Tabellen nicht wirklich ein verknüpfen Schlüssel.
  • wie Sie sehen können aus meiner Antwort - Sie brauchen nicht cross join der hier (zumindest so wie die Frage formuliert ist, jetzt) somit müssen keine künstlichen Schlüssel Feld :o)
  • Ja. Schön. Versuchen Sie es jetzt. Auch haben wir gerade entdeckt, wir waren fehlende Teil der Abfrage, wenn wir es kopiert über. Die Abfrage sollte machen jetzt mehr Sinn. Auch der Fehler ist ein anderer Fehler, die wir korrigieren oben.
  • Sie haben zu Recht über die Abfrage nicht funktioniert. Wir haben gerade realisiert, dass wir uns verpasst, die Eröffnung Teil der Abfrage an, wenn wir es kopiert über. Es ist genau jetzt und der Fehler BigQuery wirft aktualisiert wird.

InformationsquelleAutor Praxiteles | 2016-12-26
Schreibe einen Kommentar