You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中查询指定前缀表的记录数并合并结果?

BigQuery批量统计指定前缀表的记录数

要实现合并结果的需求,核心是先把所有表的统计语句拼接成一个带UNION ALL的完整查询,再一次性执行,而非循环执行单个查询。以下是修正后的实现方案:

DECLARE query_string STRING DEFAULT '';

-- 遍历符合前缀条件的表,拼接统计语句
FOR record IN (
  SELECT FORMAT(
    'SELECT COUNT(*) AS cnt_rows, "%s" AS t_name FROM `%s.%s`',
    table_name, table_schema, table_name
  ) AS MY_STMNT
  FROM `<<my-project-id>>.<<my-dataset>>.INFORMATION_SCHEMA.TABLES`
  WHERE table_name LIKE "my-table-prefix__YYYY-MM-DDT%"
) DO
  SET query_string = CONCAT(query_string, record.MY_STMNT, ' UNION ALL ');
END FOR;

-- 移除末尾多余的UNION ALL(如果存在匹配的表)
IF query_string != '' THEN
  SET query_string = LEFT(query_string, LENGTH(query_string) - LENGTH(' UNION ALL '));
  -- 执行最终查询
  EXECUTE IMMEDIATE query_string;
END IF;

关键说明:

  • 用FORMAT()函数替代手动拼接字符串,简化语法并避免转义错误
  • 循环中逐步将单表统计语句拼接到变量,通过UNION ALL实现结果合并
  • 循环结束后清理末尾多余的连接符,保证最终查询语法合法
  • 增加空值判断,避免无匹配表时执行无效查询

内容的提问来源于stack exchange,提问作者TPPZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:05:20