Multiregionale Herkunft mithilfe der serverseitigen Automatisierung durchsuchen

Mit der searchLineageStreaming API können Sie die mehrstufige, überregionale Datenherkunft abrufen und ein einheitliches Diagramm als Echtzeitstream erhalten. Sie können Tools erstellen, die breite, tiefe oder projektübergreifende Datenarchitekturen ohne Zeitüberschreitungen bei Anfragen durchlaufen. Weitere Informationen finden Sie unter Multiregionale Herkunftssuche.

Hauptmerkmale

Die searchLineageStreaming API bietet folgende Funktionen:

  • Breitensuche: Durchläuft das Herkunftsdiagramm Ebene für Ebene vorgelagert oder nachgelagert von einer definierten Gruppe von Stammentitäten und berechnet die Tiefe jedes verbundenen Assets genau.

  • Streamingantwort: Liefert in Echtzeit aufgeteilte Antworten mit Untergraphen und Herkunftslinks, sobald das Back-End-System sie erkennt. Im Gegensatz zu Standard-APIs für die Herkunftssuche, bei denen es bei großen Diagrammen mit mehreren Projekten zu Zeitüberschreitungen kommen kann, werden durch Streaming Zeitüberschreitungen bei Anfragen in breiten oder tiefen Diagrammen verhindert.

  • Standort- und projektübergreifende Traversierung: Obwohl Sie im Anfragepfad nur ein Abrechnungsprojekt angeben, erkennt und traversiert die API automatisch Herkunftsverknüpfungen über mehrere Google Cloud -Projekte und geografische Standorte hinweg, sofern Sie die erforderlichen Berechtigungen haben.

  • Detaillierte Herkunft auf Spaltenebene: Unterstützt die Suche nach Abhängigkeiten auf Spaltenebene zwischen Assets.

  • Platzhaltersuchen: Ermöglicht das Abrufen der gesamten Herkunft auf Spaltenebene für eine bestimmte Entität, indem Sie den voll qualifizierten Namen (FQN) mit * versehen.

  • Pipeline-Statistiken: Ruft optional Metadaten zu den Transformationspipelines (Prozessen) ab, die die Herkunftslinks erstellt haben.

Hinweis

Bevor Sie Anfragen an die API senden, müssen die folgenden Sicherheits- und Umgebungsvoraussetzungen erfüllt sein:

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Data Lineage Viewer (roles/datalineage.viewer) für die Projekte zuzuweisen, in denen die Datenherkunftslinks und -prozesse gespeichert sind, um die Berechtigungen zu erhalten, die Sie zum Suchen nach Datenherkunftslinks benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Suchen nach Datenherkunftslinks erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um nach Datenherkunftslinks zu suchen:

  • Herkunft auf Entitätsebene suchen: datalineage.events.get für das Projekt, in dem der Link gespeichert ist
  • Herkunft auf Spaltenebene suchen: datalineage.events.getFields für das Projekt, in dem der Link gespeichert ist
  • So rufen Sie die vollständigen Details des Pipelineprozesses ab: datalineage.processes.get für das Projekt, in dem der Prozess gespeichert ist

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Ressourcenbereich

Wenn Sie Ihre API-Anfrage konfigurieren, müssen Sie zwischen der Ressource, die für die administrative Abrechnung verwendet wird, und den tatsächlichen Standorten, die von der API gescannt werden, unterscheiden:

  • Übergeordneter Abrechnungspfad: Der parent-Pfad in der URL-Anfrage muss das Format projects/project/locations/location haben. Dieses spezifische Projekt-Standort-Paar wird ausschließlich zur Auswertung von Abrechnungskontingenten und API-Ratenbegrenzungen verwendet.

  • Zielregionen: Definieren Sie im locations-Array im Anfragetext explizit die Regionen, die das Backend scannen soll.

Authentifizierung einrichten

Initialisieren Sie eine Umgebungsvariable mit einem Zugriffstoken von Google Cloud , um Ihre curl-Befehle zu authentifizieren:

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

Beispiele für die Verwendung

