L'API Data Lineage peut ingérer des informations de traçabilité provenant de systèmes qui s'intègrent à OpenLineage, une norme ouverte pour la collecte de la traçabilité.
Lorsque vous envoyez des événements au format OpenLineage à l'API Data Lineage à l'aide de la méthode ProcessOpenLineageRunEvent, l'API Data Lineage mappe les attributs du message OpenLineage aux attributs correspondants de l'API Data Lineage.
Ce document fournit des tableaux de référence pour ces mappages.
Mappage des attributs
La méthode d'API REST ProcessOpenLineageRunEvent mappe les attributs OpenLineage aux attributs de l'API Data Lineage comme suit :
| Attributs de l'API Data Lineage | Attributs OpenLineage |
|---|---|
| Process.name | projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME |
| Process.displayName | Job.namespace + ":" + Job.name |
| Process.attributes | Job.facets (voir Données stockées) |
| 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 (voir Données stockées) |
| 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 (par exemple, projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333) |
| LineageEvent.EventLinks.source | inputs (fqn est la concaténation de l'espace de noms et du nom) |
| LineageEvent.EventLinks.target | sorties (fqn est la concaténation de l'espace de noms et du nom) |
| LineageEvent.startTime | eventTime |
| LineageEvent.endTime | eventTime |
| requestId | Défini par l'utilisateur de la méthode |
L'ancêtre au niveau des colonnes généré par Managed Service pour Apache Spark est également compatible, à condition qu'il utilise le facette columnLineage dans les objets outputs. Voici un exemple :
"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
}
]
}
]
}
},
}
}]
Dans cet exemple, vous créez un lien de traçabilité au niveau des colonnes entre input_field et output_field. Vous devez inclure le champ "transformations". Sans cela, la lignée au niveau des colonnes ne sera pas ingérée. Pour en savoir plus sur la définition Open Lineage de ce facet, consultez Facet d'ensemble de données au niveau des colonnes.
Mappage de noms complets
Le tableau suivant fournit des exemples de paires espace de noms et nom OpenLineage pour différents systèmes, ainsi que leurs noms complets Knowledge Catalog (anciennement Dataplex Universal Catalog) équivalents :
| Système | Espace de noms OpenLineage | Nom OpenLineage | Nom complet 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} |
|
Non compatible |
| BigQuery | bigquery |
|
|
| Cassandra | cassandra://{host}:{port} |
|
|
| MySQL | mysql://{host}:{port} |
|
|