有没有办法通过以下方式在Google BigQuery中创建临时表:
SELECT * INTO <temp table>
FROM <table name>
Run Code Online (Sandbox Code Playgroud)
我们可以在SQL中创建一样吗?
对于复杂查询,我需要创建临时表来存储我的数据.
Fel*_*ffa 13
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
Run Code Online (Sandbox Code Playgroud)
2018年更新:https://stackoverflow.com/a/50227484/132438
bigquery中的每个查询都会创建一个包含结果的临时表.临时除非您为目标表命名,否则您可以控制其生命周期.
使用api查看临时表名称,或在查询时命名表.
2019 年更新- 通过 BigQuery脚本,正式支持 CREATE TEMP TABLE。请参阅此处的公共文档。
CREATE TEMP TABLE Example
(
x INT64,
y STRING
);
INSERT INTO Example
VALUES (5, 'foo');
INSERT INTO Example
VALUES (6, 'bar');
SELECT *
FROM Example;
Run Code Online (Sandbox Code Playgroud)
可以WITH在"新标准SQL"中创建临时表.请参见WITH子句.
Google给出的一个例子:
WITH subQ1 AS (SELECT SchoolID FROM Roster),
subQ2 AS (SELECT OpponentID FROM PlayerStats)
SELECT * FROM subQ1
UNION ALL
SELECT * FROM subQ2;
Run Code Online (Sandbox Code Playgroud)
小智 7
要创建临时表,请在使用 CREATE TABLE 语句时使用 TEMP 或 TEMPORARY 关键字,并且使用 CREATE TEMPORARY TABLE 需要脚本,因此最好从 begin 语句开始。
Begin
CREATE TEMP TABLE <table_name> as select * from <table_name> where <condition>;
End ;
| 归档时间: |
|
| 查看次数: |
23462 次 |
| 最近记录: |