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

如何用正确语法查询BigQuery中多语言多日期格式的多张表?

BigQuery批量查询带语言标识与日期后缀表的语法

方法1:用表通配符+正则匹配(推荐,适合大量表)

如果你的表是[lang]_table_[YYYYMMDD]的固定格式,用_TABLE_SUFFIX或直接匹配table_id的方式最灵活,能一次性覆盖所有符合条件的表:

SELECT *
FROM `project.dataset.*`
WHERE 
  -- 匹配语言前缀为fr或en,且后缀是8位日期的表
  REGEXP_CONTAINS(table_id, r'^(fr|en)_table_\d{8}$')
  -- 筛选2022年10月1日到30日的表
  AND PARSE_DATE('%Y%m%d', SUBSTR(table_id, -8)) BETWEEN DATE('2022-10-01') AND DATE('2022-10-30')

也可以拆分通配符位置,让匹配更精准:

SELECT *
FROM `project.dataset.*_table_*`
WHERE 
  REGEXP_CONTAINS(_TABLE_SUFFIX, r'^fr_table_|^en_table_')
  AND PARSE_DATE('%Y%m%d', REGEXP_EXTRACT(_TABLE_SUFFIX, r'(\d{8})$')) BETWEEN DATE('2022-10-01') AND DATE('2022-10-30')

方法2:UNION ALL手动合并(适合少量表)

如果需要查询的表数量不多,直接用UNION ALL把各个表拼起来就行:

SELECT * FROM `project.dataset.fr_table_20221001`
UNION ALL
SELECT * FROM `project.dataset.fr_table_20221002`
-- 依次添加其他需要查询的表
UNION ALL
SELECT * FROM `project.dataset.en_table_20221030`

注意:所有表的字段结构要一致,否则会报错。

方法3:创建视图复用查询逻辑

要是需要反复查询这批表,不如先建个视图封装逻辑,之后直接查视图就好:

CREATE OR REPLACE VIEW `project.dataset.combined_lang_date_tables` AS
SELECT *
FROM `project.dataset.*`
WHERE 
  REGEXP_CONTAINS(table_id, r'^(fr|en)_table_\d{8}$')
  AND PARSE_DATE('%Y%m%d', SUBSTR(table_id, -8)) BETWEEN DATE('2022-10-01') AND DATE('2022-10-30')

查询视图的语句很简单:

SELECT * FROM `project.dataset.combined_lang_date_tables`

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:30:43