使用 Data Catalog 搜索和查看数据资源

本文档介绍了如何使用 Data Catalog 搜索数据资源,例如:

  • BigQuery 数据集、表、视图和模型。
  • Pub/Sub 数据流。
  • Data Catalog 标记模板、条目组和自定义条目。
  • Dataplex 数据湖、区域、表和文件集。
  • 与 Data Catalog 相关联的企业数据孤岛中的资产。
  • (公开预览):Dataproc Metastore 服务、数据库和表。
  • (公开预览):Analytics Hub 关联的数据集。

搜索范围

系统可能会根据您的权限显示不同的搜索结果。 Data Catalog 搜索结果的范围取决于您的角色。

您可以查看 Data Catalog 可用的不同类型的 IAM 角色和权限

例如,如果您对某个对象具有 BigQuery 元数据读取权限,则该对象将显示在 Data Catalog 搜索结果中。以下列表介绍了所需的最低权限:

  • 如需搜索表,您需要拥有该表的 bigquery.tables.get 权限。

  • 如需搜索数据集,您需要拥有该数据集的 bigquery.tables.get 权限。

  • 如需搜索数据集或表的元数据,您需要具备 roles/bigquery.metadataViewer 角色。

如果您有权访问 BigQuery 表,但无权访问该表所属的数据集,则表仍会按预期方式显示在 Data Catalog 搜索中。相同的访问逻辑适用于当前支持的所有系统,例如 Pub/Sub 和 Data Catalog 本身。

Data Catalog 搜索查询并不能保证完全召回。系统可能不会返回与您的查询匹配的结果,即使在后续的结果页中也是如此。此外,如果您重复搜索查询,返回(和未返回)的结果可能会有所不同。如果您遇到召回率问题,并且不必按任何特定顺序提取结果,请考虑在调用 catalog.search 方法时将 orderBy 参数设置为 default

日期分片表

Data Catalog 将日期分片表聚合为单个逻辑条目。此条目的架构与具有最新日期的表分片相同,并包含分片总数的聚合信息。条目的访问权限级来自其所属的数据集。仅当用户有权访问包含这些逻辑条目的数据集时,Data Catalog 搜索才会显示这些逻辑条目。Data Catalog 搜索中不会显示单个日期分片表,即使它们存在于 Data Catalog 中并且可以标记也是如此。

如何搜索数据资产

控制台

控制台

  1. 如需启动 Data Catalog 搜索查询,请在控制台中转到搜索页面。

    转到 Data Catalog 搜索

  2. 当您点击搜索或从 Cloud Data Catalog 首页中的浏览数据资源搜索提示面板中进行选择时,将打开搜索页面。

    如果您从首页上的面板中进行选择,则系统会将其转到搜索框表达式,以使您的搜索符合要求。

  3. 您还可以从左侧的过滤条件面板中进行选择,以过滤搜索结果。

过滤条件

借助过滤条件,您可以缩小搜索结果的范围。所有过滤条件分组为各个部分:

  • 系统,例如 BigQuery、Pub/Sub、Dataplex、Dataproc Metastore、自定义系统和 Data Catalog 本身。

  • 数据类型,例如数据流、数据集、数据湖、区域、文件集、模型、表格、视图、服务、数据库和自定义类型。

  • 项目,列出您可以使用的所有项目。

  • 标记模板列出了您可以使用的所有标记模板。

  • 数据集,来自 BigQuery。

标记模板部分显示标记模板。您可以使用过滤条件搜索相关的标记模板。选定模板会对带有使用所选模板的标记的数据资源进行过滤。如果没有条目包含此类标记,则即使原始搜索查询可能与某些条目匹配,所有搜索结果也会被排除。

标记模板之外的其他所有过滤条件集都会根据搜索查询更改进行刷新。过滤条件是使用当前搜索结果的示例填充的。因此,整个搜索结果集中可能包含与当前查询匹配的条目,但与这些条目对应的过滤条件可能不会显示在过滤条件面板上。

您可以手动添加以下过滤条件:

  • 项目中,添加项目过滤条件,方法是点击添加项目按钮,搜索特定项目,选择该项目,然后点击打开
  • 标记模板中,添加标记模板过滤条件,方法是点击添加更多标记模板下拉列表,搜索特定模板,选择该模板,然后点击确定

