如何将 BigQuery 脚本的结果写入 table?

How to write the result of a BigQuery script to a table?

我有一个 BigQuery SQL 脚本,如下所示:

DECLARE my_dates STRING;

SET report_dates = (
  SELECT month FROM my_dataset.my_date_able)
);

EXECUTE IMMEDIATE format("""
SELECT * from
( select x,
         y,
         month,
         sum(things) as num_things
  FROM my_dataset.my_data
  GROUP BY 1,2,3
)
PIVOT
(
  sum(num_things) AS s
  FOR month in %s
)
""", my_dates);

我想做的是找到一种简单的方法来执行此脚本并将结果写入另一个 table 但我无法弄清楚。看来我可能需要从模式创建一个 table,然后分别将每个调用插入 EXECUTE IMMEDIATE - 肯定有更直接的东西吗?

您可以使用CREATE TABLE AS SELECT 语句:

DECLARE my_dates STRING;

SET report_dates = (
  SELECT month FROM my_dataset.my_date_able)
);

EXECUTE IMMEDIATE format("""
CREATE TABLE `<yourproject>.<yourdataset>.<target_table_name>` AS

SELECT * from
( select x,
         y,
         month,
         sum(things) as num_things
  FROM my_dataset.my_data
  GROUP BY 1,2,3
)
PIVOT
(
  sum(num_things) AS s
  FOR month in %s
)
""", my_dates);

BigQuery 将从源 table 推断架构,在所需位置创建 table 并填充查询结果。