L'API searchLineageStreaming consente di cercare la derivazione dei dati multilivello e tra regioni e di ricevere un grafico unificato come stream in tempo reale. Puoi creare strumenti che attraversano architetture di dati ampie, profonde o multiprogetto senza timeout delle richieste. Per saperne di più, consulta Informazioni sulla ricerca della derivazione multiregionale.
Funzionalità chiave
L'API searchLineageStreaming include le seguenti funzionalità:
Ricerca in ampiezza: attraversa il grafico della derivazione livello per livello a monte o a valle di un insieme definito di entità base, calcolando con precisione la profondità di ogni asset collegato.
Risposta in streaming: fornisce risposte in tempo reale e suddivise in blocchi contenenti sottografi e link di derivazione man mano che il sistema di backend li rileva. A differenza delle API di ricerca della derivazione standard che potrebbero scadere su grafici multiprogetto di grandi dimensioni, lo streaming impedisce i timeout delle richieste su grafici ampi o profondi.
Attraversamento di più località e progetti: anche se specifichi un solo progetto di fatturazione nel percorso della richiesta, l'API rileva e attraversa automaticamente i link di derivazione in più progetti e località geografiche Google Cloud , a condizione che tu disponga delle autorizzazioni richieste.
Derivazione granulare a livello di colonna: supporta la ricerca di dipendenze a livello di colonna tra gli asset.
Ricerche con caratteri jolly: consente di recuperare tutta la derivazione a livello di colonna per un'entità specifica aggiungendo il suffisso
*al nome completo (FQN).Insight sulla pipeline: (facoltativo) recupera i metadati sulle pipeline di trasformazione (processi) che hanno creato i link di derivazione.
Prima di iniziare
Prima di inviare richieste all'API, assicurati di aver soddisfatto i seguenti prerequisiti di sicurezza e ambientali:
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per cercare i link di derivazione dei dati, chiedi all'amministratore di concederti il ruolo IAM Visualizzatore derivazione dati (roles/datalineage.viewer) nei progetti in cui sono archiviati i link e i processi di derivazione.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per cercare i link di derivazione dei dati. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per cercare i link di derivazione dei dati sono necessarie le seguenti autorizzazioni:
-
Cerca la derivazione a livello di entità:
datalineage.events.getsul progetto in cui è archiviato il link -
Ricerca della derivazione a livello di colonna:
datalineage.events.getFieldssul progetto in cui è archiviato il link -
Recupera i dettagli completi del processo della pipeline:
datalineage.processes.getsul progetto in cui è archiviato il processo
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Ambito delle risorse
Quando configuri la richiesta API, devi distinguere tra la risorsa utilizzata per la fatturazione amministrativa e le località effettive analizzate dall'API:
Percorso principale di fatturazione: il percorso
parentnella richiesta URL deve utilizzare il formatoprojects/project/locations/location. Questa specifica coppia progetto-località viene utilizzata esclusivamente per valutare le quote di fatturazione e i limiti di frequenza delle API.Località target: definisci esplicitamente le regioni che vuoi che il backend analizzi nell'array
locationsall'interno del corpo della richiesta.
Configurazione dell'autenticazione
Inizializza una variabile di ambiente con un token di accesso Google Cloud per autenticare i comandi curl:
export ACCESS_TOKEN=$(gcloud auth print-access-token)
Esempi di utilizzo
I seguenti esempi utilizzano l'endpoint datalineage.googleapis.com.
Cerca la derivazione multilivello e multiprogetto
Per eseguire una ricerca di derivazione approfondita che attraversa più livelli del grafico ed esegue la scansione di progetti Google Cloud distinti, definisci le seguenti variabili:
Imposta
limits.maxDepthsulla profondità di attraversamento target (accetta valori da1a100).Compila l'array
locationscon le regioni di destinazione con cui vuoi che il backend faccia un controllo incrociato (ad esempio,["us", "us-east1"]).
C#
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida di Data Lineage per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Data Lineage C#.
Per eseguire l'autenticazione in Data Lineage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di Data Lineage per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Data Lineage Java.
Per eseguire l'autenticazione in Data Lineage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di Data Lineage per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Data Lineage Node.js.
Per eseguire l'autenticazione in Data Lineage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di Data Lineage per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Data Lineage Python.
Per eseguire l'autenticazione in Data Lineage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella guida rapida di Data Lineage per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Data Lineage Ruby.
Per eseguire l'autenticazione in Data Lineage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
REST
Per cercare la derivazione dei dati, utilizza il metodo searchLineageStreaming.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
PROJECT_ID: l'ID progetto Google Cloud utilizzato per la fatturazione amministrativa e la valutazione della quota.LOCATION_ID: la località Google Cloud , ad esempious-central1.SOURCE_PROJECT_ID: l'ID progetto Google Cloud in cui si trova la tabella di origine.DATASET_ID: l'ID del set di dati BigQuery.TABLE_ID: l'ID tabella BigQuery.
Metodo HTTP e URL:
POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:searchLineageStreaming
Corpo JSON della richiesta:
{
"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
}
}
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{
"links": [
{
"source": {
"fullyQualifiedName": "bigquery:project-prod.dataset.source_table"
},
"target": {
"fullyQualifiedName": "bigquery:project-prod.dataset.target_table"
},
"depth": 1,
"location": "us"
}
]
}
Cerca più posizioni geografiche
Puoi limitare o espandere l'analisi del grafico di derivazione modificando le regioni geografiche passate all'interno del campo dell'array ripetuto locations.
C#
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida di Data Lineage per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Data Lineage C#.
Per eseguire l'autenticazione in Data Lineage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di Data Lineage per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Data Lineage Java.
Per eseguire l'autenticazione in Data Lineage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di Data Lineage per l'utilizzo delle librerie client.
Per eseguire l'autenticazione in Data Lineage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di Data Lineage per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Data Lineage Python.
Per eseguire l'autenticazione in Data Lineage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella guida rapida di Data Lineage per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Data Lineage Ruby.
Per eseguire l'autenticazione in Data Lineage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
PROJECT_ID: l'ID progetto Google Cloud utilizzato per la fatturazione amministrativa e la valutazione della quota.LOCATION_ID: la località Google Cloud , ad esempious-central1.SOURCE_PROJECT_ID: l'ID progetto Google Cloud in cui si trova la tabella di origine.DATASET_ID: l'ID del set di dati BigQuery.TABLE_ID: l'ID tabella BigQuery.
Metodo HTTP e URL:
POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:searchLineageStreaming
Corpo JSON della richiesta:
{
"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
}
}
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{
"links": [
{
"source": {
"fullyQualifiedName": "bigquery:project-prod.dataset.source_table"
},
"target": {
"fullyQualifiedName": "bigquery:project-prod.dataset.target_table"
},
"depth": 1,
"location": "us"
}
]
}
Recupera i nomi dei processi per i link di derivazione
Per impostazione predefinita, l'API omette le informazioni sul processo (maxProcessPerLink
ha come valore predefinito 0). Per recuperare i nomi delle risorse delle pipeline che hanno creato
i tuoi link ai dati, configura limits.maxProcessPerLink su un numero intero positivo
diverso da zero.
Ad esempio:
Java
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di Data Lineage per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Data Lineage Java.
Per eseguire l'autenticazione in Data Lineage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
BILLING_PROJECT_ID: il progetto Google Cloud utilizzato per la fatturazione amministrativa e la valutazione della quota. Fornisci un numero di progetto o un ID progetto.LOCATION_ID: la località Google Cloud in cui viene eseguita la ricerca della derivazione.FULLY_QUALIFIED_NAME: il nome completo (FQN) dell'entità di destinazione, nel formatobigquery:PROJECT_ID.DATASET_ID.TABLE_ID.
Metodo HTTP e URL:
POST https://datalineage.googleapis.com/v1/projects/BILLING_PROJECT_ID/locations/LOCATION_ID:searchLineageStreaming
Corpo JSON della richiesta:
{
"parent": "projects/BILLING_PROJECT_ID/locations/LOCATION_ID",
"locations": [
"LOCATION_ID"
],
"rootCriteria": {
"entities": {
"entities": [
{
"fullyQualifiedName": "FULLY_QUALIFIED_NAME"
}
]
}
},
"direction": "UPSTREAM",
"limits": {
"maxProcessPerLink": 5
}
}
Per inviare la richiesta, espandi una di queste opzioni:
Comportamento della risposta: lo stream risultante compila il campo links[].processes con i messaggi di processo contenenti solo il nome della risorsa di sistema assoluto (ad esempio projects/my-project/locations/us/processes/my-process).
Recupera i dettagli completi del processo utilizzando un FieldMask
Se hai bisogno di metadati strutturali completi su una pipeline (come displayName,
attributes di sistema o origin di esecuzione) anziché solo del nome della risorsa,
devi utilizzare un'API FieldMask:
Fornisci un valore diverso da zero per
limits.maxProcessPerLink.Aggiungi un parametro di query
fieldsal percorso dell'URL, specificandolinks.processes.processinsieme ad altri campi obbligatori.
Ad esempio:
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
}
}'
Cerca la derivazione sia a livello di tabella che di colonna
Puoi cercare la derivazione sia a livello di tabella (a livello di asset) sia a livello di colonna (a livello di campo) in un'unica richiesta fornendo più entità nell'elenco rootCriteria.entities.entities:
Per la derivazione a livello di tabella, ometti l'array
field.Per la derivazione a livello di colonna, specifica una singola colonna nell'array
field.
Ad esempio:
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"
}'
Utilizza i caratteri jolly per la derivazione a livello di colonna
Per cercare tutta la derivazione a livello di colonna disponibile per una tabella specifica senza elencare ogni colonna singolarmente, utilizza il carattere jolly * come singolo valore nell'array field.
Ad esempio:
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"
}'
Filtra i risultati della derivazione
Puoi perfezionare i risultati di ricerca della derivazione utilizzando il blocco filters nel corpo della richiesta.
Filtra per tipo di dipendenza
Per limitare i risultati a tipi di dipendenza specifici, come copie dirette (EXACT_COPY) o trasformazioni come filtri e raggruppamenti (OTHER), utilizza il filtro dependencyTypes.
Ad esempio:
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"]
}
}'
Escludi la derivazione a livello di colonna (ricerca solo nelle tabelle)
Per assicurarti che la ricerca restituisca solo la derivazione a livello di tabella ed escluda completamente la derivazione a livello di colonna, imposta il filtro entitySet su ENTITIES.
Ad esempio:
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"
}
}'
Filtra per intervallo di tempo
Puoi limitare i risultati di ricerca della derivazione a un intervallo di tempo specifico.
Ad esempio, per cercare i dati di lignaggio creati dopo una specifica data e ora, utilizzare la seguente richiesta:
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"
}
}
}'
Risoluzione dei problemi: gestione di località non raggiungibili e grafici parziali
Poiché l'API di streaming esegue la scansione di un insieme distribuito di progetti e località contemporaneamente, alcune regioni remote potrebbero essere temporaneamente inattive, non comunicative o configurate in modo errato durante l'esecuzione.
Sintomo: il layout del grafico di derivazione restituito sembra incompleto o mancano gli hop regionali previsti.
Diagnostica: per proteggere l'integrità dei dati, lo stream
searchLineageStreamingResponsecompila un campounreachablededicato (stringa ripetuta) con le località problematiche, utilizzando il formatoprojects/PROJECT_NUMBER/locations/LOCATION(ad esempio,projects/123456789/locations/us-east1).Best practice: crea sempre le tue applicazioni client per ispezionare il campo
unreachableper verificare la completezza dei dati prima di elaborare il grafico.
Passaggi successivi
Scopri di più sulla ricerca della derivazione multiregionale.
Scopri di più sulla derivazione dei dati.
Scopri di più sulla visualizzazione della derivazione.