Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo visualizar el linaje de datos mediante el Explorador de catálogos, las tablas del sistema de linaje de datos y la API REST.
Visión general del linaje de datos
Unity Catalog captura el linaje de datos durante la ejecución de consultas en Azure Databricks. El linaje es compatible con todos los idiomas y se captura hasta el nivel de columna. Los datos del linaje incluyen cuadernos, trabajos y paneles relacionados con la consulta. El linaje se puede visualizar en el Explorador de catálogos casi en tiempo real y recuperarse mediante programación mediante las tablas del sistema de linaje y la API de REST de Databricks.
El linaje se agrega en todas las áreas de trabajo asociadas a un metastore de Unity Catalog. Esto significa que el linaje capturado en un área de trabajo está visible en cualquier otra área de trabajo que comparta ese metastore. En concreto, las tablas y otros objetos de datos registrados en la metastore son visibles para los usuarios que tienen al menos BROWSE
permisos en esos objetos, en todas las áreas de trabajo asociadas al metastore. Sin embargo, se enmascara información detallada sobre objetos de nivel de área de trabajo, como cuadernos y paneles de otras áreas de trabajo (consulte Limitaciones de linaje y permisos de linaje).
Los datos de linaje se conservan durante un año.
La imagen siguiente es un gráfico de linaje de ejemplo.
Para obtener información sobre el seguimiento del linaje de un modelo de Machine Learning, vea Seguimiento del linaje de datos de un modelo en Unity Catalog.
Requisitos
Para capturar el linaje de datos mediante Unity Catalog:
- Las tablas deben registrarse en un metastore de Unity Catalog.
- Las consultas deben usar el DataFrame de Spark (por ejemplo, funciones de Spark SQL que devuelven un dataframe) o interfaces SQL de Databricks, como cuadernos o el editor de consultas SQL.
Para ver el linaje de datos:
- Debe tener al menos el privilegio
BROWSE
en el catálogo primario de la tabla o vista. El catálogo primario también debe ser accesible desde el área de trabajo. Consulte Limitación del acceso del catálogo a áreas de trabajo específicas. - En el caso de cuadernos, trabajos o paneles, debe tener permisos en estos objetos, tal como se define en la configuración de control de acceso del área de trabajo. Para obtener más información, consulte Permisos de linaje.
- Para una canalización habilitada para Unity Catalog, debe tener el permiso CAN VIEW en la canalización.
Requisitos de proceso:
- El seguimiento de linaje de streaming entre tablas Delta requiere Databricks Runtime 11.3 LTS o una versión posterior.
- El seguimiento del linaje de columnas para los procesos de canalizaciones declarativas de Lakeflow requiere Databricks Runtime 13.3 LTS o posterior.
Requisitos de red:
- Es posible que tenga que actualizar las reglas de firewall de salida para permitir la conectividad con el punto de conexión de Event Hubs en el plano de control de Azure Databricks. Normalmente, esto se aplica si el área de trabajo de Azure Databricks se implementa en su propia red virtual (también conocida como inyección de red virtual). A fin de obtener el punto de conexión de Event Hubs para la región del área de trabajo, vea Direcciones IP del punto de conexión de Metastore, almacenamiento de blobs de artefactos, almacenamiento de tablas del sistema, almacenamiento de blobs de registros y Event Hubs. Para obtener información acerca de cómo configurar rutas definidas por el usuario (UDR) para Azure Databricks, consulte Configuración de rutas definida por el usuario para Azure Databricks.
Visualización del linaje de datos mediante el Explorador de catálogos
Para usar el Explorador de Catálogos para ver el linaje de las tablas:
En el área de trabajo de Azure Databricks, haga clic en
Catálogo.
Busque la tabla.
Seleccione la pestaña Linaje . Aparece el panel de linaje y muestra tablas relacionadas.
Para ver un gráfico interactivo del linaje de datos, haga clic en Ver gráfico de linaje.
De forma predeterminada, se muestra un nivel en el gráfico. Haga clic en el icono
de un nodo para mostrar más conexiones si están disponibles.
Haga clic en una flecha que conecte los nodos en el gráfico de linaje para abrir el panel Conexión de linaje.
En el panel Conexión de linaje se muestran detalles sobre la conexión, incluidas las tablas de origen y destino, los cuadernos y los trabajos.
Para mostrar un cuaderno asociado a una tabla, seleccione el cuaderno en el panel Conexión de linaje o cierre el gráfico de linaje y haga clic en Cuadernos.
Para abrir el cuaderno en una nueva pestaña, haga clic en el nombre del cuaderno.
Para ver el linaje de nivel de columna, haga clic en una columna del gráfico para mostrar vínculos a columnas relacionadas. Por ejemplo, al hacer clic en la
full_menu
columna de este gráfico de ejemplo se muestran las columnas ascendentes de las que se deriva la columna:
Mostrar el linaje del trabajo
Para ver el linaje del trabajo, vaya a la pestaña Linaje de una tabla, seleccione Trabajos y seleccione Bajada. El nombre del trabajo aparece en Nombre del trabajo como consumidor de la tabla.
Visualización de linaje del tablero
Para ver el linaje del panel, vaya a la pestaña Linaje de una tabla y haga clic en Paneles. El panel aparece en Nombre del panel como consumidor de la tabla.
Consigue el linaje de tablas usando Databricks Assistant
Databricks Assistant proporciona información detallada sobre los linajes de tablas e información.
Para obtener información de linaje mediante Assistant:
- En la barra lateral del área de trabajo, haga clic en
Catálogo.
- Busque el catálogo, haga clic en su nombre y, después, haga clic en el icono Asistente
en la esquina superior derecha.
- En el indicador del asistente, escriba lo siguiente:
- /getTableLineages para ver las dependencias ascendentes y descendentes.
- /getTableInsights para acceder a información controlada por metadatos, como los patrones de consulta y actividad del usuario.
Estas consultas permiten al Asistente responder a preguntas como "mostrarme linajes descendentes" o "quién consulta esta tabla con más frecuencia".
Consultar datos de linaje mediante tablas del sistema
Puede usar las tablas del sistema de linaje para consultar mediante programación los datos de linaje. Para obtener instrucciones detalladas, vea Supervisión de la actividad de la cuenta con tablas del sistema y Referencia de tablas del sistema de linaje.
Si el área de trabajo está en una región que no admite tablas del sistema de linaje, puede usar la API REST de linaje de datos para recuperar datos de linaje mediante programación.
Recuperación del linaje mediante la API REST de linaje de datos
La API de linaje de datos permite recuperar el linaje de tablas y columnas. Sin embargo, si el área de trabajo está en una región que admite las tablas del sistema de linaje, debe usar consultas de tabla del sistema en lugar de la API de REST. Las tablas del sistema son una mejor opción para la recuperación mediante programación de datos de linaje. La mayoría de las regiones admiten las tablas del sistema de linaje.
Importante
Para acceder a las API REST de Databricks, es preciso autenticarse.
Recuperación del linaje de tablas
En este ejemplo se recuperan los datos de linaje de la tabla dinner
.
Solicitud
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/table-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "include_entity_lineage": true}'
Reemplace <workspace-instance>
.
En este ejemplo, se usa un archivo .netrc.
Respuesta
{
"upstreams": [
{
"tableInfo": {
"name": "menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
],
"downstreams": [
{
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
},
{
"tableInfo": {
"name": "dinner_price",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
]
}
Recuperación del linaje de columnas
En este ejemplo se recuperan los datos de columna de la tabla dinner
.
Solicitud
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/column-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "column_name": "dessert"}'
Reemplace <workspace-instance>
.
En este ejemplo, se usa un archivo .netrc.
Respuesta
{
"upstream_cols": [
{
"name": "dessert",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "main",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "app",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
}
],
"downstream_cols": [
{
"name": "full_menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "dinner_price",
"table_type": "TABLE"
}
]
}
Permisos de linaje
Los gráficos de linaje comparten el mismo modelo de permisos que Unity Catalog. Las tablas y otros objetos de datos registrados en el metastore del catálogo de Unity solo son visibles para los usuarios que tienen al menos BROWSE
permisos en esos objetos. Si un usuario no tiene privilegios BROWSE
o SELECT
en una tabla, no podrá explorar su linaje. Los gráficos de linaje muestran los objetos Unity Catalog en todas las áreas de trabajo adjuntas al metastore, siempre y cuando el usuario tenga los permisos de objeto adecuados.
Por ejemplo, ejecute los siguientes comandos para userA
:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
Cuando userA
vea el gráfico de linaje de la tabla lineage_data.lineagedemo.menu
, verá la tabla menu
. No podrán ver información sobre las tablas asociadas, como la tablalineage_data.lineagedemo.dinner
descendente. La tabla dinner
se muestra como un nodo masked
en la presentación para userA
, y userA
no puede expandir el gráfico para mostrar las tablas descendentes de las que no tiene permiso para acceder.
Si ejecuta el siguiente comando para conceder el BROWSE
permiso a userB
, ese usuario puede ver el gráfico de linaje de cualquier tabla del lineage_data
esquema:
GRANT BROWSE on lineage_data to `userB@company.com`;
Del mismo modo, los usuarios de linaje deben tener permisos específicos para ver objetos del área de trabajo, como cuadernos, trabajos y paneles. Además, solo pueden ver información detallada sobre los objetos del área de trabajo cuando se registran en el área de trabajo en la que se crearon esos objetos. La información detallada sobre los objetos de nivel de área de trabajo de otras áreas de trabajo se enmascara en el gráfico de linaje.
Para obtener más información sobre cómo administrar el acceso a objetos protegibles en Unity Catalog, consulte Administración de privilegios en Unity Catalog. Para más información sobre cómo administrar el acceso a objetos del área de trabajo, como cuadernos, trabajos y paneles, vea Listas de control de acceso.
Limitaciones de linaje
El linaje de datos tiene las siguientes limitaciones:
Aunque el linaje se agrega para todas las áreas de trabajo que están asociadas al mismo metastore de Unity Catalog, los detalles de los objetos del área de trabajo, como cuadernos y paneles, solo están visibles en el área de trabajo en la que se crearon.
Dado que el linaje se calcula en un periodo gradual de un año, no se muestra el linaje recopilado hace más de un año. Por ejemplo, si un trabajo o consulta lee datos de la tabla A y escribe en la tabla B, el vínculo entre la tabla A y la tabla B solo se muestra durante un año. Puede filtrar los datos de linaje por período de tiempo dentro de la ventana de un año.
Los trabajos que usan la solicitud
runs submit
de la API de trabajos no están disponibles en las vistas de linaje. El linaje de nivel de tabla y columna se sigue capturando cuando un trabajo usa la solicitudruns submit
, pero el vínculo a la ejecución no se captura.Si se cambia el nombre de una tabla o una visualización, su linaje no se captura.
Si se cambia el nombre de un esquema o catálogo, el linaje no se captura para tablas y vistas en el catálogo o esquema cuyo nombre se ha cambiado.
Si usa puntos de comprobación de conjunto de datos de Spark SQL, el linaje no se captura.
Unity Catalog captura el linaje de las canalizaciones declarativas de Lakeflow en la mayoría de los casos. Sin embargo, en algunos casos, no se puede garantizar la cobertura de linaje completa, como cuando las canalizaciones usan tablas PRIVADAS.
El linaje no captura las funciones de Stack.
Las vistas temporales globales no se capturan en el linaje.
Las tablas de
system.information_schema
no se capturan en el linaje.El Catálogo de Unity captura el linaje a nivel de columna tanto como sea posible. Sin embargo, hay algunos casos en los que no se puede capturar el linaje a nivel de columna. Estos incluyen:
No se puede capturar el linaje de columnas si se hace referencia al origen o al destino como ruta de acceso (ejemplo:
select * from delta."s3://<bucket>/<path>"
). El linaje de columnas solo se admite cuando se hace referencia tanto al origen como al destino por nombre de tabla (ejemplo:select * from <catalog>.<schema>.<table>
).Uso de expresiones de tabla comunes (CTE), cambio de nombre de columna, funciones definidas por el usuario (UDF) o Conjuntos de datos distribuidos resistentes (RDD), lo que puede ocultar la asignación entre las columnas de origen y de destino.
El linaje completo de nivel de columna no se captura de manera predeterminada para las operaciones
MERGE
.Puede activar la captura de linaje para las operaciones
MERGE
si establece la propiedadspark.databricks.dataLineage.mergeIntoV2Enabled
de Spark entrue
. La habilitación de esta marca puede ralentizar el rendimiento de las consultas, especialmente en las cargas de trabajo que implican tablas muy amplias.