[英]Can i create table or insert data from stored procedure results use CALL in BigQuery?
I want use stored procedure results how data to create table or insert.我想使用存储过程结果如何创建表或插入数据。 But my example isn't working
但我的例子不起作用
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
Your SQL implies that procedure returns an implicit dataset which could be used in later CREATE TABLE, but this is not how BigQuery store procedure works.您的 SQL 意味着该过程返回一个隐式数据集,可以在以后的 CREATE TABLE 中使用,但这不是 BigQuery 存储过程的工作方式。
One way is to move the CREATE TABLE to inside the procedure一种方法是将 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);
If for some reason you don't want CREATE TABLE in procedure body, alternatively, you may use a temp table to bring the resultset out of the procedure, like如果出于某种原因您不想在过程主体中创建表,或者,您可以使用临时表将结果集带出过程,例如
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.