如何在Google BigQuery中创建临时表

Vas*_*ara 24 google-bigquery

有没有办法通过以下方式在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)


Fel*_*ffa 9

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

bigquery中的每个查询都会创建一个包含结果的临时表.临时除非您为目标表命名,否则您可以控制其生命周期.

使用api查看临时表名称,或在查询时命名表.

  • 我不想通过API创建临时表.我想在浏览器工具(https://bigquery.cloud.google.com)中查询时通过查询本身创建它. (3认同)

Yun*_*ang 9

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)

  • 您需要在 CREATE 语句之前和之后立即添加“Begin”和“End”语句,但除此之外,这是最简单的答案。 (7认同)
  • 除非我在前面放置一个“Begin”并在后面放置一个“End”语句,否则我无法运行 CREATE 语句。如果没有,我会收到错误:“运行查询时出错,使用 CREATE TEMPORARY TABLE 需要脚本” (2认同)

Far*_*eam 7

可以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)

  • 这个答案虽然可能对某些用例有用,但并没有解决原始问题.WITH不创建临时表 - 它是一个命名的子查询.大查询不会将WITH的结果表示为表.每次引用已命名的子查询时,它都会再次执行,这可能是原始问题试图避免的.请参阅答案中的WITH链接以进行确认. (10认同)
  • 这个答案是错误的,`WITH`不会创建临时表。每当调用`WITH`表时,查询就会运行。https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#with-clause (8认同)

小智 7

要创建临时表,请在使用 CREATE TABLE 语句时使用 TEMP 或 TEMPORARY 关键字,并且使用 CREATE TEMPORARY TABLE 需要脚本,因此最好从 begin 语句开始。

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


小智 6

现在是 2022 年,如果您在 BQ 的交互式窗口中键入代码来创建 TEMP 表,它将不起作用。可能会显示以下错误消息:

在此输入图像描述

它隐约会让您知道您的交互式窗口应该与某些会话相关联。有关于如何创建会话等的官方文档,

对我来说,简短而简单的方法是转到Google BigQuery Interactive 窗口的“更多”菜单,选择“查询设置”

在此输入图像描述

它将显示在 SS 下面(截至 2022 年 4 月) 在此输入图像描述

启用/单击“使用会话模式”并“保存”。就这样,享受你的临时表吧:D