Die Data Lineage API kann Herkunftsinformationen aus Systemen aufnehmen, die in OpenLineage, einen offenen Standard für die Herkunftserfassung, eingebunden sind.
Wenn Sie OpenLineage-formatierte Ereignisse mit der Methode ProcessOpenLineageRunEvent an die Data Lineage API senden, ordnet die Data Lineage API Attribute aus der OpenLineage-Nachricht den entsprechenden Attributen in der Data Lineage API zu.
Dieses Dokument enthält Referenztabellen für diese Zuordnungen.
Attributzuordnung
Die REST API-Methode ProcessOpenLineageRunEvent ordnet OpenLineage-Attribute so den Data Lineage API-Attributen 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 Herkunft auf Tabellenebene und rendern die Herkunft auf Spaltenebene nicht in der Google Cloud Console. Im Folgenden finden 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 Herkunftslink auf Spaltenebene zwischen input_field und output_field. Sie müssen das Feld „transformations“ angeben. Ohne dieses Feld wird die Herkunft auf Spaltenebene nicht aufgenommen. Weitere Informationen zur Open Lineage-Definition für diese Facette finden Sie unter Dataset-Facette auf Spaltenebene.
FQN-Zuordnung
In der folgenden Tabelle finden Sie Beispiele für OpenLineage-Namespace- und -Namenpaare für verschiedene Systeme und die entsprechenden voll qualifizierten Namen (FQNs) im Knowledge Catalog (ehemals Dataplex Universal Catalog):
| System | OpenLineage-Namespace | OpenLineage-Name | Knowledge Catalog-FQN |
|---|---|---|---|
| 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} |
Die Namespace-Präfixe s3a und s3n werden ebenfalls akzeptiert und in s3 umgewandelt. |
| 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} |
Weitere zulässige Formate
OpenLineage definiert zwar keine Standard-namespace/name-Paare für die folgenden Systeme, die Data Lineage API akzeptiert jedoch Herkunftsereignisse für sie, wenn sie wie in der folgenden Tabelle beschrieben formatiert sind. Ressourcen, die in OpenLineage-Nachrichten mit dem Namespace custom referenziert werden, werden als benutzerdefinierte vollständig qualifizierte Namen interpretiert.
| System | OpenLineage-Namespace | OpenLineage-Name | Knowledge Catalog-FQN |
|---|---|---|---|
| Benutzerdefinierter voll qualifizierter Name | custom |
{some reference} |
custom:{someReference} |
| Dataproc Metastore | dataproc_metastore |
|
|
Nächste Schritte
- Informationen zur Einbindung in OpenLineage
- Weitere Informationen finden Sie in der Referenz zu voll qualifizierten Namen.
- Data Lineage API kennenlernen
- Informationen zur Herkunft ansehen