Existe-t-il un moyen de créer une table temporaire dans Google BigQuery via:
SELECT * INTO <temp table>
FROM <table name>
même que nous pouvons créer en SQL?
Pour les requêtes complexes, je dois créer des tables temporaires pour stocker mes données.
Mise à jour 2018 - réponse définitive avec DDL
Avec la prise en charge DDL de BigQuery, vous pouvez créer une table à partir des résultats d'une requête - et spécifier son expiration au moment de la création. Par exemple, pendant 3 jours:
#standardSQL
CREATE TABLE `fh-bigquery.public_dump.vtemp`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 3 DAY)
) AS
SELECT corpus, COUNT(*) c
FROM `bigquery-public-data.samples.shakespeare`
GROUP BY corpus
Mise à jour 2018: https://stackoverflow.com/a/50227484/132438
Chaque requête dans bigquery crée une table temporaire avec les résultats. Temporaire, sauf si vous donnez un nom à la table de destination, vous contrôlez son cycle de vie.
Utilisez l'api pour voir le nom de la table temporaire ou nommez vos tables lors de la requête.
Une table temporaire peut être créée avec WITH
dans le "New Standard SQL" . Voir clause WITH .
Un exemple donné par Google:
WITH subQ1 AS (SELECT SchoolID FROM Roster),
subQ2 AS (SELECT OpponentID FROM PlayerStats)
SELECT * FROM subQ1
UNION ALL
SELECT * FROM subQ2;
Prenez l'exemple SQL de
SELECT name,count FROM mydataset.babynames
WHERE gender = 'M' ORDER BY count DESC LIMIT 6 INTO mydataset.happyhalloween;
L'équivalent en ligne de commande le plus simple est
bq query --destination_table=mydataset.happyhalloween \
"SELECT name,count FROM mydataset.babynames WHERE gender = 'M' \
ORDER BY count DESC LIMIT 6"
Voir la documentation ici: https://cloud.google.com/bigquery/bq-command-line-tool#createtablequery
Pour créer une table temporaire, utilisez le mot clé TEMP ou TEMPORARY lorsque vous utilisez l'instruction CREATE TABLE et l'utilisation de CREATE TEMPORARY TABLE nécessite un script, il est donc préférable de commencer par l'instruction begin.
Begin CREATE TEMP TABLE <table_name> as select * from <table_name> where <condition>; End ;
Exemple de création de tables temporaires dans GCP bigquery
CREATE TABLE `project_ID_XXXX.Sales.superStore2011`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
) AS
SELECT
Product_Name,Product_Category, SUM(profit) Total_Profit, FORMAT_DATE("%Y",Order_Date) AS Year
FROM
`project_ID_XXXX.Sales.superStore`
WHERE
FORMAT_DATE("%Y",Order_Date)="2011"
GROUP BY
Product_Name,Product_Category,Order_Date
ORDER BY
Year, Total_Profit DESC
LIMIT 5