Acceldata OpenLineage
Custom OpenLineage extractors for Acceldata. Install this package in your Airflow environment and register the extractors so lineage events include Acceldata-specific facets for dbt Cloud runs.
Prerequisites
OpenLineage should already be enabled and configured in your Airflow environment. This package additionally requires:
| Component | Notes |
|---|---|
| Apache Airflow | 2.10 or later |
apache-airflow-providers-openlineage |
Required for custom extractors |
apache-airflow-providers-dbt-cloud |
Required for DbtCloudRunJobOperator |
This package adds one runtime dependency: attrs.
Install
Install on every Airflow component that runs or schedules tasks (workers, scheduler, and triggerer if applicable):
pip install acceldata-openlineage
Self-managed Airflow: install into the same Python environment used by Airflow processes, then restart workers and the scheduler.
For Google Cloud Composer, follow the dedicated section below.
Setup on Google Cloud Composer
These steps assume OpenLineage is already configured in your Composer environment. Changes are made in the Google Cloud Console under Composer → Environments → your environment → Edit.
1. Add PyPI packages
Open the PyPI packages tab and add:
| Package | Notes |
|---|---|
acceldata-openlineage |
This package (pin a version in production, e.g. ==1.0.0) |
apache-airflow-providers-dbt-cloud |
Required if not already installed |
Composer installs packages on all Airflow components during the next environment update.
2. Register the extractor
Open the Environment variables tab and set OPENLINEAGE_EXTRACTORS
(AIRFLOW__OPENLINEAGE__EXTRACTORS is an equivalent alias).
Append this extractor to any extractors you already use—do not replace the full list unless you intend to:
acceldata_openlineage.extractors.dbt.dbt_cloud.DbtCloudRunJobOperatorExtractor
Example when other extractors are already registered:
your.existing.Extractor;acceldata_openlineage.extractors.dbt.dbt_cloud.DbtCloudRunJobOperatorExtractor
3. Configure the dbt Cloud connection
In the Airflow UI (Admin → Connections), create or update the connection used by your DAGs:
| Field | Value |
|---|---|
| Connection Id | Same as dbt_cloud_conn_id on the operator (default: dbt_cloud_default) |
| Connection Type | dbt Cloud |
| Login | dbt Cloud Account ID |
| Password | dbt Cloud API token |
When account_id is not set on the operator, the extractor resolves
dbtCloudAccountId from the connection login.
4. Apply the environment update
Save the Composer environment changes. Composer rebuilds workers and the scheduler; this can take several minutes.
After the update completes, run a DAG with a DbtCloudRunJobOperator task and
check task logs for Attached dbtCloud facet.
Register extractors (other environments)
For self-managed Airflow, MWAA, Astronomer, or other platforms, register the
extractor via environment variable or airflow.cfg.
Set a semicolon-separated list of fully qualified class names. Append this extractor to any extractors you already use:
Environment variable:
export AIRFLOW__OPENLINEAGE__EXTRACTORS=\
acceldata_openlineage.extractors.dbt.dbt_cloud.DbtCloudRunJobOperatorExtractor
If you already have extractors configured, append with ;:
export AIRFLOW__OPENLINEAGE__EXTRACTORS=\
your.existing.Extractor;\
acceldata_openlineage.extractors.dbt.dbt_cloud.DbtCloudRunJobOperatorExtractor
airflow.cfg:
[openlineage]
extractors = acceldata_openlineage.extractors.dbt.dbt_cloud.DbtCloudRunJobOperatorExtractor
OPENLINEAGE_EXTRACTORS is an equivalent alias supported by the OpenLineage
provider.
Restart Airflow workers and the scheduler after changing extractor configuration.
dbt Cloud connection
Configure a dbt Cloud Airflow connection as usual:
| Connection field | Value |
|---|---|
| Conn Id | Same as dbt_cloud_conn_id on the operator (default: dbt_cloud_default) |
| Login | dbt Cloud Account ID |
| Password | dbt Cloud API token |
When account_id is not set on the operator, the extractor resolves
dbtCloudAccountId from the connection login (same behavior as the dbt Cloud
provider hook).
Included extractors
| Extractor | Operator | Facet key |
|---|---|---|
DbtCloudRunJobOperatorExtractor |
DbtCloudRunJobOperator |
dbtCloud |
dbtCloud run facet
Attached when operator.run_id is set (normally on COMPLETE / FAIL; also on
START if the run was reused). Fields:
| Field | Source |
|---|---|
dbtCloudRunId |
DbtCloudRunJobOperator.run_id |
dbtCloudJobId |
DbtCloudRunJobOperator.job_id |
dbtCloudAccountId |
DbtCloudRunJobOperator.account_id, or the Account ID (login) from dbt_cloud_conn_id when unset |
The extractor delegates to the operator's built-in OpenLineage methods so default dbt Cloud lineage behavior is preserved, then merges the Acceldata facet used for InterPipelineRunLink.
Verify installation
On an Airflow worker node, confirm the package and extractor import correctly:
from acceldata_openlineage import DbtCloudRunJobOperatorExtractor
print(DbtCloudRunJobOperatorExtractor.get_operator_classnames())
# ['DbtCloudRunJobOperator']
Run a DAG with a DbtCloudRunJobOperator task and confirm lineage events
include a dbtCloud run facet with dbtCloudRunId, dbtCloudJobId, and
dbtCloudAccountId populated.
Troubleshooting
| Symptom | What to check |
|---|---|
| Extractor not loading | Import path matches config exactly; package installed on the worker running the task |
No dbtCloud facet on START |
Expected when run_id is not set yet; facet appears on COMPLETE / FAIL |
Missing dbtCloudAccountId |
Set account_id on the operator, or put the Account ID in the connection Login field |
| Composer: changes not picked up | Environment update finished successfully |
Check Airflow task logs for messages such as Attached dbtCloud facet or
warnings about connection lookup failures.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file acceldata_openlineage-1.0.0.tar.gz.
File metadata
- Download URL: acceldata_openlineage-1.0.0.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bba08848aa76fcaa23bd011439a4307b1db196ee5bd002e50d6d3ea43e7b6995
|
|
| MD5 |
fff1c7e34a6843b0a9aa9e2edc40b9d2
|
|
| BLAKE2b-256 |
d76dd6770a20cba406874f36454c9a6ff26cc7fe037ae7c615e8d31bceb77917
|
File details
Details for the file acceldata_openlineage-1.0.0-py3-none-any.whl.
File metadata
- Download URL: acceldata_openlineage-1.0.0-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92b4dd777fcdf121a635b40ea180fa8339813cf9d351924ecc2909a7c0cd4120
|
|
| MD5 |
c069ea580e444afc94a3f8a45c853ce5
|
|
| BLAKE2b-256 |
a9855f11d24b6698dd41a82a48fa4383850884717512cb5b37740c497d76267d
|