In den folgenden Beispielen wird der Endpunkt datalineage.googleapis.com verwendet.

Mehrstufige, projektübergreifende Herkunft suchen

Wenn Sie eine detaillierte Herkunftssuche durchführen möchten, die mehrere Tiefen des Graphen durchläuft und verschiedene Google Cloud -Projekte scannt, definieren Sie die folgenden Variablen:

  • Legen Sie für limits.maxDepth die gewünschte Durchsuchungstiefe fest (akzeptiert Werte von 1 bis 100).

  • Füllen Sie das Array locations mit den Zielregionen, auf die das Backend verweisen soll (z. B. ["us", "us-east1"]).

C#

C#

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für C# in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für C# zu Data Lineage.

Richten Sie zur Authentifizierung bei der Datenherkunft Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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()
    {
        // Create client
        LineageClient lineageClient = LineageClient.Create();
        // Initialize request argument(s)
        SearchLineageStreamingRequest request = new SearchLineageStreamingRequest
        {
            ParentAsLocationName = LocationName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
            Locations = { "", },
            RootCriteria = new SearchLineageStreamingRequest.Types.RootCriteria(),
            Direction = SearchLineageStreamingRequest.Types.SearchDirection.Unspecified,
            Filters = new SearchLineageStreamingRequest.Types.SearchFilters(),
            Limits = new SearchLineageStreamingRequest.Types.SearchLimits(),
        };
        // Make the request, returning a streaming response
        using LineageClient.SearchLineageStreamingStream response = lineageClient.SearchLineageStreaming(request);

        // Read streaming responses from server until complete
        // Note that C# 8 code can use await foreach
        AsyncResponseStream<SearchLineageStreamingResponse> responseStream = response.GetResponseStream();
        while (await responseStream.MoveNextAsync())
        {
            SearchLineageStreamingResponse responseItem = responseStream.Current;
            // Do something with streamed response
        }
        // The response stream has completed
    }
}

Java

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Java in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für Java zu Data Lineage.

Richten Sie zur Authentifizierung bei der Datenherkunft Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import com.google.api.gax.rpc.ServerStream;
import com.google.cloud.datacatalog.lineage.v1.LineageClient;
import com.google.cloud.datacatalog.lineage.v1.LocationName;
import com.google.cloud.datacatalog.lineage.v1.SearchLineageStreamingRequest;
import com.google.cloud.datacatalog.lineage.v1.SearchLineageStreamingResponse;
import java.util.ArrayList;

public class AsyncSearchLineageStreaming {

  public static void main(String[] args) throws Exception {
    asyncSearchLineageStreaming();
  }

  public static void asyncSearchLineageStreaming() throws Exception {
    // 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/java/docs/setup#configure_endpoints_for_the_client_library
    try (LineageClient lineageClient = LineageClient.create()) {
      SearchLineageStreamingRequest request =
          SearchLineageStreamingRequest.newBuilder()
              .setParent(LocationName.of("[PROJECT]", "[LOCATION]").toString())
              .addAllLocations(new ArrayList<String>())
              .setRootCriteria(SearchLineageStreamingRequest.RootCriteria.newBuilder().build())
              .setFilters(SearchLineageStreamingRequest.SearchFilters.newBuilder().build())
              .setLimits(SearchLineageStreamingRequest.SearchLimits.newBuilder().build())
              .build();
      ServerStream<SearchLineageStreamingResponse> stream =
          lineageClient.searchLineageStreamingCallable().call(request);
      for (SearchLineageStreamingResponse response : stream) {
        // Do something when a response is received.
      }
    }
  }
}

Node.js

Node.js

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Node.js in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für Node.js zu Data Lineage.

Richten Sie zur Authentifizierung bei der Datenherkunft Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * 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.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  Required. The project and location to initiate the search from.
 */
// const parent = 'abc123'
/**
 *  Required. The locations to search in.
 */
// const locations = ['abc','def']
/**
 *  Required. Criteria for the root of the search.
 */
// const rootCriteria = {}
/**
 *  Required. Direction of the search.
 */
// const direction = {}
/**
 *  Optional. Filters for the search.
 */
