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

如何在BigQuery中通过LIKE语句获取作业涉及的具体表与字段?

在BigQuery中实现提取作业涉及的表和字段列

完全可以实现你要的效果。下面是具体的SQL写法,核心思路是用正则提取所有匹配的表和字段,再通过聚合函数拼接成逗号分隔的字符串:

完整SQL示例

SELECT
  Job_ID,
  -- 去重后拼接涉及的表
  STRING_AGG(DISTINCT matched_table, ', ') AS Tables,
  -- 去重后拼接涉及的字段
  STRING_AGG(DISTINCT matched_field, ', ') AS Fields
FROM (
  SELECT
    Job_ID,
    job_info,
    -- 提取所有匹配的表名
    UNNEST(REGEXP_EXTRACT_ALL(job_info, r'(table_1|table_2|table_3)')) AS matched_table,
    -- 提取所有匹配的字段名
    UNNEST(REGEXP_EXTRACT_ALL(job_info, r'(field_1|field_2|field_3|field_4|field_5)')) AS matched_field
  FROM your_table_name -- 替换成你的实际表名
  -- 保留原有的筛选条件
  WHERE (job_info LIKE '%table_1%' OR job_info LIKE '%table_2%' OR job_info LIKE '%table_3%')
    AND (job_info LIKE '%field_1%' OR job_info LIKE '%field_2%' OR job_info LIKE '%field_3%' OR job_info LIKE '%field_4%' OR job_info LIKE '%field_5%')
)
GROUP BY Job_ID

关键逻辑说明

  1. REGEXP_EXTRACT_ALL:从job_info字符串中提取所有符合正则规则的表/字段名,返回一个数组。这里用(table_1|table_2|table_3)精准匹配你指定的表名,避免误匹配类似table_10这类无关内容。
  2. UNNEST:把数组拆分成多行,这样每个匹配的表/字段会单独占一行。
  3. STRING_AGG + DISTINCT:按Job_ID分组后,将同一作业下的表/字段去重,再拼接成逗号分隔的字符串,正好对应你想要的列格式。

注意事项

如果你的表名/字段名带有特殊前缀(比如proj.dataset.table_1),可以调整正则表达式来适配,例如r'proj\.dataset\.(table_1|table_2|table_3)',确保提取的内容准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:02:51