web-dev-qa-db-ja.com

Google BigQueryで一時テーブルを作成する方法

Google BigQueryで一時テーブルを作成する方法はありますか。

SELECT * INTO <temp table> 
FROM <table name> 

sQLで作成できるのと同じですか?

複雑なクエリの場合は、データを格納する一時テーブルを作成する必要があります。

28
Vasundhara

2018年の更新-DDLによる最終的な回答

BigQueryのDDLサポートを使用すると、クエリの結果からテーブルを作成し、作成時にその有効期限を指定できます。たとえば、3日間の場合:

#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

2018の更新: https://stackoverflow.com/a/50227484/132438

Bigqueryのすべてのクエリは、結果を含む一時テーブルを作成します。宛先テーブルに名前を付けない限り、一時的である場合は、そのライフサイクルを制御できます。

APIを使用して一時テーブル名を確認するか、クエリ時にテーブルに名前を付けます。

5
Felipe Hoffa

"New Standard SQL"WITHを使用して一時テーブルを作成できます。 WITH句 を参照してください。

Googleの例:

WITH subQ1 AS (SELECT SchoolID FROM Roster),
     subQ2 AS (SELECT OpponentID FROM PlayerStats)
SELECT * FROM subQ1
UNION ALL
SELECT * FROM subQ2;
4
Fardream

のSQLサンプルを取る

SELECT name,count FROM mydataset.babynames 
  WHERE gender = 'M' ORDER BY count DESC LIMIT 6 INTO mydataset.happyhalloween;

同等の最も簡単なコマンドラインは

bq query --destination_table=mydataset.happyhalloween \ 
"SELECT name,count FROM mydataset.babynames WHERE gender = 'M' \
ORDER BY count DESC LIMIT 6"

こちらのドキュメントをご覧ください: https://cloud.google.com/bigquery/bq-command-line-tool#createtablequery

3
Feczo

一時テーブルを作成するには、CREATE TABLEステートメントを使用するときにTEMPまたはTEMPORARYキーワードを使用します。CREATETEMPORARY TABLEを使用するにはスクリプトが必要なので、beginステートメントから開始することをお勧めします。

Begin CREATE TEMP TABLE <table_name> as select * from <table_name> where <condition>; End ;

0
Kuldeep Pal

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