// const filters = {}
/**
 *  Optional. Limits for the search.
 */
// const limits = {}

// Imports the Lineage library
const {LineageClient} = require('@google-cloud/lineage').v1;

// Instantiates a client
const lineageClient = new LineageClient();

async function callSearchLineageStreaming() {
  // Construct request
  const request = {
    parent,
    locations,
    rootCriteria,
    direction,
  };

  // Run request
  const stream = await lineageClient.searchLineageStreaming(request);
  stream.on('data', (response) => { console.log(response) });
  stream.on('error', (err) => { throw(err) });
  stream.on('end', () => { /* API call completed */ });
}

callSearchLineageStreaming();

Python

Python

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Python in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für Python zu Data Lineage.

Richten Sie zur Authentifizierung bei der Datenherkunft Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

# 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://googleapis.dev/python/google-api-core/latest/client_options.html
from google.cloud import datacatalog_lineage_v1


def sample_search_lineage_streaming():
    # Create a client
    client = datacatalog_lineage_v1.LineageClient()

    # Initialize request argument(s)
    request = datacatalog_lineage_v1.SearchLineageStreamingRequest(
        parent="parent_value",
        locations=["locations_value1", "locations_value2"],
        direction="UPSTREAM",
    )

    # Make the request
    stream = client.search_lineage_streaming(request=request)

    # Handle the response
    for response in stream:
        print(response)

Ruby

Ruby

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Ruby in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für Ruby zu Data Lineage.

Richten Sie zur Authentifizierung bei der Datenherkunft Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

require "google/cloud/data_catalog/lineage/v1"

##
# Snippet for the search_lineage_streaming call in the Lineage service
#
# 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/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DataCatalog::Lineage::V1::Lineage::Client#search_lineage_streaming.
#
def search_lineage_streaming
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DataCatalog::Lineage::V1::Lineage::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DataCatalog::Lineage::V1::SearchLineageStreamingRequest.new

  # Call the search_lineage_streaming method to start streaming.
  output = client.search_lineage_streaming request

  # The returned object is a streamed enumerable yielding elements of type
  # ::Google::Cloud::DataCatalog::Lineage::V1::SearchLineageStreamingResponse
  output.each do |current_response|
    p current_response
  end
end

REST

Verwenden Sie die Methode searchLineageStreaming, um nach der Datenherkunft zu suchen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Google Cloud Projekt-ID, die für die administrative Abrechnung und Kontingentbewertung verwendet wird.
  • LOCATION_ID: der Google Cloud -Standort, z. B. us-central1.
  • SOURCE_PROJECT_ID: die Google Cloud Projekt-ID, in der sich die Quelltabelle befindet.
  • DATASET_ID: die BigQuery-Dataset-ID.
  • TABLE_ID: die BigQuery-Tabelle-ID.

HTTP-Methode und URL:

POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:searchLineageStreaming

JSON-Text anfordern:

{
  "parent": "projects/PROJECT_ID/locations/LOCATION_ID",
  "locations": [
    "LOCATION_ID",
    "us-east1",
    "us-central1"
  ],
  "rootCriteria": {
    "entities": {
      "entities": [
        {
          "fullyQualifiedName": "bigquery:SOURCE_PROJECT_ID.DATASET_ID.TABLE_ID"
        }
      ]
    }
  },
  "direction": "DOWNSTREAM",
  "limits": {
    "maxDepth": 10,
    "maxResults": 5000
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "links": [
    {
      "source": {
        "fullyQualifiedName": "bigquery:project-prod.dataset.source_table"
      },
      "target": {
        "fullyQualifiedName": "bigquery:project-prod.dataset.target_table"
      },
      "depth": 1,
      "location": "us"
    }
  ]
}

Nach mehreren geografischen Standorten suchen

Sie können den Scan des Herkunftsdiagramms einschränken oder erweitern, indem Sie die geografischen Regionen ändern, die im wiederholten Arrayfeld locations übergeben werden.

C#

C#

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für C# in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für C# zu Data Lineage.

Richten Sie zur Authentifizierung bei der Datenherkunft Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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()
    {
        // Create client
        LineageClient lineageClient = LineageClient.Create();
        // Initialize request argument(s)
        SearchLineageStreamingRequest request = new SearchLineageStreamingRequest
        {
            ParentAsLocationName = LocationName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
            Locations = { "", },
            RootCriteria = new SearchLineageStreamingRequest.Types.RootCriteria(),
            Direction = SearchLineageStreamingRequest.Types.SearchDirection.Unspecified,
            Filters = new SearchLineageStreamingRequest.Types.SearchFilters(),
            Limits = new SearchLineageStreamingRequest.Types.SearchLimits(),
        };
        // Make the request, returning a streaming response
        using LineageClient.SearchLineageStreamingStream response = lineageClient.SearchLineageStreaming(request);

        // Read streaming responses from server until complete
        // Note that C# 8 code can use await foreach
        AsyncResponseStream<SearchLineageStreamingResponse> responseStream = response.GetResponseStream();
        while (await responseStream.MoveNextAsync())
        {
            SearchLineageStreamingResponse responseItem = responseStream.Current;
            // Do something with streamed response
        }
        // The response stream has completed
    }
}

