Mit der Data Lineage API können Lineage-Informationen aus Systemen aufgenommen werden, die in OpenLineage integriert sind, einem offenen Standard für die Erfassung von Lineage-Informationen.
Wenn Sie Ereignisse im OpenLineage-Format mit der Methode ProcessOpenLineageRunEvent an die Data Lineage API senden, werden Attribute aus der OpenLineage-Nachricht den entsprechenden Attributen in der Data Lineage API zugeordnet.
Dieses Dokument enthält Referenztabellen für diese Zuordnungen.
Attributzuordnung
Die REST API-Methode ProcessOpenLineageRunEvent ordnet OpenLineage-Attribute Data Lineage API-Attributen so zu:
| Data Lineage API-Attribute | OpenLineage-Attribute |
|---|---|
| Process.name | projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME |
| Process.displayName | Job.namespace + ":" + Job.name |
| Process.attributes | Job.facets (siehe Gespeicherte Daten) |
| 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 (siehe Gespeicherte Daten) |
| 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 (z. B. projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333) |
| LineageEvent.EventLinks.source | Eingaben (fqn ist die Verkettung von Namespace und Name) |
| LineageEvent.EventLinks.target | Ausgaben (fqn ist die Verkettung von Namespace und Name) |
| LineageEvent.startTime | eventTime |
| LineageEvent.endTime | eventTime |
| requestId | Vom Nutzer der Methode definiert |
Die Herkunft auf Spaltenebene wird unterstützt, wenn sie automatisch von Managed Service for Apache Spark generiert wird, sofern die Facette columnLineage in den outputs-Objekten verwendet wird. Benutzerdefinierte OpenLineage-Ereignisse, die diese Facette enthalten, materialisieren nur die Lineage auf Tabellenebene und rendern keine Lineage auf Spaltenebene in der Google Cloud Console. Nachfolgend sehen Sie ein Beispiel für die von Managed Service for Apache Spark generierte Facette:
"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
}
]
}
]
}
},
}
}]
In diesem Beispiel erstellen Sie einen Herkunftspfadlink auf Spaltenebene zwischen input_field und output_field. Sie müssen das Feld „transformations“ einfügen. Andernfalls werden keine Informationen zum Datenursprung auf Spaltenebene erfasst. Weitere Informationen zur Open Lineage-Definition für diese Facette finden Sie unter Dataset-Facette auf Spaltenebene.
Zuordnung von voll qualifizierten Namen
In der folgenden Tabelle finden Sie Beispiele für OpenLineage-Namespace- und ‑Namenspaare für verschiedene Systeme sowie die entsprechenden voll qualifizierten Namen (Fully Qualified Names, FQN) im Knowledge Catalog (ehemals Dataplex Universal Catalog):
| System | OpenLineage-Namespace | OpenLineage-Name | Voll qualifizierter Name des 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} |
|
Nicht unterstützt |
| BigQuery | bigquery |
|
|
| Cassandra | cassandra://{host}:{port} |
|
|
| MySQL | mysql://{host}:{port} |
|
|
| CrateDB | crate://{host}:{port} |
{database}.{schema}.{table} |
Nicht unterstützt |
| DB2 | db2://{host}:{port} |
|
|
| Hive | hive://{host}:{port} |
{database}.{table} |
Nicht unterstützt |
| MSSQL | mssql://{host}:{port} |
{database}.{schema}.{table} |
Nicht unterstützt |
| OceanBase | oceanbase://{host}:{port} |
{database}.{table} |
Nicht unterstützt |
| Oracle | oracle://{host}:{port} |
{serviceName}.{schema}.{table} or {sid}.{schema}.{table} |
|
| Postgres | postgres://{host}:{port} |
|
|
| Teradata | teradata://{host}:{port} |
{database}.{table} |
Nicht unterstützt |
| 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} |
Wird in Knowledge Catalog unterstützt, aber nicht in der Datenherkunft |
| 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} |
| Lokales Dateisystem | file |
{path} |
filesystem:localhost.{path} |
| Remote-Dateisystem | file://{host} |
{path} |
filesystem:{hostWithPort}.{path} |
| S3 | s3://{bucket name} |
{object key} |
s3a und s3n werden ebenfalls akzeptiert und in s3 konvertiert. |
| WASBS (Azure Blob Storage) | wasbs://{container name}@{service name}.dfs.core.windows.net |
{object key} |
|
| Pub/Sub-Thema | pubsub |
topic:{projectId}:{topicId} |
pubsub:topic:{projectId}.{topicId} |
| Pub/Sub-Abo | pubsub |
subscription:{projectId}:{subscriptionId} |
pubsub:subscription:{projectId}.{subscriptionId} |
Zusätzliche zulässige Formate
OpenLineage definiert zwar keine Standardpaare aus namespace/name für die folgenden Systeme, die Data Lineage API akzeptiert jedoch Herkunftsereignisse für diese Systeme, wenn sie wie in der folgenden Tabelle beschrieben formatiert sind. Ressourcen, auf die in OpenLineage-Nachrichten mit dem Namespace custom verwiesen wird, werden als benutzerdefinierte vollqualifizierte Namen interpretiert.
| System | OpenLineage-Namespace | OpenLineage-Name | Voll qualifizierter Name des Knowledge Catalog |
|---|---|---|---|
| Benutzerdefinierter FQN | custom |
{some reference} |
custom:{someReference} |
| Dataproc Metastore | dataproc_metastore |
|
|
Nächste Schritte
- Informationen zur Integration mit OpenLineage
- Weitere Informationen finden Sie in der Referenz zu voll qualifizierten Namen.
- Data Lineage API
- Informationen zum Ansehen von Informationen zur Herkunft