La API de Data Lineage puede transferir información de linaje de sistemas que se integran con OpenLineage, un estándar abierto para la recopilación de linaje.
Cuando envías eventos con formato de OpenLineage a la API de Data Lineage con el método ProcessOpenLineageRunEvent, la API de Data Lineage asigna atributos del mensaje de OpenLineage a atributos correspondientes en la API de Data Lineage.
En este documento, se proporcionan tablas de referencia para estas asignaciones.
Asignación de atributos
El método de la API de REST ProcessOpenLineageRunEvent asigna los atributos de OpenLineage a los atributos de la API de Data Lineage de la siguiente manera:
| Atributos de la API de Data Lineage | Atributos de OpenLineage |
|---|---|
| Process.name | projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME |
| Process.displayName | Job.namespace + ":" + Job.name |
| Process.attributes | Job.facets (consulta Datos almacenados) |
| Run.name | projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME/runs/HASH_OF_RUNID |
| Run.displayName | Run.runId |
| Run.attributes | Run.facets (consulta Datos almacenados) |
| Run.startTime | eventTime |
| Run.endTime | eventTime |
| Run.state | eventType |
| LineageEvent.name | projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME/runs/HASH_OF_RUNID/lineageEvents/HASH_OF_JOB_RUN_INPUT_OUTPUTS_OF_EVENT (por ejemplo, projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333) |
| LineageEvent.EventLinks.source | Entradas (fqn es la concatenación del espacio de nombres y el nombre) |
| LineageEvent.EventLinks.target | Salidas (fqn es la concatenación del espacio de nombres y el nombre) |
| LineageEvent.startTime | eventTime |
| LineageEvent.endTime | eventTime |
| requestId | Definido por el usuario del método |
También se admite el linaje a nivel de la columna que genera Managed Service para Apache Spark, siempre que use la faceta columnLineage dentro de los objetos outputs. A continuación, se muestra un ejemplo:
"outputs": [ {
"namespace": "bigquery",
"name": "project.dataset.outputtable",
"columnLineage": {
"_producer": "https://github.com/OpenLineage/OpenLineage/tree/1.39.0/integration/spark",
"_schemaURL": "https://openlineage.io/spec/facets/1-2-0/ColumnLineageDatasetFacet.json#/$defs/ColumnLineageDatasetFacet",
"fields": {
"output_field": { // This is the name of the output field
"inputFields": [
{
"namespace": "bigquery",
"name": "project.dataset.inputtable",
"field": "input_field", // This is the name of the input field
"transformations": [
{
"type": "DIRECT",
"subtype": "IDENTITY",
"description": "",
"masking": false
}
]
}
]
}
},
}
}]
En este ejemplo, crearás un vínculo de linaje a nivel de la columna entre input_field y output_field. Debes incluir el campo de transformaciones. Sin él, no se ingerirá el linaje a nivel de la columna. Para obtener más información sobre la definición de Open Lineage para esta faceta, consulta Faceta de conjunto de datos a nivel de columna.
Asignación de FQN
En la siguiente tabla, se proporcionan ejemplos de pares de espacio de nombres y nombre de OpenLineage para varios sistemas, y sus nombres completamente calificados (FQN) equivalentes de Knowledge Catalog (anteriormente, Dataplex Universal Catalog):
| Sistema | Espacio de nombres de OpenLineage | Nombre de OpenLineage | FQDN de Knowledge Catalog |
|---|---|---|---|
| Athena | awsathena://athena.{region_name}.amazonaws.com |
|
|
| AWS Glue | arn:aws:glue:{region}:{account id} |
table/{database name}/{table name} |
aws_glue:table:{region}.{account id}.{database name}.{table name} |
| Azure Cosmos DB | azurecosmos://{host}/dbs/{database} |
colls/{table} |
|
| Azure Data Explorer | azurekusto://{host}.kusto.windows.net |
{database}/{table} |
|
| Azure Synapse | sqlserver://{host}:{port} |
|
No compatible |
| BigQuery | bigquery |
|
|
| Cassandra | cassandra://{host}:{port} |
|
|
| MySQL | mysql://{host}:{port} |
|
|
| CrateDB | crate://{host}:{port} |
{database}.{schema}.{table} |
No compatible |
| DB2 | db2://{host}:{port} |
|
|
| Hive | hive://{host}:{port} |
{database}.{table} |
No compatible |
| MSSQL | mssql://{host}:{port} |
{database}.{schema}.{table} |
No compatible |
| OceanBase | oceanbase://{host}:{port} |
{database}.{table} |
No compatible |
| Oracle | oracle://{host}:{port} |
{serviceName}.{schema}.{table} or {sid}.{schema}.{table} |
|
| Postgres | postgres://{host}:{port} |
|
|
| Teradata | teradata://{host}:{port} |
{database}.{table} |
No compatible |
| Redshift | redshift://{cluster_identifier}.{region_name}:{port} |
|
|
| Snowflake | snowflake://{organization name}-{account name} or snowflake://{account-locator}(.{compliance})(.{cloud_region_id})(.{cloud}) |
|
|
| Spanner | spanner://{projectId}:{instanceId} |
{database}.{schema}.{table} |
Se admite en Knowledge Catalog, pero no admitido en el linaje de datos |
| Trino | trino://{host}:{port} |
|
|
| ABFSS (Azure Data Lake Gen2) | abfss://{container name}@{service name}.dfs.core.windows.net |
{path} |
|
| DBFS (Databricks File System) | dbfs://{workspace name} |
{path} |
|
| Cloud Storage | gs://{bucket name} |
{object key} |
|
| HDFS | hdfs://{namenode host}:{namenode port} |
{path} |
|
| Kafka | kafka://{bootstrap server host}:{port} |
{topic} |
kafka:{serverHostWithPort}.{topicId} |
| Sistema de archivos local | file |
{path} |
filesystem:localhost.{path} |
| Sistema de archivos remoto | file://{host} |
{path} |
filesystem:{hostWithPort}.{path} |
| S3 | s3://{bucket name} |
{object key} |
También se aceptan los prefijos de espacio de nombres s3a y s3n, y se convierten a s3. |
| WASBS (Azure Blob Storage) | wasbs://{container name}@{service name}.dfs.core.windows.net |
{object key} |
|
| Tema de Pub/Sub | pubsub |
topic:{projectId}:{topicId} |
pubsub:topic:{projectId}.{topicId} |
| Suscripción a Pub/Sub | pubsub |
subscription:{projectId}:{subscriptionId} |
pubsub:subscription:{projectId}.{subscriptionId} |
Formatos adicionales aceptados
Si bien OpenLineage no define pares namespace/name estándar para los siguientes sistemas, la API de Data Lineage acepta eventos de linaje para ellos cuando se formatean como se describe en la siguiente tabla. Los recursos a los que se hace referencia en los mensajes de OpenLineage con el espacio de nombres custom se interpretan como nombres personalizados completamente calificados.
| Sistema | Espacio de nombres de OpenLineage | Nombre de OpenLineage | FQDN de Knowledge Catalog |
|---|---|---|---|
| FQDN personalizado | custom |
{some reference} |
custom:{someReference} |
| Dataproc Metastore | dataproc_metastore |
|
|
¿Qué sigue?
- Obtén más información para integrar OpenLineage.
- Consulta la referencia de nombres completamente calificados.
- Explora la API de Data Lineage.
- Obtén más información para ver la información del linaje.