Google BigQueryで一時テーブルを作成する方法はありますか。
SELECT * INTO <temp table>
FROM <table name>
sQLで作成できるのと同じですか?
複雑なクエリの場合は、データを格納する一時テーブルを作成する必要があります。
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
2018の更新: https://stackoverflow.com/a/50227484/132438
Bigqueryのすべてのクエリは、結果を含む一時テーブルを作成します。宛先テーブルに名前を付けない限り、一時的である場合は、そのライフサイクルを制御できます。
APIを使用して一時テーブル名を確認するか、クエリ時にテーブルに名前を付けます。
"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;
の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
一時テーブルを作成するには、CREATE TABLEステートメントを使用するときにTEMPまたはTEMPORARYキーワードを使用します。CREATETEMPORARY TABLEを使用するにはスクリプトが必要なので、beginステートメントから開始することをお勧めします。
Begin CREATE TEMP TABLE <table_name> as select * from <table_name> where <condition>; End ;
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