繁体   English   中英

我可以在 BigQuery 中使用 CALL 创建表或从存储过程结果插入数据吗?

[英]Can i create table or insert data from stored procedure results use CALL in BigQuery?

我想使用存储过程结果如何创建表或插入数据。 但我的例子不起作用

DECLARE startDate, endDate STRING;
SET startDate = '20200801';
SET endDate = '20200802';

CALL `myproject.dataset.procedure1`(startDate, endDate);

CREATE OR REPLACE TABLE `myproject.dataset.table`
PARTITION BY date

您的 SQL 意味着该过程返回一个隐式数据集,可以在以后的 CREATE TABLE 中使用,但这不是 BigQuery 存储过程的工作方式。

一种方法是将 CREATE TABLE 移动到过程内部

DECLARE startDate, endDate STRING;
SET startDate = '20200801';
SET endDate = '20200802';

CREATE PROCEDURE `myproject.dataset.procedure1`(startDate STRING, endDate STRING)
BEGIN
  CREATE OR REPLACE TABLE `myproject.dataset.table`
  AS SELECT ... FROM ... WHERE date >= startDate AND date <= endDate -- just my guess
  PARTITION BY date 
END;
CALL `myproject.dataset.procedure1`(startDate, endDate);

如果出于某种原因您不想在过程主体中创建表,或者,您可以使用临时表将结果集带出过程,例如

DECLARE startDate, endDate STRING;
SET startDate = '20200801';
SET endDate = '20200802';

CREATE PROCEDURE `myproject.dataset.procedure1`(startDate STRING, endDate STRING)
BEGIN
  CREATE TEMP TABLE myQueryResults
  AS SELECT ... FROM ... WHERE date >= startDate AND date <= endDate -- just my guess
  PARTITION BY date 
END;
CALL `myproject.dataset.procedure1`(startDate, endDate);

CREATE OR REPLACE TABLE `myproject.dataset.table`
AS SELECT * FROM myQueryResults
PARTITION BY date

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM