使用服务器端自动化搜索多区域沿袭

本文档介绍了如何使用 searchLineageStreaming API 查找多级跨区域数据沿袭。

searchLineageStreaming API 从一组已定义的根实体开始,在指定方向(上游或下游)执行广度优先搜索,并以实时流式传输响应的形式返回统一的沿袭图。

与可能在大型多项目图上超时的标准沿袭查找 API 不同,searchLineageStreaming 可提供实时分块响应。在构建需要遍历广泛、深入或跨区域数据架构且不会发生请求超时的工具时,请使用此 API。

如需了解详情,请参阅多区域沿袭搜索简介

主要功能

searchLineageStreaming API 包含以下功能:

  • 广度优先搜索:逐层遍历沿袭图,准确计算每个关联资产的深度。

  • 流式响应:在后端系统发现子图和沿袭链接时返回这些内容。对于广泛或深入的沿袭图,此方法非常高效,并且可以防止请求超时。

  • 多位置和多项目遍历:虽然您仅在请求路径中指定了一个结算项目,但只要您拥有所需的权限,API 就会自动发现并遍历多个 Google Cloud 项目和地理位置的沿袭链接。

  • 精细的列级沿袭数据:支持搜索资产之间的列级依赖关系。

  • 通配符查找:通过在完全限定名称 (FQN) 后添加 *,您可以检索特定实体的所有列级沿袭。

  • 流水线数据洞见:选择性地检索有关创建沿袭链接的转换流水线(进程)的元数据。

准备工作

在向 API 发出请求之前,请确保您已满足以下安全和环境前提条件:

所需的角色

如需获得搜索数据沿袭链接所需的权限,请让您的管理员为您授予存储沿袭链接和流程的项目的 Data Lineage Viewer (roles/datalineage.viewer) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含搜索数据沿袭链接所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

您必须拥有以下权限才能搜索数据沿袭链接:

  • 搜索实体级沿袭: 存储关联的项目中的 datalineage.events.get
  • 搜索列级沿袭: 存储关联的项目中的 datalineage.events.getFields
  • 检索完整的流水线流程详细信息:对存储流程的项目具有 datalineage.processes.get 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

资源范围界定

配置 API 请求时,您必须区分用于管理结算的资源和 API 扫描的实际位置:

  • 结算父级路径:网址请求中的 parent 路径必须采用 projects/project/locations/location 格式。此特定项目-位置对专门用于评估结算配额和 API 速率限制。

  • 目标位置:在请求正文内的 locations 数组中明确定义您希望后端扫描的区域。

身份验证设置

使用 Google Cloud 访问令牌初始化环境变量,以对 curl 命令进行身份验证:

export ACCESS_TOKEN=$(gcloud auth print-access-token)

用法示例

以下示例使用端点 datalineage.googleapis.com

搜索多级多项目谱系

如需执行深度沿袭搜索,以遍历图的多个深度并扫描不同的 Google Cloud 项目,请定义以下变量:

  • limits.maxDepth 设置为目标遍历深度(接受 1100 之间的值)。

  • 使用您希望后端交叉对比的目标区域填充 locations 数组(例如 ["us", "us-east1"])。

C#

C#

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

如需向 Data Lineage 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证

using Google.Api.Gax.Grpc;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.DataCatalog.Lineage.V1;
using System.Threading.Tasks;

public sealed partial class GeneratedLineageClientSnippets
{
    /// <summary>Snippet for SearchLineageStreaming</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public async Task SearchLineageStreamingRequestObject()
    {