In diesem Dokument wird beschrieben, wie Sie mit der searchLineageStreaming API die Datenherkunft auf mehreren Ebenen und regionenübergreifend abrufen.
Die searchLineageStreaming API führt eine Breitensuche in einer angegebenen Richtung (Upstream oder Downstream) aus, die mit einer definierten Gruppe von Stamm-Entitäten beginnt, und gibt ein einheitliches Lineage-Diagramm als Echtzeit-Streaming-Antwort zurück.
Im Gegensatz zu Standard-Lineage-Lookup-APIs, bei denen bei umfangreichen Multi-Projekt-Diagrammen ein Zeitüberschreitungsfehler auftreten kann, liefert searchLineageStreaming Echtzeitantworten in Chunks. Verwenden Sie diese API, wenn Sie Tools entwickeln, die große, tiefgreifende oder regionenübergreifende Datenarchitekturen ohne Zeitüberschreitungen bei Anfragen durchlaufen müssen.
Weitere Informationen finden Sie unter Suche nach Lineage in mehreren Regionen.
Hauptmerkmale
Die searchLineageStreaming API bietet folgende Funktionen:
Breitensuche: Durchläuft das Lineage-Diagramm Ebene für Ebene und berechnet die Tiefe jedes verbundenen Assets genau.
Streamingantwort: Gibt Untergraphen und Herkunftsinformationen zurück, sobald sie vom Back-End-System erkannt werden. Das ist sehr effizient für breite oder tiefe Herkunftsgraphen und verhindert Zeitüberschreitungen bei Anfragen.
Traversierung über mehrere Standorte und Projekte hinweg: Obwohl Sie im Anfragepfad nur ein Abrechnungsprojekt angeben, werden Herkunftsinformationen automatisch über mehrere Google Cloud Projekte und geografische Standorte hinweg ermittelt und traversiert, sofern Sie die erforderlichen Berechtigungen haben.
Detaillierte Herkunft auf Spaltenebene: Ermöglicht die Suche nach Abhängigkeiten auf Spaltenebene zwischen Assets.
Platzhaltersuchen: Damit können Sie die gesamte Data Lineage auf Spaltenebene für eine bestimmte Entität abrufen, indem Sie den voll qualifizierten Namen (Fully Qualified Name, FQN) mit
*ergänzen.Pipeline-Insights: Ruft optional Metadaten zu den Transformationspipelines (Prozessen) ab, mit denen die Herkunftsinformationen erstellt wurden.
Hinweis
Bevor Sie Anfragen an die API senden, müssen die folgenden Sicherheits- und Umgebungsanforderungen 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 Herkunftsinformationen und Prozesse gespeichert sind, damit Sie die Berechtigungen erhalten, die Sie zum Suchen nach Herkunftsinformationen 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 Links zum Datenursprung erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um nach Links zum Datenursprung zu suchen:
-
Abstammung auf Entitätsebene suchen:
datalineage.events.getfür das Projekt, in dem der Link gespeichert ist -
Spaltenbezogene Herkunft suchen:
datalineage.events.getFieldsim Projekt, in dem der Link gespeichert ist -
Vollständige Details zum Pipelineprozess abrufen:
datalineage.processes.getim 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 unterscheiden, die von der API gescannt werden:
Pfad des Abrechnungselternteils: Der
parent-Pfad in der URL-Anfrage muss das Formatprojects/project/locations/locationhaben. Dieses bestimmte Projekt-Standort-Paar wird ausschließlich zur Auswertung von Abrechnungskontingenten und API-Ratenbeschränkungen verwendet.Zielorte: Definieren Sie die Regionen, die vom Backend gescannt werden sollen, explizit im Array
locationsim Anfragetext.
Authentifizierung einrichten
Initialisieren Sie eine Umgebungsvariable mit einem Google Cloud -Zugriffstoken, 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 Lineage durchsuchen
Wenn Sie eine detaillierte Lineage-Suche ausführen möchten, die mehrere Ebenen des Diagramms durchläuft und verschiedene Google Cloud Projekte durchsucht, definieren Sie die folgenden Variablen:
Legen Sie
limits.maxDepthauf die gewünschte Tiefe für die Pfadsuche fest (zulässige Werte:1bis100).Füllen Sie das Array
locationsmit den Zielregionen, die vom Backend abgeglichen werden sollen (z. B.["us", "us-east1"]).
C#
C#
Folgen Sie der Einrichtungsanleitung für C# in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Data Lineage C# API.
Richten Sie zur Authentifizierung bei Data Lineage die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Java
Java
Folgen Sie der Einrichtungsanleitung für Java in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Data Lineage Java API.
Richten Sie zur Authentifizierung bei Data Lineage die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Node.js
Node.js
Folgen Sie der Einrichtungsanleitung für Node.js in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Data Lineage Node.js API.
Richten Sie zur Authentifizierung bei Data Lineage die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Python
Folgen Sie der Einrichtungsanleitung für Python in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Data Lineage Python API.
Richten Sie zur Authentifizierung bei Data Lineage die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Ruby
Ruby
Folgen Sie der Einrichtungsanleitung für Ruby in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Data Lineage Ruby API.
Richten Sie zur Authentifizierung bei Data Lineage die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
REST
Verwenden Sie die searchLineageStreaming-Methode, um nach 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 Herkunftsgraphen einschränken oder erweitern, indem Sie die geografischen Regionen ändern, die im wiederholten Arrayfeld locations übergeben werden.
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 \
--data '{
"parent": "projects/my-billing-project/locations/us",
"locations": ["us", "europe-west1", "asia-south2"],
"rootCriteria": {
"entities": {
"entities": [{
"fullyQualifiedName": "bigquery:my-project.dataset.global_table"
}]
}
},
"direction": "DOWNSTREAM"
}'
Prozessnamen für Lineage-Links abrufen
Standardmäßig werden Prozessinformationen von der API ausgelassen (maxProcessPerLink wird standardmäßig auf 0 gesetzt). Wenn Sie die Ressourcennamen der Pipelines abrufen möchten, mit denen Ihre Datenverknüpfungen erstellt wurden, konfigurieren Sie limits.maxProcessPerLink auf eine positive Ganzzahl ungleich null.
Beispiel:
Java
Java
Folgen Sie der Einrichtungsanleitung für Java in der Data Lineage-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Data Lineage Java API.
Richten Sie zur Authentifizierung bei Data Lineage die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
BILLING_PROJECT_ID: das Google CloudProjekt, das für die administrative Abrechnung und die 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 (Fully Qualified Name, FQN) der Zielentität im Formatbigquery: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: Im resultierenden Stream wird das Feld links[].processes mit Prozessmeldungen gefüllt, die nur den absoluten Systemressourcennamen enthalten (z. B. projects/my-project/locations/us/processes/my-process).
Vollständige Prozessdetails mit einer FieldMask abrufen
Wenn Sie vollständige strukturelle Metadaten zu einer Pipeline benötigen, z. B. displayName, System-attributes oder Ausführungs-origin, anstatt nur den Ressourcennamen, müssen Sie eine API-FieldMask verwenden:
Geben Sie für
limits.maxProcessPerLinkeinen Wert ungleich null an.Hängen Sie dem URL-Pfad einen
fields-Suchparameter an, in dem Sielinks.processes.processsowie andere erforderliche Felder angeben.
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 Herkunft auf Tabellen- als auch auf Spaltenebene durchsuchen
Sie können in einer einzelnen Anfrage sowohl die Herkunft auf Tabellenebene (Asset-Ebene) als auch auf Spaltenebene (Feldebene) abrufen, indem Sie mehrere Entitäten in der Liste rootCriteria.entities.entities angeben:
Lassen Sie das
field-Array für die Zeilen auf Tabellenebene weg.Geben Sie für den Datenursprung auf Spaltenebene eine einzelne Spalte im
field-Array 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 dem gesamten Lineage auf Spaltenebene für eine bestimmte Tabelle suchen möchten, ohne jede Spalte einzeln aufzulisten, verwenden Sie das Platzhalterzeichen * als einzelnen 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 Ergebnisse Ihrer Herkunftssuche mit dem filters-Block 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"]
}
}'
Herkunft auf Spaltenebene ausschließen (nur Tabellensuche)
Damit bei der Suche nur die Herkunft auf Tabellenebene zurückgegeben und die Herkunft auf Spaltenebene vollständig ausgeschlossen wird, 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 den Datenursprung auf ein bestimmtes Zeitintervall beschränken.
Wenn Sie beispielsweise nach Lineage-Daten 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 Orte und unvollständige Graphen
Da die Streaming-API gleichzeitig eine verteilte Gruppe von Projekten und Standorten durchsucht, sind einige Remote-Regionen während der Ausführung möglicherweise vorübergehend nicht verfügbar, nicht kommunikativ oder falsch konfiguriert.
Symptom: Das zurückgegebene Layout des Herkunftsgraphen ist unvollständig oder es fehlen erwartete regionale Hops.
Diagnose: Zum Schutz der Datenintegrität wird im
searchLineageStreamingResponse-Stream ein dediziertesunreachable-Feld (wiederholter String) mit problematischen Standorten im Formatprojects/PROJECT_NUMBER/locations/LOCATION(z. B.projects/123456789/locations/us-east1) gefüllt.Best Practice: Erstellen Sie Ihre Clientanwendungen immer so, dass das Feld
unreachablegeprüft wird, um die Vollständigkeit der Daten zu bestätigen, bevor der Graph verarbeitet wird.