调试BigQuery存储过程

有什么方法可以在BigQuery存储过程" title="存储过程">存储过程中使用打印语句?我有一个类似下面的存储过程,我想看看如何生成SQL语句来调试问题,或者调试其他哪种更好的方法来调试正在产生的存储过程,等等。

CREATE OR REPLACE PROCEDURE `myproject.TEST.check_duplicated_prc`(project_name STRING, data_set_name STRING, table_name STRING, date_id DATE)

BEGIN

DECLARE sql STRING;

set sql ='Select date,col1,col2,col3,count(1) from `'||project_name||'.'||data_set_name||'.'||table_name|| '` where date='||date_id ||' GROUP BY date,col1,col2,col3 HAVING COUNT(*)>1';

--EXECUTE IMMEDIATE (sql);

print(sql)

END;

回答:

有多种方法可以对存储过程进行调试/故障排除

see how SQL statement is generated如以下示例所示,最简单的方法之一就是稍微调整存储的过程

CREATE OR REPLACE PROCEDURE `myproject.TEST.check_duplicated_prc`(project_name STRING, data_set_name STRING, table_name STRING, date_id DATE, OUT sql STRING)

BEGIN

-- DECLARE sql STRING;

set sql ='Select date,col1,col2,col3,count(1) from `'||project_name||'.'||data_set_name||'.'||table_name|| '` where date='||date_id ||' GROUP BY date,col1,col2,col3 HAVING COUNT(*)>1';

--EXECUTE IMMEDIATE (sql);

END;

然后,您可以在下面运行以查看生成的SQL

DECLARE sql STRING;

CALL `myproject.TEST.check_duplicated_prc`('project_name', 'data_set_name', 'table_name', '2020-11-24', sql);

SELECT sql;

带输出

在此处输入图片说明

如您所见-您在这里缺少撇号,where date=2020-11-24因此可以修复您的存储过程

以上是 调试BigQuery存储过程 的全部内容, 来源链接: utcz.com/qa/400071.html

回到顶部