Java

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Java in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für Java zu Data Lineage.

Richten Sie zur Authentifizierung bei der Datenherkunft Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import com.google.api.gax.rpc.ServerStream;
import com.google.cloud.datacatalog.lineage.v1.LineageClient;
import com.google.cloud.datacatalog.lineage.v1.LocationName;
import com.google.cloud.datacatalog.lineage.v1.SearchLineageStreamingRequest;
import com.google.cloud.datacatalog.lineage.v1.SearchLineageStreamingResponse;
import java.util.ArrayList;

public class AsyncSearchLineageStreaming {

  public static void main(String[] args) throws Exception {
    asyncSearchLineageStreaming();
  }

  public static void asyncSearchLineageStreaming() throws Exception {
    // 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/java/docs/setup#configure_endpoints_for_the_client_library
    try (LineageClient lineageClient = LineageClient.create()) {
      SearchLineageStreamingRequest request =
          SearchLineageStreamingRequest.newBuilder()
              .setParent(LocationName.of("[PROJECT]", "[LOCATION]").toString())
              .addAllLocations(new ArrayList<String>())
              .setRootCriteria(SearchLineageStreamingRequest.RootCriteria.newBuilder().build())
              .setFilters(SearchLineageStreamingRequest.SearchFilters.newBuilder().build())
              .setLimits(SearchLineageStreamingRequest.SearchLimits.newBuilder().build())
              .build();
      ServerStream<SearchLineageStreamingResponse> stream =
          lineageClient.searchLineageStreamingCallable().call(request);
      for (SearchLineageStreamingResponse response : stream) {
        // Do something when a response is received.
      }
    }
  }
}

Node.js

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Java in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken.

Richten Sie zur Authentifizierung bei der Datenherkunft Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * 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.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  Required. The project and location to initiate the search from.
 */
// const parent = 'abc123'
/**
 *  Required. The locations to search in.
 */
// const locations = ['abc','def']
/**
 *  Required. Criteria for the root of the search.
 */
// const rootCriteria = {}
/**
 *  Required. Direction of the search.
 */
// const direction = {}
/**
 *  Optional. Filters for the search.
 */
// const filters = {}
/**
 *  Optional. Limits for the search.
 */
// const limits = {}

// Imports the Lineage library
const {LineageClient} = require('@google-cloud/lineage').v1;

// Instantiates a client
const lineageClient = new LineageClient();

async function callSearchLineageStreaming() {
  // Construct request
  const request = {
    parent,
    locations,
    rootCriteria,
    direction,
  };

  // Run request
  const stream = await lineageClient.searchLineageStreaming(request);
  stream.on('data', (response) => { console.log(response) });
  stream.on('error', (err) => { throw(err) });
  stream.on('end', () => { /* API call completed */ });
}

callSearchLineageStreaming();

Python

Python

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Python in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für Python zu Data Lineage.

Richten Sie zur Authentifizierung bei der Datenherkunft Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

