Подтвердить что ты не робот

Как создать временную таблицу в Google BigQuery

Есть ли способ создать временную таблицу в Google BigQuery с помощью:

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

то же, что мы можем создать в SQL?

Для сложных запросов мне нужно создать временные таблицы для хранения моих данных.

4b9b3361

Ответ 1

Обновление 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

Ответ 2

Обновление 2019 года - С помощью сценариев Biga Query scripting (бета-версия) официально поддерживается CREATE TEMP TABLE. Смотри общедоступную документацию здесь.

Обновление 2018 года: fooobar.com/questions/411294/...

Каждый запрос в bigquery создает временную таблицу с результатами. Временно, если вы не дадите имя таблице назначения, тогда вы контролируете ее жизненный цикл.

Используйте API, чтобы увидеть временное имя таблицы, или назовите ваши таблицы при запросах.

Ответ 3

Временная таблица может быть создана с помощью 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;

Ответ 4

Возьмите пример 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

Ответ 5

Обновление 2019 года - С помощью сценариев Biga Query scripting (бета-версия) официально поддерживается 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;

Ответ 6

Чтобы создать временную таблицу, используйте ключевое слово TEMP или TEMPORARY, когда вы используете оператор CREATE TABLE, а для использования CREATE TEMPORARY TABLE требуется сценарий, поэтому лучше начинать с оператора begin. Begin CREATE TEMP TABLE <table_name> as select * from <table_name> where <condition>; End ;