此外,您还可以:

  • 勾选包括公共数据集,以搜索 Google Cloud 中公开提供的数据资源以及您可以使用的资源。
  • 点击右上角的相应按钮,切换回旧版搜索体验。旧版体验提供了更简单的过滤功能。

搜索示例

例如,搜索您在配置标记模板、标记、概览和数据管家中设置的 trips 表:

  1. 在搜索框中输入 trips,然后点击搜索
  2. 系统部分中选择 BigQuery,以排除属于其他系统的同名数据资源。
  3. 项目部分中选择您的项目 ID,以排除其他项目中的数据资源。如果您的项目未显示在该部分中,请点击添加项目,并在对话框窗口中选择该项目。
  4. 标记模板部分中选择演示标记模板,以查看使用此模板的标记是否已附加到“trips”表中。如果此模板未显示在该部分中,请点击添加更多标记下拉列表,找到并选择该模板,然后点击确定

通过所有选定的过滤条件,搜索结果只包含一个条目,即您的项目中的 BigQuery“trips”表,并附加了使用“演示标记模板”的标记:

此外,您还可以执行以下操作:

  1. 在搜索框中为搜索字词添加 keyword:value 来过滤搜索:

    关键字说明
    name: 匹配数据资源名称
    column: 匹配列名称或嵌套列名称
    description: 匹配表的说明

  2. 您可以通过给搜索框中的搜索字词添加以下标记关键字前缀来执行标记搜索:

    标记说明
    tag:project-name.tag_template_name 匹配标记名称
    tag:project-name.tag_template_name.key 匹配标记键
    tag:project-name.tag_template_name.key:value 匹配标记 key:string value

搜索表达式提示

  • 如果搜索表达式包含空格,请将其括在引号 ("search terms") 中。

  • 您可以在关键字前面加上“NOT”(非大写)来匹配 keyword:term 过滤条件的逻辑否定。您还可以使用“AND”和“OR”(全大写)布尔运算符来组合搜索表达式。

    例如:NOT column:term 会列出除指定字词之外的所有列。如需查看可用于 Data Catalog 搜索表达式的关键字和其他字词的列表,请参阅 Data Catalog 搜索语法

Java

在尝试此示例之前,请按照《Data Catalog 快速入门:使用客户端库》中的 Java 设置说明进行操作。如需了解详情,请参阅 Data Catalog Java API 参考文档

import com.google.cloud.datacatalog.v1.DataCatalogClient;
import com.google.cloud.datacatalog.v1.DataCatalogClient.SearchCatalogPagedResponse;
import com.google.cloud.datacatalog.v1.SearchCatalogRequest;
import com.google.cloud.datacatalog.v1.SearchCatalogRequest.Scope;
import com.google.cloud.datacatalog.v1.SearchCatalogResult;
import java.io.IOException;

// Sample to search catalog
public class SearchAssets {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "my-project-id";
    String query = "type=dataset";
    searchCatalog(projectId, query);
  }

  public static void searchCatalog(String projectId, String query) throws IOException {
    // Create a scope object setting search boundaries to the given organization.
    // Scope scope = Scope.newBuilder().addIncludeOrgIds(orgId).build();

    // Alternatively, search using project scopes.
    Scope scope = Scope.newBuilder().addIncludeProjectIds(projectId).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DataCatalogClient dataCatalogClient = DataCatalogClient.create()) {
      // Search the catalog.
      SearchCatalogRequest searchCatalogRequest =
          SearchCatalogRequest.newBuilder().setScope(scope).setQuery(query).build();
      SearchCatalogPagedResponse response = dataCatalogClient.searchCatalog(searchCatalogRequest);

      System.out.println("Search results:");
      for (SearchCatalogResult result : response.iterateAll()) {
        System.out.println(result);
      }
    }
  }
}

Node.js

在尝试此示例之前,请按照《Data Catalog 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Data Catalog Node.js API 参考文档

// Import the Google Cloud client library.
const {DataCatalogClient} = require('@google-cloud/datacatalog').v1;
const datacatalog = new DataCatalogClient();

