如何通过BigQuery获取关联Dataplex标签与业务术语的表/列数据?
可以通过BigQuery获取Dataplex的列标签与业务术语数据
当然可以实现,你可以利用BigQuery的INFORMATION_SCHEMA系统视图提取Dataplex同步过来的列标签(Column Tags)和业务术语(Business terms)信息,具体方法如下:
1. 查询列标签(Column Tags)
通过INFORMATION_SCHEMA.COLUMN_TAGS视图直接获取列的标签信息,结合INFORMATION_SCHEMA.COLUMNS关联到具体的表和列:
SELECT c.table_catalog AS project_id, c.table_schema AS dataset_name, c.table_name, c.column_name, ct.tag_name, ct.tag_value FROM `[你的项目ID].[你的数据集ID].INFORMATION_SCHEMA.COLUMNS` c LEFT JOIN `[你的项目ID].[你的数据集ID].INFORMATION_SCHEMA.COLUMN_TAGS` ct ON c.table_catalog = ct.table_catalog AND c.table_schema = ct.table_schema AND c.table_name = ct.table_name AND c.column_name = ct.column_name WHERE ct.tag_name IS NOT NULL;
2. 同时查询列标签与业务术语
如果你的业务术语是通过Dataplex的标签模板(比如命名为BusinessTerm)绑定到列上的,可以通过过滤标签名称单独提取业务术语,同时整合普通列标签:
SELECT c.table_catalog AS project_id, c.table_schema AS dataset_name, c.table_name, c.column_name, -- 聚合所有列标签 ARRAY_AGG(DISTINCT STRUCT(ct.tag_name, ct.tag_value) ORDER BY ct.tag_name) AS column_tags, -- 提取业务术语(根据你的标签模板名称调整过滤条件) ARRAY_AGG(DISTINCT ct.tag_value ORDER BY ct.tag_value) FILTER (WHERE ct.tag_name = 'BusinessTerm') AS business_terms FROM `[你的项目ID].[你的数据集ID].INFORMATION_SCHEMA.COLUMNS` c LEFT JOIN `[你的项目ID].[你的数据集ID].INFORMATION_SCHEMA.COLUMN_TAGS` ct ON c.table_catalog = ct.table_catalog AND c.table_schema = ct.table_schema AND c.table_name = ct.table_name AND c.column_name = ct.column_name GROUP BY c.table_catalog, c.table_schema, c.table_name, c.column_name -- 仅保留有标签或业务术语的记录 HAVING ARRAY_LENGTH(column_tags) > 0 OR ARRAY_LENGTH(business_terms) > 0;
注意事项
- 确保你的BigQuery项目已与Dataplex湖/区域完成关联,元数据同步机制已开启,否则标签和业务术语不会出现在
INFORMATION_SCHEMA中 - 你需要具备对应的权限:比如
bigquery.tables.getData、dataplex.entities.get等,才能查询这些元数据 - 如果业务术语是通过Dataplex词汇表直接关联而非标签模板,上述查询依然适用,因为Dataplex会将词汇表关联关系同步为标签形式存储
内容的提问来源于stack exchange,提问作者Tayzer Damasceno
相关产品推荐
相关产品推荐

