2017-02-09 4 views
0

Ich habe die google-cloud-bigquery Edelstein (Version 0,20.2, kann im Moment nicht aktualisieren).Bigquery Platzhalter Abfrage mit Rubin Edelstein

Ich habe ein Audit-Datensatz, die viele Tabellen im folgenden Format enthält:

audit.some_table20170101 
audit.some_table20170102 
audit.some_table20170103 

etc ..

ich eine Abfrage auszuführen, ich versuche, die alle diese Tabellen scannen, und geben Sie mir der letzte Wert des Feldes some_field.

Was denn ich wollte ist die Tabellen Wildcard:

FROM audit.some_table* 

und hoffentlich

SELECT LAST(some_field) AS last_some_field 
  1. Während BigQuery Web-Konsole konnte ich so durch tun mit Backticks (FROM `audit.some_table *`), aber das programmatisch mit dem Juwel zu tun, verursacht ein Google :: Cloud :: InvalidArgumentError: ungültig: Ungültiger Tabellenname: `audit.some_table *`

  2. Auch in der Webkonsole, wenn ich versuche, den LAST-Befehl zu verwenden, erfordert es die Verwendung von Legacy-SQL, die dann einen Fehler aufgrund der Backticks des vorherigen Abschnitts gibt. Wenn ich Legacy-SQL zu deaktivieren, ist LAST nicht mehr verfügbar (unbekannte Befehl) und dann muss ich durch einen Zeitstempel Spalte absteigender Reihenfolge und begrenzen 1.

Irgendwelche Ideen, wie diese Probleme zu lösen, und in der Lage sein abfragen mit der oben genannten Erwähnung Edelstein und Version?

Antwort

0

LAST ist nur bei einer Bestellung sinnvoll. Tabellen in BigQuery haben keine Reihenfolge, und wenn Sie SELECT * FROM table ausführen, erhalten Sie möglicherweise Ergebnisse in anderer Reihenfolge jedes Mal. Daher ist es das richtige, ORDER BY some_value DESC LIMIT 1 Konstrukt zu verwenden.

Die wildcard tables sind in der Tat nur in Standard SQL verfügbar, um ähnliche Funktionalität mit Legacy SQL zu erhalten, können Sie TABLE_DATE_RANGE function in FROM-Klausel verwenden.

Verwandte Themen