async function searchAssets() {
  // Search data assets.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const projectId = 'my_project'; // Google Cloud Platform project

  // Set custom query.
  const query = 'type=dataset';

  // Create request.
  const scope = {
    includeProjectIds: [projectId],
    // Alternatively, search using Google Cloud Organization scopes.
    // includeOrgIds: [organizationId],
  };

  const request = {
    scope: scope,
    query: query,
  };

  const [result] = await datacatalog.searchCatalog(request);

  console.log(`Found ${result.length} datasets in project ${projectId}.`);
  console.log('Datasets:');
  result.forEach(dataset => {
    console.log(dataset.relativeResourceName);
  });
}
searchAssets();

Python

在尝试此示例之前,请按照《Data Catalog 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 Data Catalog Python API 参考文档

from google.cloud import datacatalog_v1

datacatalog = datacatalog_v1.DataCatalogClient()

# TODO: Set these values before running the sample.
project_id = "project_id"

# Set custom query.
search_string = "type=dataset"
scope = datacatalog_v1.types.SearchCatalogRequest.Scope()
scope.include_project_ids.append(project_id)

# Alternatively, search using organization scopes.
# scope.include_org_ids.append("my_organization_id")

search_results = datacatalog.search_catalog(scope=scope, query=search_string)

print("Results in project:")
for result in search_results:
    print(result)

REST 和命令行

REST 和命令行

如果您无法使用针对您的语言的 Cloud 客户端库或者您想要使用 REST 请求来测试 API,请参阅以下示例并参阅 Data Catalog REST API 文档。

1.搜索目录

在使用任何请求数据之前,请先进行以下替换:

HTTP 方法和网址:

POST https://datacatalog.googleapis.com/v1/catalog:search

请求 JSON 正文:

{
  "query":"trips",
  "scope":{
    "includeOrgIds":[
      "organization-id"
    ]
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "results":[
    {
      "searchResultType":"ENTRY",
      "searchResultSubtype":"entry.table",
"relativeResourceName":"projects/project-id/locations/US/entryGroups/@bigquery/entries/entry1-id",
      "linkedResource":"//bigquery.googleapis.com/projects/project-id/datasets/demo_dataset/tables/taxi_trips"
    },
    {
      "searchResultType":"ENTRY",
      "searchResultSubtype":"entry.table",
      "relativeResourceName":"projects/project-id/locations/US/entryGroups/@bigquery/entries/entry2-id",
      "linkedResource":"//bigquery.googleapis.com/projects/project-id/datasets/demo_dataset/tables/tlc_yellow_trips_2018"
    }
  ]
}

查看表详细信息

在 Cloud Console 中,您可以使用 Data Catalog 查看表的详细信息。

  1. 转到 Data Catalog 页面。

    转到 Data Catalog

  2. 在搜索框中,输入包含表的数据集的名称。

    例如,如果您已完成快速入门,则可以搜索 demo-dataset 并选择 trips 表。

  3. 点击表。

    此时会打开 BigQuery 表详情页面。

表的详细信息包括以下部分:

  • BigQuery 表详情。包括创建时间、上次修改时间、到期时间、资源网址、标签等信息。

  • 标记。列出已应用的标记。您可以在此页面修改标记并查看标记模板。点击 操作图标。

  • 架构和列标记。列出已应用的架构及其值。

为您喜爱的条目加星标并搜索它们

如果您经常浏览相同的数据资产,可以使用星号标记它们,在个性化列表中添加它们的条目。如需在 Data Catalog 界面中执行此操作,请执行以下操作:

  1. 在 Google Cloud Console 中转到 Data Catalog 并搜索资产。
  2. 通过以下两种方式之一为其条目加星标:

    • 点击搜索结果中条目旁边的 图标。
    • 点击条目名称以打开其详情页面,然后点击顶部操作栏上的 加星标按钮。

您最多可以为 200 个条目加星标。

在搜索栏中输入搜索查询之前,加星标的条目会显示在搜索页面上的加星标的条目列表中。此列表仅对您可见。

如需仅搜索加星标的条目,请在过滤条件面板上选择范围 > 加星标选项。

您还可以使用 Data Catalog API 的相应方法来为条目加注星标和取消星标。搜索素材资源时,请在 scope 对象中使用 starredOnly 参数。请参阅 catalog.search method