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

BigQuery中数据集通配符查询如何排除ML模型避免报错?

解决方案

报错原因

你执行的通配符查询会匹配数据集下所有名称以20开头的对象,除了目标表之外,还会匹配到名称以20开头的ML模型,模型不属于普通数据表类型,两类对象结构不兼容,因此触发报错。直接通过通配符本身无法提前过滤掉非表对象,因此不需要手动关联所有表,可通过其他方案实现自动汇总。

可行方案

方案1:通过INFORMATION_SCHEMA动态生成汇总查询

这是最稳妥的方案,会自动筛选出所有符合格式的普通表,自动排除模型、视图等其他类型的对象:

  1. 首先执行如下查询,生成汇总所有目标表的SQL语句:
SELECT STRING_AGG(
  CONCAT('SELECT * FROM `', table_catalog, '.', table_schema, '.', table_name, '`'),
  ' UNION ALL '
) AS union_query
FROM `your_project_id.mydataset.INFORMATION_SCHEMA.TABLES`
-- 只筛选普通表,自动排除ML模型、视图等
WHERE table_type = 'BASE TABLE'
-- 匹配{YYYYMM}_{id}的命名规则,避免匹配到不符合格式的表
AND REGEXP_CONTAINS(table_name, r'^20\d{4}_\d+$')
  1. 把上面查询返回的union_query字段的内容复制出来,直接执行即可得到所有目标表的汇总结果。如果是用脚本、存储过程场景,还可以直接动态执行生成的SQL,不需要手动复制。

方案2:缩小通配符匹配范围(仅适合表名规则固定的场景)

如果你的目标表均为2020年及之后的月份表,通配符可以调整为更精确的匹配规则,避免命中以200开头的模型:

SELECT * FROM `mydataset.202*`

该方案不需要额外生成SQL,但只适合表名前缀范围明确、不会和其他对象重名的场景,灵活度低于方案1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:27:01