{"id":3397,"library":"apache-airflow-providers-dbt-cloud","title":"Apache Airflow dbt Cloud Provider","description":"This provider package allows Apache Airflow to interact with dbt Cloud, enabling orchestration of dbt Cloud jobs and fetching job run details. It includes operators, sensors, and hooks for various dbt Cloud functionalities. The current version is 4.8.0. Airflow provider packages typically follow a regular release cadence, often aligned with Airflow's own releases or as new features/bug fixes are introduced.","status":"active","version":"4.8.0","language":"python","source_language":"en","source_url":"https://github.com/apache/airflow/tree/main/airflow/providers/dbt_cloud","tags":["airflow","provider","dbt","dbt cloud","etl","orchestration","data transformation"],"install":[{"cmd":"pip install apache-airflow-providers-dbt-cloud","lang":"bash","label":"Install the dbt Cloud Provider"}],"dependencies":[{"reason":"This is an Airflow provider, requiring Apache Airflow (>=2.4.0) to function.","package":"apache-airflow","optional":false},{"reason":"Used internally by the provider for dbt Cloud API interactions.","package":"dbt-cloud-sdk","optional":false}],"imports":[{"symbol":"DbtCloudHook","correct":"from airflow.providers.dbt_cloud.hooks.dbt_cloud import DbtCloudHook"},{"symbol":"DbtCloudRunJobOperator","correct":"from airflow.providers.dbt_cloud.operators.dbt_cloud import DbtCloudRunJobOperator"},{"symbol":"DbtCloudJobRunSensor","correct":"from airflow.providers.dbt_cloud.sensors.dbt_cloud import DbtCloudJobRunSensor"}],"quickstart":{"code":"from __future__ import annotations\n\nimport os\nimport pendulum\n\nfrom airflow.models.dag import DAG\nfrom airflow.providers.dbt_cloud.operators.dbt_cloud import DbtCloudRunJobOperator\nfrom airflow.providers.dbt_cloud.sensors.dbt_cloud import DbtCloudJobRunSensor\n\n\nDBT_CLOUD_CONN_ID = os.environ.get('DBT_CLOUD_CONN_ID', 'dbt_cloud_default')\nDBT_CLOUD_ACCOUNT_ID = os.environ.get('DBT_CLOUD_ACCOUNT_ID', '12345') # Your dbt Cloud Account ID\nDBT_CLOUD_JOB_ID = os.environ.get('DBT_CLOUD_JOB_ID', '67890') # Your dbt Cloud Job ID\n\nwith DAG(\n    dag_id=\"dbt_cloud_example_dag\",\n    schedule=None,\n    start_date=pendulum.datetime(2023, 1, 1, tz=\"UTC\"),\n    catchup=False,\n    tags=[\"dbt_cloud\", \"example\"],\n) as dag:\n    trigger_dbt_cloud_job = DbtCloudRunJobOperator(\n        task_id=\"trigger_dbt_cloud_job\",\n        dbt_cloud_conn_id=DBT_CLOUD_CONN_ID,\n        account_id=DBT_CLOUD_ACCOUNT_ID,\n        job_id=DBT_CLOUD_JOB_ID,\n        check_interval=10, # Check job status every 10 seconds\n        timeout=60 * 20, # Fail after 20 minutes\n        deferrable=True # Enable deferrable mode for async execution\n    )\n\n    wait_for_dbt_cloud_job = DbtCloudJobRunSensor(\n        task_id=\"wait_for_dbt_cloud_job\",\n        dbt_cloud_conn_id=DBT_CLOUD_CONN_ID,\n        account_id=DBT_CLOUD_ACCOUNT_ID,\n        job_id=DBT_CLOUD_JOB_ID,\n        deferrable=True\n    )\n\n    trigger_dbt_cloud_job >> wait_for_dbt_cloud_job\n","lang":"python","description":"This example DAG demonstrates how to trigger a dbt Cloud job and then wait for its completion using the `DbtCloudRunJobOperator` and `DbtCloudJobRunSensor`. It uses deferrable operators for efficient async execution. Ensure you configure an Airflow connection of type 'dbt Cloud' named `dbt_cloud_default` (or your chosen `DBT_CLOUD_CONN_ID`) with your dbt Cloud API Token. Also, provide your `account_id` and `job_id`."},"warnings":[{"fix":"Review the latest documentation for the DbtCloud provider and update your DAGs to use the current parameter names and structures. For instance, ensure `account_id` and `job_id` are explicitly passed.","message":"Version 4.0.0 removed all deprecated parameters in operators and hooks. If you were using any parameters marked as deprecated in previous versions (e.g., `schema`, `project_id`, `environment_id`), your DAGs will break.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Remove `poll_interval` from `DbtCloudRunJobOperator` instances. To leverage deferrable mode, set `deferrable=True` on both operators and sensors. If you need a specific polling interval for the run, set it on `DbtCloudJobRunSensor` or use `check_interval` on `DbtCloudRunJobOperator`.","message":"In version 3.0.0, the `poll_interval` parameter was removed from `DbtCloudRunJobOperator` as it was only supported in `DbtCloudJobRunSensor`. Additionally, the `deferrable` parameter was added to `DbtCloudRunJobOperator` for async execution.","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Verify that your Airflow connection (e.g., `dbt_cloud_default`) is correctly set up with the 'dbt Cloud' type and a valid, unexpired API token. Ensure the API token has the necessary read/write permissions for the specific dbt Cloud account and jobs you are interacting with.","message":"Incorrect or missing dbt Cloud Connection configuration. The provider requires an Airflow connection of type 'dbt Cloud' with a valid API token. Common issues include using the wrong connection ID, an expired token, or a token with insufficient permissions.","severity":"gotcha","affected_versions":"All"},{"fix":"Double-check that you are passing the correct `account_id` and `job_id` for your dbt Cloud environment. These can be found in the dbt Cloud UI (e.g., in the URL when viewing a job or account settings).","message":"Confusion between `account_id`, `job_id`, and other identifiers. Users often provide incorrect IDs for dbt Cloud resources, leading to 'resource not found' or 'permission denied' errors.","severity":"gotcha","affected_versions":"All"}],"env_vars":null,"last_verified":"2026-05-21T13:20:53.913Z","next_check":"2026-07-10T00:00:00.000Z","problems":[{"fix":"Ensure that the DbtCloudRunJobOperator is correctly configured with appropriate parameters such as 'wait_for_termination', 'check_interval', and 'execution_timeout'. Additionally, verify that the dbt Cloud job is set up to return the correct status upon completion.","cause":"The DbtCloudRunJobOperator fails to recognize the successful completion of a dbt Cloud job, causing the task to be marked as failed in Airflow.","error":"DbtCloudRunJobOperator in Airflow Fails to Detect Successful Job Completion in DBT Cloud"},{"fix":"Update the import statement to 'from airflow.providers.dbt.cloud.operators.dbt_cloud import DbtCloudRunJobOperator' to reflect the current module structure.","cause":"The DbtCloudRunJobOperator has been moved or renamed in recent versions of the apache-airflow-providers-dbt-cloud package.","error":"ImportError: cannot import name 'DbtCloudRunJobOperator' from 'airflow.providers.dbt.cloud.operators.dbt'"},{"fix":"Import the operator using 'from airflow.providers.dbt.cloud.operators.dbt_cloud import DbtCloudRunJobOperator' to access it correctly.","cause":"The DbtCloudRunJobOperator is not directly accessible from the 'operators' module due to changes in the package's structure.","error":"AttributeError: module 'airflow.providers.dbt.cloud.operators' has no attribute 'DbtCloudRunJobOperator'"},{"fix":"Install the package using 'pip install apache-airflow-providers-dbt-cloud' and ensure that Airflow is configured to recognize the provider.","cause":"The apache-airflow-providers-dbt-cloud package is not installed or not properly configured in the Airflow environment.","error":"ModuleNotFoundError: No module named 'airflow.providers.dbt.cloud'"},{"fix":"Provide the 'job_id' parameter when initializing the operator, e.g., 'DbtCloudRunJobOperator(task_id='run_dbt_job', job_id=12345)'.","cause":"The 'job_id' parameter, which specifies the dbt Cloud job to run, is missing when initializing the DbtCloudRunJobOperator.","error":"TypeError: DbtCloudRunJobOperator() missing 1 required positional argument: 'job_id'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"4.8.2","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/apache/airflow","docs":"https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.8.2","changelog":"https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.8.2/changelog.html","pypi":"https://pypi.org/project/apache-airflow-providers-dbt-cloud/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","workflow"],"base_url":null,"auth_type":null,"install_checks":{"last_tested":"2026-05-21","tag":null,"tag_description":null,"installed_version":"4.4.0","pypi_latest":"4.8.2","is_stale":true,"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"apache-airflow-providers-dbt-cloud","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"252.9M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"apache-airflow-providers-dbt-cloud","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"apache-airflow-providers-dbt-cloud","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":28.3,"import_time_s":null,"mem_mb":null,"disk_size":"252M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"apache-airflow-providers-dbt-cloud","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"apache-airflow-providers-dbt-cloud","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"273.6M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"apache-airflow-providers-dbt-cloud","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"apache-airflow-providers-dbt-cloud","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":26.9,"import_time_s":null,"mem_mb":null,"disk_size":"274M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"apache-airflow-providers-dbt-cloud","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"apache-airflow-providers-dbt-cloud","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"263.7M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"apache-airflow-providers-dbt-cloud","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"apache-airflow-providers-dbt-cloud","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":20.6,"import_time_s":null,"mem_mb":null,"disk_size":"265M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"apache-airflow-providers-dbt-cloud","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"apache-airflow-providers-dbt-cloud","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"265.6M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"apache-airflow-providers-dbt-cloud","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"apache-airflow-providers-dbt-cloud","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":21.2,"import_time_s":null,"mem_mb":null,"disk_size":"267M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"apache-airflow-providers-dbt-cloud","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"apache-airflow-providers-dbt-cloud","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"220.5M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"apache-airflow-providers-dbt-cloud","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"apache-airflow-providers-dbt-cloud","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":32.8,"import_time_s":null,"mem_mb":null,"disk_size":"218M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"apache-airflow-providers-dbt-cloud","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]},"_links":{"self":"https://checklist.day/api/registry/apache-airflow-providers-dbt-cloud","v1":"https://checklist.day/v1/registry/apache-airflow-providers-dbt-cloud","v1_install":"https://checklist.day/v1/registry/apache-airflow-providers-dbt-cloud/install","v1_imports":"https://checklist.day/v1/registry/apache-airflow-providers-dbt-cloud/imports","v1_compatibility":"https://checklist.day/v1/registry/apache-airflow-providers-dbt-cloud/compatibility","v1_quickstart":"https://checklist.day/v1/registry/apache-airflow-providers-dbt-cloud/quickstart","docs":"https://checklist.day/docs"}}