Referencia de tablas del sistema de linaje
Importante
Esta tabla del sistema está en versión preliminar pública. Para acceder a la tabla, el esquema debe estar habilitado en el catálogo system
. Para obtener más información, consulte Habilitación de esquemas de tabla del sistema.
En este artículo se proporciona información general sobre las dos tablas del sistema de linaje. Estas tablas del sistema se basan en la característica de linaje de datos de Unity Catalog, lo que le permite consultar mediante programación los datos de linaje para impulsar la toma de decisiones e informes.
Nota:
Ambas tablas de linaje representan un subconjunto de todos los eventos de lectura y escritura, ya que no siempre es posible capturar linaje. Los registros solo se emiten cuando se puede deducir el linaje.
Tabla de linaje de tabla
La tabla del sistema de linaje de tabla incluye un registro para cada evento de lectura o escritura en una tabla o ruta de acceso de Unity Catalog. Esto incluye, entre otras cosas, ejecuciones de trabajos, ejecuciones de cuadernos y paneles actualizados con el evento de lectura o escritura.
Ruta de acceso de tabla: esta tabla del sistema se encuentra en system.access.table_lineage
.
Tabla de linaje de columnas
La tabla de linaje de columnas no incluye eventos que no tienen un origen. Por ejemplo, si inserta en una columna usando valores explícitos, no se capturará. Si lee una columna, se captura si escribe o no la salida. El linaje de columnas no se admite para Delta Live Tables.
Ruta de acceso de tabla: esta tabla del sistema se encuentra en system.access.column_lineage
.
Esquema de tabla del sistema de linaje
Las tablas del sistema de linaje usan el esquema siguiente. El esquema de linaje de tabla no incluye source_column_name
ni target_column_name
.
Nombre de la columna | Tipo de datos | Descripción | Ejemplo |
---|---|---|---|
account_id |
cadena | Identificador de la cuenta de Azure Databricks. | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
cadena | Id. del metastore de Unity Catalog. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
cadena | Id. del área de trabajo | 123456789012345 |
entity_type |
cadena | Tipo de entidad desde la que se capturó la transacción de linaje. El valor es NOTEBOOK , JOB , PIPELINE , DASHBOARD_V3 (Panel), DBSQL_DASHBOARD (Panel heredado), DBSQL_QUERY , o NULL . |
NOTEBOOK |
entity_id |
string | Id. de la entidad desde la que se capturó la transacción de linaje. Si entity_type es NULL , entity_id es NULL . |
- Cuaderno: 23098402394234 - Trabajo: 23098402394234 - Consulta de Databricks SQL: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Panel: 01ef070d110715f2b6d3061b8bda89ea - Panel heredado: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Canalización: e9cd8a31-de2f-4206-adfa-4f6605d68d88 |
entity_run_id |
string | Id. para describir la ejecución única de la entidad o NULL . Esto difiere para cada tipo de entidad:- Bloc de notas: command_run_id - Trabajo: job_run_id - Consulta de Databricks SQL: query_run_id - Panel: query_run_id - Panel heredado: query_run_id - Canalización: pipeline_update_id Si entity_type es NULL , entity_run_id es NULL . |
- Cuaderno: e3cr5a10-de6f-6206-fdfa-4f5505d68d55 - Trabajo: 51090402394234 - Consulta de Databricks SQL: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Panel: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - Panel heredado: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - Canalización: c5am1e0r-on2f-4206-adfa-4f6605d68d88 |
source_table_full_name |
string | Nombre de tres partes para identificar la tabla de origen. | catalog.schema.table |
source_table_catalog |
cadena | Catálogo de la tabla de origen. | catalog |
source_table_schema |
cadena | Esquema de la tabla de origen. | schema |
source_table_name |
cadena | El nombre de la tabla de origen. | table |
source_path |
cadena | Ubicación en el almacenamiento en la nube de la tabla de origen o la ruta de acceso si lee directamente desde el almacenamiento en la nube. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
source_type |
cadena | Tipo del origen. El valor es TABLE , PATH , VIEW o STREAMING_TABLE . |
TABLE |
source_column_name |
cadena | El nombre de la columna de origen. | date |
target_table_full_name |
cadena | Nombre de tres partes para identificar la tabla de destino. | catalog.schema.table |
target_table_catalog |
cadena | Catálogo de la tabla de destino. | catalog |
target_table_schema |
cadena | Esquema de la tabla de destino. | schema |
target_table_name |
cadena | Nombre de la tabla de destino. | table |
target_path |
cadena | Ubicación en el almacenamiento en la nube de la tabla de destino. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
target_type |
cadena | Tipo del destino. El valor es TABLE , PATH , VIEW o STREAMING TABLE . |
TABLE |
target_column_name |
cadena | El nombre de la columna de destino. | date |
created_by |
cadena | El usuario que generó este linaje. Puede ser un nombre de usuario de Azure Databricks, un id. de entidad de servicio de Azure Databricks, "Usuario del sistema" o NULL si no se puede capturar la información del usuario. |
crampton.rods@email.com |
event_time |
timestamp | Marca de tiempo cuando se generó el linaje. La información de zona horaria se registra al final del valor con +00:00 , que representa la hora UTC. |
2023-06-20T19:47:21.194+00:00 |
event_date |
date | Fecha en la que se generó el linaje. Se trata de una columna con particiones. | 2023-06-20 |
Leer las tablas del sistema de linaje
Tenga en cuenta las siguientes consideraciones al analizar las tablas del sistema de linaje:
- Para
entity_type
, Azure Databricks admite Delta Live Tables, cuadernos, trabajos, consultas de Databricks SQL y paneles. No se admiten eventos de otras entidades. - Si ve
entity_type
comonull
, significa que ninguna entidad de Azure Databricks está implicada en el evento. Por ejemplo, podría ser el resultado de una consulta JDBC o de un usuario haciendo clic en la pestaña Datos de ejemplo de la interfaz de usuario de Azure Databricks. - Para determinar si el evento era de lectura o escritura, puede ver el tipo de origen y el tipo de destino.
- Solo lectura: el tipo de origen no es null, pero el tipo de destino es null.
- Solo escritura: el tipo de destino no es null, pero el tipo de origen es null.
- Lectura y escritura: el tipo de origen y el tipo de destino no son null.
Ejemplo de tabla del sistema de linaje
Como ejemplo de cómo se registra el linaje en las tablas del sistema, a continuación se muestra una consulta de ejemplo seguida de los registros de linaje que crea la consulta:
CREATE OR REPLACE TABLE car_features
AS SELECT *, in1+in2 as premium_feature_set
FROM car_features_exterior
JOIN car_features_interior
USING(id, model);
El registro en system.access.table_lineage
tendría el siguiente aspecto:
entity_type |
entity_id |
source_table_name |
target_table_name |
created_by |
event_time |
---|---|---|---|---|---|
NOTEBOOK |
27080565267 |
car_features_exterior |
car_features |
crampton@email.com |
2023-01-25T16:19:58.908+0000 |
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
crampton@email.com |
2023-01-25T16:19:58.908+0000 |
El registro en system.access.column_lineage
tendría el siguiente aspecto:
entity_type |
entity_id |
source_table_name |
target_table_name |
source_column_name |
target_column_name |
event_time |
---|---|---|---|---|---|---|
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
in1 |
premium_feature_set |
2023-01-25T16:19:58.908+0000 |
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
in2 |
premium_feature_set |
2023-01-25T16:19:58.908+0000 |
Nota:
No todas las columnas de linaje se muestran en el ejemplo anterior. Para obtener el esquema completo, consulte el esquema de linaje anterior.
Resolución de problemas de consultas a tablas externas
Cuando se hace referencia a una tabla externa utilizando su ruta de almacenamiento en la nube, el registro de linaje asociado solo incluye el nombre de la ruta y no el nombre de la tabla. Por ejemplo, el registro de linaje de esta consulta incluiría el nombre de la ruta y no el nombre de la tabla:
SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;
Si está intentando consultar los registros de linaje de una tabla externa a la que se hace referencia mediante una ruta, tendrá que filtrar la consulta utilizando source_path
o target_path
en lugar de source_table_full_name
o target_table_full_name
. Por ejemplo, la siguiente consulta extrae todos los registros de linaje de una tabla externa:
SELECT *
FROM system.access.table_lineage
WHERE
source_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1" OR
target_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1";
Ejemplo: Recuperar registros de linaje basándose en el nombre de una tabla externa
Si no desea recuperar manualmente la ruta de almacenamiento en la nube para encontrar el linaje, puede utilizar la siguiente función para obtener datos de linaje utilizando el nombre de la tabla. También puede sustituir system.access.table_lineage
con system.access.column_lineage
en la función si desea consultar el linaje de las columnas.
def getLineageForTable(table_name):
table_path = spark.sql(f"describe detail {table_name}").select("location").head()[0]
df = spark.read.table("system.access.table_lineage")
return df.where(
(df.source_table_full_name == table_name)
| (df.target_table_full_name == table_name)
| (df.source_path == table_path)
| (df.target_path == table_path)
)
A continuación, utilice el siguiente comando para llamar a la función y mostrar los registros de linaje de la tabla externa:
display(getLineageForTable("table_name"))