2016-06-15 15 views
0

Ich versuche exExtract bestimmte Felder aus Tabellen in BigQuery, wenn aus dem Abschnitt Tabellen mit identischen Namen Felder enthält

SELECT 
field1, --comes from table A 
field2, --comes from table B 
field3, --I want to grab this from table A, but table B has an identically named field 
FROM 
[datasetName.tableA], 
[datasetName.tableB], 

Ich habe

versucht
SELECT 
t1.field1, --comes from table A 
t2.field2, --comes from table B 
t1.field3, --I want to grab this from table A, but table B has an identically named field 
FROM 
[datasetName.tableA] t1, 
[datasetName.tableB] t2, 

Aber das erzeugt den Fehler

Incompatible types. 'duration' : TYPE_DOUBLE 'duration' : TYPE_INT64 

Ich bin mir nicht sicher, der beste Weg, damit umzugehen. Ich konnte eine zweite Ebene auf die select-Anweisung hinzufügen, so dass die Struktur wie

SELECT 
field1, 
field3 
[datasetName.tableA], 
UNION ALL 
SELECT 
field2, 
[datasetName.tableB], 

wäre aber, weil die tatsächliche Abfrage, die ich mit gerade arbeitete viel komplizierter als dieses Spielzeug Beispiel ist, das ist nicht optimal für die Lesbarkeit des Codes. Hat jemand irgendwelche Vorschläge?

Danke, Brad

+0

zumindest das Problem, das ich hier sehe, ist, dass Sie JOIN verwandte Begriffe mischen (in SELECT-Anweisung) mit UNION (in FROM). Kannst du bitte ein konkretes Beispiel für Input und Output geben, damit wir die Chance haben, dann zu helfen –

Antwort

1

Höchstwahrscheinlich werden Sie gegen UNION trete wollen (Anmerkung: in BigQuery Legacy-SQL - Komma bedeutet UNION ALL)

somethig Versuchen Sie, wie unten

SELECT 
    t1.field1 AS field1, 
    t2.field2 AS field2, 
    t1.field3 AS field3 
FROM [datasetName.tableA] t1 
JOIN [datasetName.tableB] t2 
ON t1.somefield = t2.anotherfield 

Stellen Sie sicher, dass Sie ein Feld und ein anderes Feld durch tatsächliche Felder in den entsprechenden Tabellen ersetzen

+0

Vielleicht fehle ich etwas hier konzeptionell, aber ich versuche nicht, einen Join zu machen. Was ich erreichen möchte, ist, bestimmte Felder aus verschiedenen Tabellen zu extrahieren, aber ich brauche diese Tabellen nicht, um eine bestimmte Beziehung zueinander zu haben. Was ich tun möchte, ist ein spezifisches Feld aus einer bestimmten Tabelle zu extrahieren. Es ist nur so, dass der Feldname in zwei verschiedenen Tabellen repliziert wird. –

+0

Obwohl ich dies mit einem Join * erreichen konnte, versuchte ich aktiv, UNION ALL anstelle von JOIN zu verwenden, weil es einfacher war, mein Ziel zu erreichen. Aber vielleicht ist es nicht. Vielleicht muss ich das also tun. –

+0

Wenn Sie Ihren Fall/Ihre Logik besser mit einem bestimmten Beispiel darstellen können, kann dies helfen: o) –

Verwandte Themen