如何在BigQuery中查找所有包含指定列名的表、数据集与数据库
BigQuery全项目范围查找指定列名的实现方法
你可以直接使用BigQuery的区域级INFORMATION_SCHEMA.COLUMNS视图实现全项目范围的列名检索,比扫描DDL的方式更精准高效,和你提供的Teradata查询逻辑完全等价的SQL如下:
SELECT table_catalog AS project_name, table_schema AS database_name, -- 对应Teradata的DatabaseName(BigQuery数据集名) table_name, column_name FROM `你的GCP项目ID.region-你的资源区域名.INFORMATION_SCHEMA.COLUMNS` WHERE -- 列名匹配规则 column_name LIKE '%sender_country%' -- 排除带test的数据集 AND table_schema NOT LIKE '%test%' -- 表名匹配规则 AND table_name LIKE '%sender%'
注意事项
- 把SQL中的占位符替换为实际信息即可使用:
你的GCP项目ID替换为要查询的项目ID,你的资源区域名替换为数据集所在的区域(比如us、eu、asia-southeast1等)。如果数据集分布在多个区域,需要针对每个区域分别执行查询,BigQuery暂不支持跨区域的INFORMATION_SCHEMA统一查询。 - 如果你确实需要通过DDL匹配信息(比如检索列注释等DDL中才有的内容),全项目扫描TABLES视图的写法如下:
SELECT table_catalog AS project_name, table_schema AS database_name, table_name, ddl FROM `你的GCP项目ID.region-你的资源区域名.INFORMATION_SCHEMA.TABLES` WHERE table_name LIKE '%sender%' AND ddl LIKE '%sender_country%' AND table_schema NOT LIKE '%test%'
- 执行查询的账号需要持有对应项目所有数据集的元数据读取权限,否则查询结果仅会返回账号有权限访问的数据集内容。
内容的提问来源于stack exchange,提问作者Abhishek R
相关产品推荐
相关产品推荐

