簡體   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