Как создать временную таблицу в Google BigQuery
Есть ли способ создать временную таблицу в Google BigQuery с помощью:
SELECT * INTO <temp table>
FROM <table name>
то же, что мы можем создать в SQL?
Для сложных запросов мне нужно создать временные таблицы для хранения моих данных.
Ответы
Ответ 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 ;