2016-06-06 10 views

risposta

14

In SQL legacy, gli utenti possono fare riferimento a dati da un sottoinsieme di tabelle in un set di dati utilizzando le funzioni di caratteri jolly della tabella. In SQL standard, gli utenti possono ottenere lo stesso risultato utilizzando UNION ALL. Tuttavia, questo approccio potrebbe non essere conveniente quando gli utenti desiderano determinare dinamicamente il set di tabelle utilizzando, ad esempio, un intervallo di date (supportato utilizzando TABLE_DATE_RANGE e TABLE_DATE_RANGE_STRICT in SQL legacy) o altri criteri complessi (supportato da TABLE_QUERY in SQL legacy). Con SQL standard, BigQuery offre un equivalente a quanto descritto di seguito.

La seguente query SQL legacy che utilizza la funzione jolly TABLE_QUERY può essere riscritta utilizzando SQL standard.

di query SQL Legacy (utilizzando TABLE_QUERY): query SQL

SELECT SUM(value1) 
FROM TABLE_QUERY([myproject:mydataset],"table_id = 'mydailytable_20150105' OR 
table_id = 'mydailytable_20150106' OR table_id = 'maydailytable_20150110'") 
GROUP BY value2; 

Legacy (utilizzando TABLE_DATE_RANGE):

SELECT SUM(value1) 
FROM TABLE_DATE_RANGE([myproject:mydataset], TIMESTAMP("2015-01-05"), TIMESTAMP("2015-01-10")) 

query SQL standard:

SELECT SUM(value1) 
FROM `myproject.mydataset.mydailytable_*` 
WHERE _TABLE_SUFFIX = '20150105' 
    OR _TABLE_SUFFIX = '20150106' 
    OR _TABLE_SUFFIX = '20150110' 
GROUP BY value2; 

Nella query sopra riportata, la tabella dei caratteri jolly myproject.mydataset.mydailytable_* corrisponde a tutte le tabelle nel set di dati myproject.mydataset che hanno table_id a partire da mydailytable_. Ad esempio, per abbinare tutte le tabelle nel set di dati, l'utente può utilizzare un prefisso vuoto per il carattere jolly. Quindi, myproject.mydataset.* corrisponde a tutte le tabelle nel set di dati.

Poiché * è un carattere speciale, i nomi delle tabelle jolly devono essere citati quando li si utilizza in una query.

La colonna _TABLE_SUFFIX pseudo:

La pseudo colonna _TABLE_SUFFIX ha tipo STRING e può essere usato come qualsiasi altra colonna. È un nome di colonna riservato, quindi deve essere sottoposto a un alias quando lo si utilizza come parte dell'elenco SELECT.

documentazione ufficiale per questa funzionalità è disponibile qui:

https://cloud.google.com/bigquery/docs/wildcard-tables https://cloud.google.com/bigquery/docs/querying-wildcard-tables

+0

è possibile aggiungere link alla documentazione ufficiale si prega –

+1

wow, funziona davvero! cosa resta da sapere se sarà effettivamente supportato nella versione di rilascio –

+0

Questo è già supportato nell'ultima versione di BigQuery, stiamo solo aspettando che la documentazione ufficiale sia disponibile. Pubblicherò un link una volta che lo avremo pronto. Grazie! –

Problemi correlati