# 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://googleapis.dev/python/google-api-core/latest/client_options.html
from google.cloud import datacatalog_lineage_v1


def sample_search_lineage_streaming():
    # Create a client
    client = datacatalog_lineage_v1.LineageClient()

    # Initialize request argument(s)
    request = datacatalog_lineage_v1.SearchLineageStreamingRequest(
        parent="parent_value",
        locations=["locations_value1", "locations_value2"],
        direction="UPSTREAM",
    )

    # Make the request
    stream = client.search_lineage_streaming(request=request)

    # Handle the response
    for response in stream:
        print(response)

Ruby

Ruby

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Ruby in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für Ruby zu Data Lineage.

Richten Sie zur Authentifizierung bei der Datenherkunft Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

require "google/cloud/data_catalog/lineage/v1"

##
# Snippet for the search_lineage_streaming call in the Lineage service
#
# 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/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DataCatalog::Lineage::V1::Lineage::Client#search_lineage_streaming.
#
def search_lineage_streaming
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DataCatalog::Lineage::V1::Lineage::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DataCatalog::Lineage::V1::SearchLineageStreamingRequest.new

  # Call the search_lineage_streaming method to start streaming.
  output = client.search_lineage_streaming request

  # The returned object is a streamed enumerable yielding elements of type
  # ::Google::Cloud::DataCatalog::Lineage::V1::SearchLineageStreamingResponse
  output.each do |current_response|
    p current_response
  end
end

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Google Cloud Projekt-ID, die für die administrative Abrechnung und Kontingentbewertung verwendet wird.
  • LOCATION_ID: der Google Cloud -Standort, z. B. us-central1.
  • SOURCE_PROJECT_ID: die Google Cloud Projekt-ID, in der sich die Quelltabelle befindet.
  • DATASET_ID: die BigQuery-Dataset-ID.
  • TABLE_ID: die BigQuery-Tabelle-ID.

HTTP-Methode und URL:

POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:searchLineageStreaming

JSON-Text anfordern:

