2016-09-21 2 views
0

In BigQuery ist es möglich, die Ergebnisse einer Abfrage in eine neue Tabelle zu schreiben. Ich möchte, dass die Tabelle nur erstellt wird, wenn die Abfrage mindestens eine Zeile zurückgibt. Grundsätzlich möchte ich nicht leere Tabellen erstellen. Ich kann keine Option dafür finden. (Ich benutze die Python-Bibliothek, aber ich nehme an, das gleiche gilt für die rohe API)Schreiben von einer Abfrage in eine Tabelle in BigQuery nur, wenn die Abfrage nicht leer ist

+0

Können Sie keine Standardeinstellungen verwenden? Wenn leer, verwenden Sie dann den Standardwert? – xCloudx8

+0

@ xCloudx8 nicht sicher, wir sind auf der gleichen Seite. Ich spreche darüber: http://Stackoverflow.com/a/14634697/825190 –

+1

Ich bekomme es auch nicht, jede Abfrage in BigQuery erstellt bereits eine Tabelle, auch wenn es anonym ist. Es muss einen zweiten Op geben, der einen Tisch neu schreibt, wenn er nicht leer ist. Sie können das nicht vermeiden, soweit ich weiß. – Pentium10

Antwort

1

Da Sie das Ziel in der Abfragedefinition angeben müssen und Sie nicht wissen, was es zurückgibt, wenn Sie es ausführen, können Sie Tack ein LIMIT 1 bis zum Ende?

Sie können die Zeilennummer im job result object überprüfen und dann die Abfrage ohne den Begrenzer erneut ausführen, wenn Ergebnisse in Ihrer neuen Tabelle vorhanden sind.

+0

Entschuldigung, ich habe vergessen, dies zu erwähnen. Natürlich kann man es in zwei Schritten tun, wie Sie vorschlagen. Meine Frage besteht darin, es innerhalb eines Anrufs zu tun. –

+0

Ich war noch nicht so lange in BigQuery, aber es scheint nicht so, als könnten Sie tun, was Sie fragen. Die Abfrage wird ausgeführt und die Ergebnisse entweder in eine Tabelle oder in den Arbeitsspeicher/die Anwendung geschrieben und müssen vor der Ausführung der Abfrage definiert werden. – Bmo

1

Es gibt keine Option, dies in einem Schritt zu tun. Ich würde empfehlen, die Abfrage auszuführen, die Ergebnisse zu überprüfen und dann eine Tabellenkopie mit WRITE_TRUNCATE durchzuführen, um die Ergebnisse an den endgültigen Speicherort zu übergeben, wenn die Zwischenausgabe mindestens eine Zeile enthält.

Verwandte Themen