如何解决我可以在BigQuery中使用CALL创建表或从存储过程结果中插入数据吗?
我想使用存储过程结果如何创建表或插入数据。但是我的例子不起作用
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)
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。