Im Legacy SQL
können Benutzer Tabellen-Platzhalterfunktionen wie TABLE_DATE_RANGE
, TABLE_QUERY
und TABLE_DATE_RANGE_STRICT
verwenden.
Gibt es eine ähnliche Funktion mit dem Standard SQL
?
In Legacy-SQL können Benutzer Daten aus einer Teilmenge von Tabellen in einem Dataset mithilfe von Tabellen-Platzhalterfunktionen referenzieren. In Standard-SQL können Benutzer dasselbe Ergebnis mit UNION ALL
erreichen. Dieser Ansatz ist jedoch möglicherweise nicht praktisch, wenn Benutzer den Tabellensatz dynamisch ermitteln möchten, indem sie beispielsweise einen Datumsbereich (unterstützt mit TABLE_DATE_RANGE
und TABLE_DATE_RANGE_STRICT
in altem SQL) oder andere komplexe Kriterien (unterstützt von% co_de) verwenden % in altem SQL). Mit Standard SQL bietet BigQuery ein Äquivalent zu dem unten beschriebenen.
Die folgende ältere SQL-Abfrage, die die Wildcard-Funktion TABLE_QUERY
verwendet, kann mit Standard-SQL umgeschrieben werden.
Legacy-SQL-Abfrage (mit TABLE_QUERY
):
Legacy-SQL-Abfrage (mit TABLE_QUERY
):
Standard-SQL-Abfrage:
%Vor% In der obigen Abfrage stimmt die Platzhaltertabelle TABLE_DATE_RANGE
mit allen Tabellen im Dataset myproject.mydataset.mydailytable_*
überein, die myproject.mydataset
haben, beginnend mit table_id
. Um beispielsweise alle Tabellen im Dataset zu vergleichen, kann der Benutzer ein leeres Präfix für den Platzhalter verwenden. So stimmt mydailytable_
mit allen Tabellen im Dataset überein.
Da myproject.mydataset.*
ein Sonderzeichen ist, müssen Platzhaltertabellennamen in Anführungszeichen gesetzt werden, wenn sie in einer Abfrage verwendet werden.
Die Spalte *
pseudo:
Die Spalte _TABLE_SUFFIX
pseudo hat den Typ STRING und kann wie jede andere Spalte verwendet werden. Es ist ein reservierter Spaltenname, daher muss er mit einem Alias versehen werden, wenn er als Teil der SELECT-Liste verwendet wird.
Offizielle Dokumentation für diese Funktion ist hier verfügbar:
Tags und Links google-bigquery