Compartir a través de


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

En esta página 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 también puede incluir recursos externos y flujos de trabajo que se ejecutan fuera de Azure Databricks. Esta característica de metadatos de linaje externo está en versión preliminar pública. Consulte Traiga su propio linaje de datos.

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 una demostración de cómo ver el linaje de datos, consulte Catálogo de Unity: linaje de datos.

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.
  • Los recursos externos (los que no están registrados en el metastore del catálogo de Unity) se deben agregar como objetos de metadatos externos en el catálogo de Unity, configurados para tener relaciones con otros objetos protegibles registrados en el metastore de Catálogo de Unity. Consulte Traiga su propio linaje de datos.
  • 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 de linaje de columnas para las cargas de trabajo de canalizaciones declarativas de Spark de Lakeflow requiere Databricks Runtime 13.3 LTS o superior.

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. Estas limitaciones también se aplican a las tablas del sistema de linaje:

  • 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 de API runs submit de trabajos o el spark submit tipo de tarea no están disponibles en las vistas de linaje. El linaje de nivel de tabla y columna todavía se captura para estos flujos de trabajo, pero no se captura el vínculo a la ejecución del trabajo.

  • El linaje no se conserva para los objetos cuyo nombre ha cambiado: esto se aplica a catálogos, esquemas, tablas, vistas y columnas.

  • Si usa puntos de comprobación de conjunto de datos de Spark SQL, el linaje no se captura.

  • Unity Catalog captura el linaje de Lakeflow Spark Declarative Pipelines 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.

  • Los conjuntos de datos distribuidos resistentes (RDD) no se capturan en el linaje.

  • 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 funciones de usuario (UDFs), que pueden ocultar la correspondencia entre columnas de origen y destino.