Compartir a través de


Visualización del linaje de datos mediante el catálogo de Unity

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.

Introducción al linaje.

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:

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:

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:

  1. En el área de trabajo de Azure Databricks, haga clic en el icono Datos.Catálogo.

  2. Busque la tabla.

  3. Seleccione la pestaña Linaje . Aparece el panel de linaje y muestra tablas relacionadas.

  4. 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 Icono de signo más de un nodo para mostrar más conexiones si están disponibles.

  5. 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.

    Gráfico de linaje.

  6. 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.

  7. 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:

    Linaje de columnas de menú completo.

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:

  1. En la barra lateral del área de trabajo, haga clic en el icono Datos.Catálogo.
  2. Busque el catálogo, haga clic en su nombre y, después, haga clic en el icono Asistente Icono del Asistente de ayuda en el producto: color en la esquina superior derecha.
  3. 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".

Databricks Assistant proporciona información y linaje de tablas.

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 solicitud runs 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 propiedad spark.databricks.dataLineage.mergeIntoV2Enabled de Spark en true. La habilitación de esta marca puede ralentizar el rendimiento de las consultas, especialmente en las cargas de trabajo que implican tablas muy amplias.