能否通过查询INFORMATION SCHEMA获取列的Policy Tag应用信息?
可以通过INFORMATION_SCHEMA获取Policy Tag关联列的信息
是的,你可以通过查询特定的INFORMATION_SCHEMA视图来获取列上绑定的Policy Tag信息,进而筛选出关联特定Policy Tag的所有列。以BigQuery为例,对应的核心视图是INFORMATION_SCHEMA.POLICY_TAG_ATTACHMENTS,它会返回所有绑定了Policy Tag的列的完整元数据,包括Policy Tag的ID、名称,以及所属Taxonomy的信息。
基础查询:筛选特定Policy Tag的列
直接查询该视图,通过Policy Tag名称或ID进行筛选:
SELECT table_catalog, table_schema, table_name, column_name, policy_tag_id, policy_tag_name, taxonomy_id, taxonomy_name FROM `你的项目ID`.`region-你的区域`.INFORMATION_SCHEMA.POLICY_TAG_ATTACHMENTS WHERE -- 按名称筛选(如果名称唯一) policy_tag_name = '目标Policy Tag名称' -- 或者按ID精准筛选(更可靠,避免名称重复) -- policy_tag_id = 'projects/你的项目/locations/你的区域/taxonomies/分类ID/policyTags/标签ID'
关联列详细信息的查询
如果需要同时获取列的数据类型等额外信息,可以和INFORMATION_SCHEMA.COLUMNS做关联查询:
SELECT c.table_catalog, c.table_schema, c.table_name, c.column_name, c.data_type, p.policy_tag_id, p.policy_tag_name, p.taxonomy_id, p.taxonomy_name FROM `你的项目ID`.`region-你的区域`.INFORMATION_SCHEMA.COLUMNS c INNER JOIN `你的项目ID`.`region-你的区域`.INFORMATION_SCHEMA.POLICY_TAG_ATTACHMENTS p ON c.table_catalog = p.table_catalog AND c.table_schema = p.table_schema AND c.table_name = p.table_name AND c.column_name = p.column_name WHERE p.policy_tag_name = '目标Policy Tag名称'
注意事项
- 确保你拥有足够的权限:需要具备
bigquery.taxonomies.get以及对应数据集的元数据读取权限,才能访问Policy Tag的相关信息。 - 不同云数据仓库的实现可能不同:上述示例基于BigQuery,其他平台(如Snowflake)可能有不同的视图或查询方式,需要参考对应平台的官方文档调整。
内容的提问来源于stack exchange,提问作者Moseleyi
相关产品推荐
相关产品推荐

