L'API Data Lineage può importare informazioni sulla derivazione da sistemi che si integrano con OpenLineage, uno standard aperto per la raccolta della derivazione.
Quando invii eventi formattati in OpenLineage all'API Data Lineage utilizzando il metodo ProcessOpenLineageRunEvent, l'API Data Lineage mappa gli attributi del messaggio OpenLineage agli attributi corrispondenti nell'API Data Lineage.
Questo documento fornisce tabelle di riferimento per queste mappature.
Mappatura attributi
Il metodo dell'API REST ProcessOpenLineageRunEvent mappa gli attributi OpenLineage agli attributi dell'API Data Lineage come segue:
| Attributi dell'API Data Lineage | Attributi OpenLineage |
|---|---|
| Process.name | projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME |
| Process.displayName | Job.namespace + ":" + Job.name |
| Process.attributes | Job.facets (vedi Dati archiviati) |
| 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 (vedi Dati memorizzati) |
| 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 (ad esempio, projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333) |
| LineageEvent.EventLinks.source | input (fqn è la concatenazione di spazio dei nomi e nome) |
| LineageEvent.EventLinks.target | output (fqn è la concatenazione di spazio dei nomi e nome) |
| LineageEvent.startTime | eventTime |
| LineageEvent.endTime | eventTime |
| requestId | Definito dall'utente del metodo |
La derivazione a livello di colonna è supportata se generata automaticamente da Managed Service for Apache Spark, a condizione che utilizzi la faccetta columnLineage all'interno degli oggetti outputs. Gli eventi OpenLineage personalizzati che includono questo facet materializzano solo la derivazione a livello di tabella e non eseguono il rendering della derivazione a livello di colonna nella console Google Cloud . Di seguito è riportato un esempio di facet generato da Managed Service for Apache Spark:
"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 questo esempio, crei un link di derivazione a livello di colonna tra input_field e output_field. Devi includere il campo transformations, altrimenti la derivazione a livello di colonna non verrà importata. Per saperne di più sulla definizione di Open Lineage per questa faccetta, consulta Faccetta del set di dati a livello di colonna.
Mappatura FQN
La tabella seguente fornisce esempi di coppie di namespace e nome OpenLineage per vari sistemi e i relativi nomi completi (FQN) equivalenti di Knowledge Catalog (in precedenza Dataplex Universal Catalog):
| Sistema | Spazio dei nomi OpenLineage | Nome OpenLineage | FQN di 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 supportata |
| BigQuery | bigquery |
|
|
| Cassandra | cassandra://{host}:{port} |
|
|
| MySQL | mysql://{host}:{port} |
|
|
| CrateDB | crate://{host}:{port} |
{database}.{schema}.{table} |
Non supportata |
| DB2 | db2://{host}:{port} |
|
|
| Hive | hive://{host}:{port} |
{database}.{table} |
Non supportata |
| MSSQL | mssql://{host}:{port} |
{database}.{schema}.{table} |
Non supportata |
| OceanBase | oceanbase://{host}:{port} |
{database}.{table} |
Non supportata |
| Oracle | oracle://{host}:{port} |
{serviceName}.{schema}.{table} or {sid}.{schema}.{table} |
|
| Postgres | postgres://{host}:{port} |
|
|
| Teradata | teradata://{host}:{port} |
{database}.{table} |
Non supportata |
| 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} |
Supportato in Knowledge Catalog, ma non in Derivazione dei dati |
| 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} |
| File system locale | file |
{path} |
filesystem:localhost.{path} |
| File system remoto | file://{host} |
{path} |
filesystem:{hostWithPort}.{path} |
| S3 | s3://{bucket name} |
{object key} |
Sono accettati anche i prefissi degli spazi dei nomi s3a e s3n, che vengono convertiti in s3 |
| WASBS (Azure Blob Storage) | wasbs://{container name}@{service name}.dfs.core.windows.net |
{object key} |
|
| Argomento Pub/Sub | pubsub |
topic:{projectId}:{topicId} |
pubsub:topic:{projectId}.{topicId} |
| Sottoscrizione Pub/Sub | pubsub |
subscription:{projectId}:{subscriptionId} |
pubsub:subscription:{projectId}.{subscriptionId} |
Altri formati accettati
Sebbene OpenLineage non definisca coppie namespace/name standard per i seguenti sistemi, l'API Data Lineage accetta gli eventi di derivazione per questi sistemi se formattati come descritto nella tabella seguente. Le risorse a cui viene fatto riferimento nei messaggi OpenLineage con lo spazio dei nomi custom vengono interpretate come nomi completi personalizzati.
| Sistema | Spazio dei nomi OpenLineage | Nome OpenLineage | FQN di Knowledge Catalog |
|---|---|---|---|
| FQN personalizzato | custom |
{some reference} |
custom:{someReference} |
| Dataproc Metastore | dataproc_metastore |
|
|
Passaggi successivi
- Scopri come eseguire l'integrazione con OpenLineage.
- Consulta il riferimento per i nomi completi.
- Esplora l'API Data Lineage.
- Scopri come visualizzare le informazioni sulla derivazione.