La API de
searchLineageStreaming
te permite buscar el linaje de datos de varios niveles y entre regiones, y recibir un
grafo unificado como un flujo en tiempo real. Puedes compilar herramientas que recorran arquitecturas de datos amplias,
profundas o de varios proyectos sin tiempos de espera de solicitudes. Para obtener más
información, consulta Acerca de la búsqueda de linaje
multirregional.
Funciones clave
La API de searchLineageStreaming incluye las siguientes funciones:
Búsqueda en amplitud: Recorre el grafo de linaje capa por capa en sentido ascendente o descendente desde un conjunto definido de entidades raíz, lo que calcula con precisión la profundidad de cada recurso conectado.
Respuesta de transmisión: Ofrece respuestas fragmentadas en tiempo real que contienen subgrafos y vínculos de linaje a medida que el sistema de backend los descubre. A diferencia de las APIs de búsqueda de linaje estándar que pueden agotar el tiempo de espera en grafos grandes de varios proyectos, la transmisión evita que se agote el tiempo de espera de las solicitudes en grafos amplios o profundos.
Recorrido de varias ubicaciones y proyectos: Aunque especifiques solo un proyecto de facturación en la ruta de la solicitud, la API descubre y recorre automáticamente los vínculos de linaje en varios proyectos de Google Cloud y ubicaciones geográficas, siempre que tengas los permisos necesarios.
Linaje detallado a nivel de columna: Admite la búsqueda de dependencias a nivel de columna entre recursos.
Búsquedas con comodines: Te permite recuperar todo el linaje a nivel de columna para una entidad específica agregando el sufijo
*al nombre completamente calificado (FQN).Estadísticas de canalización: De manera opcional, recupera metadatos sobre las canalizaciones de transformación (procesos) que crearon los vínculos de linaje.
Antes de comenzar
Antes de realizar solicitudes a la API, asegúrate de cumplir con los siguientes requisitos de seguridad y entorno:
Roles obligatorios
Para obtener los permisos que
necesitas para buscar vínculos de linaje de datos,
pídele a tu administrador que te otorgue el
rol de IAM de Visualizador de linaje de datos (roles/datalineage.viewer) en los proyectos en los que se almacenan los vínculos y procesos de linaje.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para buscar vínculos de linaje de datos. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para buscar vínculos de linaje de datos:
-
Buscar linaje a nivel de entidad:
datalineage.events.geten el proyecto en el que se almacena el vínculo -
Buscar linaje a nivel de columna:
datalineage.events.getFieldsen el proyecto en el que se almacena el vínculo -
Recupera los detalles completos del proceso de canalización:
datalineage.processes.geten el proyecto en el que se almacena el proceso
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Alcance de los recursos
Cuando configures tu solicitud a la API, debes distinguir entre el recurso que se usa para la facturación administrativa y las ubicaciones reales que analiza la API:
Ruta de acceso superior de facturación: La ruta de acceso
parenten la solicitud de URL debe usar el formatoprojects/project/locations/location. Este par de proyecto y ubicación específico se usa solo para evaluar las cuotas de facturación y los límites de frecuencia de la API.Ubicaciones de segmentación: Define de forma explícita las regiones que deseas que el backend analice en el array
locationsdentro del cuerpo de la solicitud.
Configuración de la autenticación
Inicializa una variable de entorno con un token de acceso de Google Cloud para
autenticar tus comandos decurl:
export ACCESS_TOKEN=$(gcloud auth print-access-token)
Ejemplos de uso
En los siguientes ejemplos, se usa el extremo datalineage.googleapis.com.
Busca linaje de varios niveles y proyectos
Para ejecutar una búsqueda de linaje profunda que recorra varias profundidades del grafo y analice distintos proyectos de Google Cloud , define las siguientes variables:
Establece
limits.maxDepthen la profundidad de recorrido objetivo (acepta valores de1a100).Completa el array
locationscon las regiones de destino que deseas que el backend compare datos mediante referencia cruzada (por ejemplo,["us", "us-east1"]).
C#
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración para C# que encontrarás en la guía de inicio rápido sobre el linaje de datos con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage para C#.
Para autenticarte en el linaje de datos, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java que encontrarás en la guía de inicio rápido sobre el linaje de datos con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage para Java.
Para autenticarte en el linaje de datos, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js que encontrarás en la guía de inicio rápido sobre el linaje de datos con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage para Node.js.
Para autenticarte en el linaje de datos, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python que encontrarás en la guía de inicio rápido sobre el linaje de datos con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage para Python.
Para autenticarte en el linaje de datos, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Ruby
Antes de probar este ejemplo, sigue las instrucciones de configuración para Ruby que encontrarás en la guía de inicio rápido sobre el linaje de datos con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage para Ruby.
Para autenticarte en el linaje de datos, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
REST
Para buscar el linaje de datos, usa el
método searchLineageStreaming.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID: Es el ID del proyecto de Google Cloud que se usa para la evaluación de cuotas y la facturación administrativa.LOCATION_ID: Es la ubicación de Google Cloud , comous-central1.SOURCE_PROJECT_ID: Es el ID del proyecto de Google Cloud en el que se encuentra la tabla de origen.DATASET_ID: el ID del conjunto de datos de BigQuery.TABLE_ID: Es el ID de la tabla de BigQuery.
Método HTTP y URL:
POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:searchLineageStreaming
Cuerpo JSON de la solicitud:
{
"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
}
}
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{
"links": [
{
"source": {
"fullyQualifiedName": "bigquery:project-prod.dataset.source_table"
},
"target": {
"fullyQualifiedName": "bigquery:project-prod.dataset.target_table"
},
"depth": 1,
"location": "us"
}
]
}
Busca varias ubicaciones geográficas
Puedes limitar o expandir el análisis del gráfico de linaje modificando las regiones geográficas
que se pasan dentro del campo de array repetido locations.
C#
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración para C# que encontrarás en la guía de inicio rápido sobre el linaje de datos con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage para C#.
Para autenticarte en el linaje de datos, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java que encontrarás en la guía de inicio rápido sobre el linaje de datos con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage para Java.
Para autenticarte en el linaje de datos, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java que encontrarás en la guía de inicio rápido sobre el linaje de datos con bibliotecas cliente.
Para autenticarte en el linaje de datos, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python que encontrarás en la guía de inicio rápido sobre el linaje de datos con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage para Python.
Para autenticarte en el linaje de datos, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Ruby
Antes de probar este ejemplo, sigue las instrucciones de configuración para Ruby que encontrarás en la guía de inicio rápido sobre el linaje de datos con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage para Ruby.
Para autenticarte en el linaje de datos, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID: Es el ID del proyecto de Google Cloud que se usa para la facturación administrativa y la evaluación de cuotas.LOCATION_ID: Es la ubicación de Google Cloud , comous-central1.SOURCE_PROJECT_ID: Es el ID del proyecto de Google Cloud en el que se encuentra la tabla de origen.DATASET_ID: el ID del conjunto de datos de BigQuery.TABLE_ID: Es el ID de la tabla de BigQuery.
Método HTTP y URL:
POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:searchLineageStreaming
Cuerpo JSON de la solicitud:
{
"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
}
}
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{
"links": [
{
"source": {
"fullyQualifiedName": "bigquery:project-prod.dataset.source_table"
},
"target": {
"fullyQualifiedName": "bigquery:project-prod.dataset.target_table"
},
"depth": 1,
"location": "us"
}
]
}
Recupera nombres de procesos para vínculos de linaje
De forma predeterminada, la API omite la información del proceso (maxProcessPerLink
se establece de forma predeterminada en 0). Para recuperar los nombres de los recursos de las canalizaciones que crearon
tus vínculos de datos, configura limits.maxProcessPerLink como un número entero positivo
distinto de cero.
Por ejemplo:
Java
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java que encontrarás en la guía de inicio rápido sobre el linaje de datos con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage para Java.
Para autenticarte en el linaje de datos, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
BILLING_PROJECT_ID: Es el proyecto de Google Cloud que se usa para la facturación administrativa y la evaluación de cuotas. Proporciona un número o ID del proyecto.LOCATION_ID: Es la ubicación de Google Cloud en la que se realiza la búsqueda de linaje.FULLY_QUALIFIED_NAME: Es el nombre completamente calificado (FQN) de la entidad de destino, en el formatobigquery:PROJECT_ID.DATASET_ID.TABLE_ID.
Método HTTP y URL:
POST https://datalineage.googleapis.com/v1/projects/BILLING_PROJECT_ID/locations/LOCATION_ID:searchLineageStreaming
Cuerpo JSON de la solicitud:
{
"parent": "projects/BILLING_PROJECT_ID/locations/LOCATION_ID",
"locations": [
"LOCATION_ID"
],
"rootCriteria": {
"entities": {
"entities": [
{
"fullyQualifiedName": "FULLY_QUALIFIED_NAME"
}
]
}
},
"direction": "UPSTREAM",
"limits": {
"maxProcessPerLink": 5
}
}
Para enviar tu solicitud, expande una de estas opciones:
Comportamiento de la respuesta: El flujo resultante propaga el campo links[].processes
con mensajes de proceso que contienen solo su nombre de recurso del sistema absoluto
(como projects/my-project/locations/us/processes/my-process).
Recupera los detalles completos del proceso con una FieldMask
Si necesitas metadatos estructurales completos sobre una canalización (como su displayName,
attributes del sistema o origin de ejecución) en lugar de solo su nombre de recurso,
debes usar una FieldMask de la API:
Proporciona un valor distinto de cero para
limits.maxProcessPerLink.Agrega un parámetro de consulta
fieldsa la ruta de URL y especificalinks.processes.processjunto con otros campos obligatorios.
Por ejemplo:
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
}
}'
Busca linajes a nivel de tabla y de columna
Puedes buscar el linaje a nivel de tabla (nivel de recurso) y a nivel de columna (nivel de campo)
en una sola solicitud proporcionando varias entidades en la
lista rootCriteria.entities.entities:
Para el linaje a nivel de tabla, omite el array
field.Para el linaje a nivel de columna, especifica una sola columna en el array
field.
Por ejemplo:
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"
}'
Usa comodines para el linaje a nivel de columna
Para buscar todo el linaje a nivel de columna disponible para una tabla específica sin
enumerar cada columna de forma individual, usa el carácter comodín * como el único
valor en el array field.
Por ejemplo:
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 los resultados del linaje
Puedes definir mejor los resultados de la búsqueda de linaje con el bloque filters en el
cuerpo de la solicitud.
Filtrar por tipo de dependencia
Para restringir los resultados a tipos de dependencia específicos, como copias directas
(EXACT_COPY) o transformaciones como el filtrado y la agrupación (OTHER), usa
el filtro dependencyTypes.
Por ejemplo:
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"]
}
}'
Excluye el linaje a nivel de columna (búsqueda solo en tablas)
Para asegurarte de que la búsqueda solo devuelva el linaje a nivel de tabla y excluya por completo
el linaje a nivel de columna, establece el filtro entitySet en ENTITIES.
Por ejemplo:
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"
}
}'
Filtrar por intervalo de tiempo
Puedes restringir los resultados de la búsqueda de linaje a un intervalo de tiempo específico.
Por ejemplo, para buscar datos de linaje creados después de una marca de tiempo específica, usa la siguiente solicitud:
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"
}
}
}'
Solución de problemas: Controla las ubicaciones inaccesibles y los gráficos parciales
Debido a que la API de transmisión analiza un conjunto distribuido de proyectos y ubicaciones de forma simultánea, es posible que algunas regiones remotas estén inactivas, no se comuniquen o estén mal configuradas durante la ejecución.
Síntoma: El diseño del gráfico de linaje que se muestra parece incompleto o faltan los saltos regionales esperados.
Diagnóstico: Para proteger la integridad de los datos, el flujo
searchLineageStreamingResponsepropaga un campounreachablededicado (cadena repetida) con ubicaciones problemáticas, con el formatoprojects/PROJECT_NUMBER/locations/LOCATION(por ejemplo,projects/123456789/locations/us-east1).Práctica recomendada: Siempre compila tus aplicaciones cliente para inspeccionar el campo
unreachabley verificar que los datos estén completos antes de procesar el grafo.
¿Qué sigue?
Obtén más información sobre la búsqueda de linaje multirregional.
Obtén más información sobre el linaje de datos.
Obtén más información sobre la visualización del linaje.