{
  "parent": "projects/PROJECT_ID/locations/LOCATION_ID",
  "locations": [
    "LOCATION_ID",
    "us-east1",
    "us-central1"
  ],
  "rootCriteria": {
    "entities": {
      "entities": [
        {
          "fullyQualifiedName": "bigquery:SOURCE_PROJECT_ID.DATASET_ID.TABLE_ID"
        }
      ]
    }
  },
  "direction": "DOWNSTREAM",
  "limits": {
    "maxDepth": 10,
    "maxResults": 5000
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "links": [
    {
      "source": {
        "fullyQualifiedName": "bigquery:project-prod.dataset.source_table"
      },
      "target": {
        "fullyQualifiedName": "bigquery:project-prod.dataset.target_table"
      },
      "depth": 1,
      "location": "us"
    }
  ]
}

Standardmäßig werden Prozessinformationen von der API weggelassen (maxProcessPerLink ist standardmäßig auf 0 festgelegt). Wenn Sie die Ressourcennamen der Pipelines abrufen möchten, die Ihre Datenlinks erstellt haben, konfigurieren Sie limits.maxProcessPerLink auf eine positive Ganzzahl ungleich null.

Beispiel:

Java

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Java in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für Java zu Data Lineage.

Richten Sie zur Authentifizierung bei der Datenherkunft Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import com.google.cloud.datacatalog.lineage.v1.LineageClient;
import com.google.cloud.datacatalog.lineage.v1.Process;
import com.google.cloud.datacatalog.lineage.v1.ProcessName;

public class SyncGetProcessProcessname {

  public static void main(String[] args) throws Exception {
    syncGetProcessProcessname();
  }

  public static void syncGetProcessProcessname() throws Exception {
    // 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/java/docs/setup#configure_endpoints_for_the_client_library
    try (LineageClient lineageClient = LineageClient.create()) {
      ProcessName name = ProcessName.of("[PROJECT]", "[LOCATION]", "[PROCESS]");
      Process response = lineageClient.getProcess(name);
    }
  }
}

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • BILLING_PROJECT_ID: das Google Cloud-Projekt, das für die administrative Abrechnung und Kontingentbewertung verwendet wird. Geben Sie eine Projektnummer oder Projekt-ID an.
  • LOCATION_ID: der Google Cloud -Standort, an dem die Herkunftssuche durchgeführt wird.
  • FULLY_QUALIFIED_NAME: der voll qualifizierte Name (FQN) der Zielentität im Format bigquery:PROJECT_ID.DATASET_ID.TABLE_ID.

HTTP-Methode und URL:

POST https://datalineage.googleapis.com/v1/projects/BILLING_PROJECT_ID/locations/LOCATION_ID:searchLineageStreaming

JSON-Text anfordern:

{
  "parent": "projects/BILLING_PROJECT_ID/locations/LOCATION_ID",
  "locations": [
    "LOCATION_ID"
  ],
  "rootCriteria": {
    "entities": {
      "entities": [
        {
          "fullyQualifiedName": "FULLY_QUALIFIED_NAME"
        }
      ]
    }
  },
  "direction": "UPSTREAM",
  "limits": {
    "maxProcessPerLink": 5
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

 

Antwortverhalten: Der resultierende Stream füllt das Feld links[].processes mit Prozessnachrichten, die nur den absoluten Systemressourcennamen enthalten (z. B. projects/my-project/locations/us/processes/my-process).

Vollständige Prozessdetails mithilfe einer FieldMask abrufen

Wenn Sie vollständige strukturelle Metadaten zu einer Pipeline (z. B. displayName, System-attributes oder Ausführungs-origin) anstelle des Ressourcennamens benötigen, müssen Sie eine API-FieldMask verwenden:

  1. Geben Sie für limits.maxProcessPerLink einen Wert ungleich null an.

  2. Hängen Sie den Suchparameter fields an den URL-Pfad an und geben Sie links.processes.process zusammen mit anderen erforderlichen Feldern an.

Beispiel:

curl -H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-X POST "https://datalineage.googleapis.com/v1/projects/my-billing-project/locations/us:searchLineageStreaming?fields=links.processes.process,links.source,links.target,links.depth" \
--data '{
  "parent": "projects/my-billing-project/locations/us",
  "locations": ["us"],
  "rootCriteria": {
    "entities": {
      "entities": [{
        "fullyQualifiedName": "bigquery:my-project.dataset.target_table"
      }]
    }
  },
  "direction": "UPSTREAM",
  "limits": {
    "maxProcessPerLink": 5
  }
}'

Sowohl die Lineage auf Tabellen- als auch auf Spaltenebene durchsuchen

Sie können in einer einzigen Anfrage sowohl nach der Herkunft auf Tabellenebene (Asset-Ebene) als auch auf Spaltenebene (Feldebenen) suchen, indem Sie mehrere Entitäten in der Liste rootCriteria.entities.entities angeben:

  • Lassen Sie für die Herkunft auf Tabellenebene das Array field weg.

  • Geben Sie für die Herkunft auf Spaltenebene eine einzelne Spalte im Array field an.

Beispiel:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -X POST https://datalineage.googleapis.com/v1/projects/my-billing-project/locations/us:searchLineageStreaming \
     --data '{
       "parent": "projects/my-billing-project/locations/us",
       "locations": ["us"],
       "rootCriteria": {
         "entities": {
           "entities": [
             {
               "fullyQualifiedName": "bigquery:my-project.dataset.table_a"
             },
             {
               "fullyQualifiedName": "bigquery:my-project.dataset.table_b",
               "field": ["email"]
             }
           ]
         }
       },
       "direction": "DOWNSTREAM"
     }'

Platzhalter für die Herkunft auf Spaltenebene verwenden

Wenn Sie nach allen verfügbaren Herkunftsinformationen auf Spaltenebene für eine bestimmte Tabelle suchen möchten, ohne jede Spalte einzeln aufzulisten, verwenden Sie das Platzhalterzeichen * als einzigen Wert im Array field.

Beispiel:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -X POST https://datalineage.googleapis.com/v1/projects/my-billing-project/locations/us:searchLineageStreaming \
     --data '{
       "parent": "projects/my-billing-project/locations/us",
       "locations": ["us"],
       "rootCriteria": {
         "entities": {
           "entities": [{
             "fullyQualifiedName": "bigquery:my-project.dataset.my_table",
             "field": ["*"]
           }]
         }
       },
       "direction": "DOWNSTREAM"
     }'

