web-dev-qa-db-fra.com

Comment créer une table temporaire dans Google BigQuery

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.

28
Vasundhara

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
12
Felipe Hoffa

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.

5
Felipe Hoffa

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;
4
Fardream

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

3
Feczo

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 ;

0
Kuldeep Pal

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 
0
Ayaz Hoda