2016-06-21 6 views
1

Ich lade Daten in BigQuery über Avro, eine meiner Spalten ist ein Array. Das scheint ok zu laden, da BigQuery jedoch root als Präfix an die Spaltennamen anfügt, muss ich alle Spalten in ihren entsprechenden Namen auswählen. Ich habe den --noflatten_results Flag enthalten, aber die Abfrage schlägt fehl mitBigQuery: Wählen Sie REPEATED Felder als REPEATED Felder

Query „Kann nicht für das Feld order_ids gültiges Ausgabeschema erstellen Versuchen order_ids zu root.order_ids in den äußersten SELECT umbenennen.“:

SELECT 
root.a AS a, 
root.b AS b, 
root.orders_ids AS order_ids, 
root.c AS c, 
root.d AS d 
FROM dataset.table 

Antwort

2

eines Entfernen Übergeordneter Datensatz aus einem wiederholten Feld ist schwer mit Legacy-SQL. --noflatten_results ist Best-Effort und unterstützt nicht viele Transformationen über wiederholte Felder, z. B. Umbenennen.

Wenn Sie Standard-SQL verwenden, sollte es ziemlich einfach sein. Die Ergebnisse von Standard-SQL-Abfragen werden standardmäßig nicht geändert, und durch Verweisen auf Felder in Datensätzen in einer SELECT-Klausel werden diese aus übergeordneten Datensätzen entfernt.

SELECT root.* from dataset.table; 

die CLI verwenden, können Sie mit dem SQL-Standard zu verwenden, geben Sie --nouse_legacy_sql auf der Befehlszeile hinzufügen.

Verwandte Dokumentation:

+0

Dank Danny, das funktioniert. Haben Sie eine Folge, wenn Sie wissen. Ich benutzte TIMESTAMP, um eine lange Epoche in ein vom Menschen lesbares Datum zu konvertieren, aber das funktioniert nicht im Standard. Gibt es eine Möglichkeit, den gleichen Effekt zu erzielen? –

+0

Ich bin blind. Die Funktionen "Zusätzliche Zeitstempelkonvertierung" in den Dokumenten wurden verpasst. Vielen Dank. Gut, jetzt zu gehen! –

Verwandte Themen