2014-02-19 18 views
9

My-Datensatz (DS1) sieht wie folgt aus:BigQuery: Gruppe von Tabellenname

2014_01_01_tableA 
2014_01_01_tableB 

2014_01_02_tableA 
2014_01_02_tableB 

Die Abfrage:

SELECT date, COUNT(1) AS counter 
FROM [ds1.2014_01_01_tableA], [ds1.2014_01_01_tableB], [ds1.2014_01_02_tableA], [ds1.2014_01_02_tableB] 
GROUP BY date; 

Returns:

date, counter 
2014-01-01, 100 
2014-01-02, 200 

Ist es irgendwie möglich auch nach dem Tabellennamen zu gruppieren? So etwas vielleicht? ...

SELECT date, COUNT(1) AS counter, TABLE_NAME() AS table_name 
FROM [ds1.2014_01_01_tableA], [ds1.2014_01_01_tableB], [ds1.2014_01_02_tableA], [ds1.2014_01_02_tableB] 
GROUP BY table_name, date; 

Erwartetes Ergebnis:

date, counter, table_name 
2014-01-01, 50, 2014_01_01_tableA 
2014-01-01, 50, 2014_01_01_tableB 
2014-01-02, 100, 2014_01_02_tableA 
2014-01-02, 100, 2014_01_02_tableB 

TABLE_NAME() AS table_name existiert nicht, leider.

Antwort

8

Leider gibt es keine Möglichkeit, dies sauber zu machen. Ich habe eine interne Feature-Anfrage hinzugefügt.

Die hässliche Art und Weise, es zu tun ist:

SELECT date, COUNT(1) AS counter, table_name 
FROM 
(SELECT *, "2014_01_01_tableA" as table_name FROM [ds1.2014_01_01_tableA]), 
(SELECT *, "2014_01_01_tableB" as table_name FROM [ds1.2014_01_01_tableB]), 
(SELECT *, "2014_01_02_tableA" as table_name FROM [ds1.2014_01_02_tableA]), 
(SELECT *, "2014_01_02_tableB" as table_name FROM [ds1.2014_01_02_tableB]) 
GROUP BY table_name, date; 
+4

Alle Updates zu dieser Funktion? –

+2

Jetzt, da es "Table Wildcard-Funktionen" gibt, die nach dem Tabellennamen gruppieren können, fühlt es sich so an, als wäre es mehr denn je nötig. – Jack

+0

@ jordan-tigani - Sind Fortschritte dabei gemacht worden? –

1

Dieser _TABLE_SUFFIX Parameter und Tabelle als Platzhalter jetzt möglich ist.

SELECT date, COUNT(1) AS counter, _TABLE_SUFFIX as table_name 
FROM `ds1.*` 
WHERE _TABLE_SUFFIX IN ('2014_01_01_tableA', '2014_01_01_tableB', '2014_01_02_tableA', '2014_01_02_tableB') 
GROUP BY table_name, date 

_TABLE_SUFFIX ist, was durch die Platzhalter in der FROM Anweisung erfasst wird. Es kann ein partielles Tabellensuffix oder ein vollständiger Tabellenname sein. Wenn Sie beispielsweise FROM ds1.2014_01_* verwenden, lautet der entsprechende _TABLE_SUFFIX 01_tableA.