我可以使用Java Google Data Catalog库搜索标签模板,并对标签名称进行子搜索,以找到使用标签的大查询表,但我不知道如何找到哪些列使用标签。以下是一些示例Java代码:
TagTemplate template = dataCatalogClient.getTagTemplate(result.getRelativeResourceName());
SearchCatalogRequest innerSearch = SearchCatalogRequest.newBuilder().setScope(scope).setQuery("tag=" + template.getDisplayName()).build();
SearchCatalogPagedResponse innerResponse = dataCatalogClient.searchCatalog( innerSearch );
for (SearchCatalogResult innerResult : innerResponse.iterateAll()) {
LookupEntryRequest request =
LookupEntryRequest.newBuilder().setLinkedResource(linkedResource).build();
com.google.cloud.datacatalog.v1.Entry entry = dataCatalogClient.lookupEntry(request);
Schema schema = entry.getSchema();
java.util.List<com.google.cloud.datacatalog.v1.ColumnSchema> columnSchemas =
schema.getColumnsList();
}
上面的代码返回了所有的标记模板以及使用标记的大型查询表的位置,但我不知道如何找到使用标记的列。提前谢谢。
我能够自己解决这个问题。要获得列级别的标签,您必须在表级别列出所有标签,并检查是否使用以下Google Data Catalog API调用分配给列:
ListTagsPagedResponse tagsResponse = dataCatalogClient.listTags(entry.getName());
for(Tag tag : tagsResponse.iterateAll()) {
System.out.println(tag);
}