Stored procedures BigQuery存储过程,用于捕获表名以及该表名的记录数
我在BigQuery中创建了以下存储过程,以获取表名列表以及每个表名的计数。我遇到了两个我无法解决的问题 1-如何对execute Immediate Sql语句中的每个表执行计数 2-My array results tbl_lst_数组包含800多个表,但执行时存储过程仅返回100行。这是因为谷歌规定了以下配额吗 我通过循环一次处理一张表 谢谢你的帮助Stored procedures BigQuery存储过程,用于捕获表名以及该表名的记录数,stored-procedures,google-bigquery,Stored Procedures,Google Bigquery,我在BigQuery中创建了以下存储过程,以获取表名列表以及每个表名的计数。我遇到了两个我无法解决的问题 1-如何对execute Immediate Sql语句中的每个表执行计数 2-My array results tbl_lst_数组包含800多个表,但执行时存储过程仅返回100行。这是因为谷歌规定了以下配额吗 我通过循环一次处理一张表 谢谢你的帮助 create procedure SP_MERGE.SP_bq_table_counts() BEGIN DECLARE tbl_
create procedure SP_MERGE.SP_bq_table_counts()
BEGIN
DECLARE tbl_lst_array ARRAY<STRING>;
DECLARE i INT64 DEFAULT 1;
CREATE TEMP TABLE tbl_results(field STRING);
SET tbl_lst_array = (SELECT ARRAY_AGG(table_schema||'.'||table_name) FROM `tng-edw-data-dev`.EDW.INFORMATION_SCHEMA.TABLES);
WHILE (i < ARRAY_LENGTH(tbl_lst_array)) DO
EXECUTE IMMEDIATE '''
INSERT tbl_results
SELECT "''' || tbl_lst_array[ORDINAL(i)] || '''"
''';
# Increment counter
SET i = i + 1;
END WHILE;
select * from tbl_results;
END;
你的观点是正确的。不要为每个迭代执行一个插入作业,而是确保收集/合并它们,并在循环结束时对所有行执行一个插入作业。这样可以避免并发作业限制