Stored procedures BigQuery存储过程,用于捕获表名以及该表名的记录数

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_

我在BigQuery中创建了以下存储过程,以获取表名列表以及每个表名的计数。我遇到了两个我无法解决的问题

1-如何对execute Immediate Sql语句中的每个表执行计数

2-My array results tbl_lst_数组包含800多个表,但执行时存储过程仅返回100行。这是因为谷歌规定了以下配额吗

我通过循环一次处理一张表

谢谢你的帮助


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;

你的观点是正确的。不要为每个迭代执行一个插入作业,而是确保收集/合并它们,并在循环结束时对所有行执行一个插入作业。这样可以避免并发作业限制