Title
Page icon
Create new category
Edit page index title
Edit category
Edit link
OpenLineage Asset Correlation
Pipeline lineage links OpenLineage datasets to Catalog assets when the job emits OpenLineage events (START plus COMPLETE or FAIL) with inputs and outputs, each dataset follows the OpenLineage naming spec, and the same asset is already onboarded and crawled in ADOC.
If the format is unsupported or the Catalog asset is missing, the dataset still appears in the pipeline graph, but it is not linked to the Catalog.
Summary
Onboard the matching data source in ADOC first. The event must identify the same catalog, cluster, project, or bucket.
Source | Namespace | Name | Also required |
|---|---|---|---|
Iceberg (REST) | often | optional |
|
Iceberg (Glue) | often | optional |
|
AWS Glue table |
|
| TABLE symlink if the primary is an S3 path |
Redshift |
|
| — |
Snowflake |
|
| — |
BigQuery |
|
| — |
Trino |
|
| — |
Databricks Unity Catalog | often | optional |
|
Pub/Sub |
|
| Topics only |
S3 / GCS / ADLS |
| object path | Onboarded path expression (glob) must cover that path |
When a TABLE symlink is present, ADOC uses that identity (not the S3 path).
Not Linked Yet PostgreSQL, MySQL, MariaDB, Oracle, SAP HANA, SQL Server, Kafka, Hive (non-Glue), Presto, MongoDB, Cassandra, Teradata, DB2, ClickHouse, Athena, Databricks Hive Metastore, Iceberg Hive/Nessie/JDBC/Hadoop catalogs, Pub/Sub subscriptions, JDBC URLs as namespace, and file:// / wasbs:// / dbfs:// paths.
Details
Iceberg
Iceberg is identified by the catalog facet, not by the S3 path. Every Iceberg input/output must include:
facets.catalogwithframework: icebergandtypeofrestorgluefacets.symlinkswith a TABLE identifier for that catalog
Without those facets, an s3:// namespace is treated as a file, not an Iceberg table. Do not use iceberg:// as the dataset namespace. Only REST and Glue Iceberg catalogs are supported.
REST catalog (type: rest)
Onboard the Iceberg REST catalog in ADOC. metadataUri and the TABLE symlink namespace must be that same catalog URL. Table name: demo.orders (or table/demo/orders).
Glue catalog (type: glue)
Onboard Iceberg on AWS Glue in ADOC. The TABLE symlink namespace is the Glue catalog ARN; its region must match the onboarded connection. Table name: sales.orders or table/sales/orders.
AWS Glue tables
Hive / Spark tables without Iceberg facets. Do not put the table path in the Glue ARN, and do not omit the arn:aws:glue: prefix.
If the job only reports an S3 path, add a Glue TABLE symlink:
Amazon Redshift
Use redshift://cluster.region:port — not a JDBC URL. Cluster, region, and port must match the onboarded Redshift connection.
Snowflake
Use snowflake://… (account locator or Snowflake host), not a JDBC URL. name must be DATABASE.SCHEMA.TABLE. The account must match the onboarded Snowflake connection.
BigQuery
name must be project.dataset.table. The project must match the onboarded BigQuery connection.
Trino
Host and port must match the Trino instance onboarded in ADOC.
Databricks Unity Catalog
The table must already be crawled from that Databricks workspace. Databricks Hive Metastore (non–Unity Catalog) is not supported.
Google Cloud Pub/Sub
Topics only. Subscriptions do not link. name must start with topic:. The GCP project and topic must match the onboarded Pub/Sub source.
Object storage (S3, GCS, Azure Data Lake)
Supported schemes: s3://, gs:// / gcs://, and abfss://. If the same dataset also has a Glue, Iceberg, or Unity Catalog TABLE symlink, ADOC links the table, not the file path.
ADOC joins namespace and name into one path (for example s3://my-bucket/data/events.parquet) and links it only when both are true:
The bucket (S3/GCS) or storage account (ADLS) matches the onboarded file source.
That path matches the file asset path expression you configured when onboarding (glob, not Java regex).
Use the same URI scheme in the event as in the onboarded path expression (s3:// vs s3n://, gs:// vs gcs:// do not match each other).
Path expression glob
Matching is per path segment (/-separated). Wildcards: * (any characters in one segment), ? (one character). A trailing * matches any remaining depth. ** is not a recursive glob — it behaves like a single *.
Onboarded path expression | Event path | Links? |
|---|---|---|
|
| Yes — exact |
|
| Yes — |
|
| Yes — trailing |
|
| Yes — trailing |
|
| Yes — event may be one segment deeper |
|
| Yes — partition wildcard |
|
| Yes — extra file-level glob is optional |
|
| Yes — |
|
| Yes — |
|
| No — two extra segments without a trailing |
|
| No — |
|
| No — different partition |
|
| No — different prefix |
|
| No — bucket / account must match |
|
| No — scheme must match |
| any onboarded object store | No — those schemes are not supported |
GCS uses the same rules with gs:// (or gcs:// on both sides). ADLS uses abfss://container@account.dfs.core.windows.net/…; the storage account must match the onboarded source.
If the asset does not link
Confirm the source is in the summary table (not the unsupported list).
Confirm the asset is onboarded and crawled in ADOC, on the same connection (catalog URL, cluster, project, region, or bucket).
Compare the event
namespace,name, and facets with the example for that source.For Iceberg and Unity Catalog, confirm
catalog+ TABLEsymlinksare present. An S3-only dataset is treated as a file, not a table.
What's next
For Spark-specific OpenLineage setup, see Spark OpenLineage Integration.
For dbt-specific setup, see dbt Core OpenLineage Integration.
For additional help, contact www.acceldata.force.com OR call our service desk +1 844 9433282
Copyright © 2025