Lineage-Ergebnisse filtern

Sie können die Suchergebnisse für die Herkunft mithilfe des Blocks filters im Anfragetext verfeinern.

Nach Abhängigkeitstyp filtern

Wenn Sie die Ergebnisse auf bestimmte Abhängigkeitstypen beschränken möchten, z. B. direkte Kopien (EXACT_COPY) oder Transformationen wie Filtern und Gruppieren (OTHER), verwenden Sie den Filter dependencyTypes.

Beispiel:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -X POST https://datalineage.googleapis.com/v1/projects/my-billing-project/locations/us:searchLineageStreaming \
     --data '{
       "parent": "projects/my-billing-project/locations/us",
       "locations": ["us"],
       "rootCriteria": {
         "entities": {
           "entities": [{
             "fullyQualifiedName": "bigquery:my-project.dataset.my_table"
           }]
         }
       },
       "direction": "DOWNSTREAM",
       "filters": {
         "dependencyTypes": ["EXACT_COPY"]
       }
     }'

Wenn Sie dafür sorgen möchten, dass die Suche nur die Herkunft auf Tabellenebene zurückgibt und die Herkunft auf Spaltenebene vollständig ausschließt, setzen Sie den Filter entitySet auf ENTITIES.

Beispiel:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -X POST https://datalineage.googleapis.com/v1/projects/my-billing-project/locations/us:searchLineageStreaming \
     --data '{
       "parent": "projects/my-billing-project/locations/us",
       "locations": ["us"],
       "rootCriteria": {
         "entities": {
           "entities": [{
             "fullyQualifiedName": "bigquery:my-project.dataset.my_table"
           }]
         }
       },
       "direction": "DOWNSTREAM",
       "filters": {
         "entitySet": "ENTITIES"
       }
     }'

Nach Zeitraum filtern

Sie können die Suchergebnisse für die Herkunft auf ein bestimmtes Zeitintervall beschränken.

Wenn Sie beispielsweise nach Herkunftsdaten suchen möchten, die nach einem bestimmten Zeitstempel erstellt wurden, verwenden Sie die folgende Anfrage:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -X POST https://datalineage.googleapis.com/v1/projects/my-billing-project/locations/us:searchLineageStreaming \
     --data '{
       "parent": "projects/my-billing-project/locations/us",
       "locations": ["us"],
       "rootCriteria": {
         "entities": {
           "entities": [{
             "fullyQualifiedName": "bigquery:my-project.dataset.my_table"
           }]
         }
       },
       "direction": "DOWNSTREAM",
       "filters": {
         "timeRange": {
           "startTime": "2026-01-01T00:00:00Z"
         }
       }
     }'

Fehlerbehebung: Nicht erreichbare Standorte und unvollständige Diagramme verarbeiten

Da die Streaming API gleichzeitig eine verteilte Gruppe von Projekten und Standorten scannt, können einige Remote-Regionen während der Ausführung vorübergehend nicht verfügbar, nicht kommunikativ oder falsch konfiguriert sein.

  • Symptom: Das zurückgegebene Layout des Herkunftsdiagramms ist unvollständig oder es fehlen erwartete regionale Hops.

  • Diagnose: Zum Schutz der Datenintegrität füllt der searchLineageStreamingResponse-Stream ein dediziertes unreachable-Feld (wiederholter String) mit problematischen Standorten im Format projects/PROJECT_NUMBER/locations/LOCATION (z. B. projects/123456789/locations/us-east1).

  • Best Practice: Erstellen Sie Ihre Clientanwendungen immer so, dass das Feld unreachable geprüft wird, um die Vollständigkeit der Daten zu bestätigen, bevor der Graph verarbeitet wird.

Nächste Schritte