DAG Generators
Within dbt-coves generate airflow-dags
, DAG Generators are responsible of outputting Python code for Airflow Task Groups from other services.
We currently provide Airflow and Fivetran ones, with a dbt variant of each.
AirbyteGenerator and AirbyteDbtGenerator
These generators return Airbyte Sync tasks based on Airbyte Connection IDs and dbt sources respectively.
AirbyteGenerator params:
host
: Airbyte's service hostname, typicallyenvSlug-airbyte-airbyte-service-svc
port
connection_ids
: list of Airbyte connectionsairbyte_conn_id
: ID of Airbyte's Airflow connection
[...]
nodes:
run_airbyte:
generator: AirbyteGenerator
type: task_group
host: env123-airbyte-airbyte-server-svc
port: 8000
connection_ids:
- 1234-5678-9101-2345
- 0987-6543-2109-8765
airbyte_conn_id: airbyte_in_airflow
AirbyteDbtGenerator:
AirbyteDbtGenerator will match your dbt sources against your Airbyte connections, and create a Sync task for each of them. It's behavior is similar to AirbyteGenerator, though Airbyte connections are "discovered" instead of hard-coded.
host
port
airbyte_conn_id
dbt_project_path
: optional path to dbt project (it's auto-discovered)run_dbt_deps
: whether to rundbt deps
before obtaining sources (defaults to False)run_dbt_compile
: whether to rundbt compile
before obtaining sources (defaults to False)dbt_list_args
: args to be passed todbt ls
[...]
nodes:
extract_and_load_airbyte:
generator: AirbyteDbtGenerator
type: task_group
host: env123-airbyte-airbyte-server-svc
port: 8000
airbyte_conn_id: airbyte_in_airflow
dbt_project_path: /config/workspace/transform
run_dbt_deps: true
run_dbt_compile: true
dbt_list_args: "--select tag:daily_run_airbyte"
FivetranGenerator and FivetranDbtGenerator
These generators return Fivetran Sync tasks based on Fivetran Connection IDs and dbt sources respectively.
They behave the exact same as Airbyte ones, the only difference being the necessity of Fivetran's API Key and Secret
FivetranGenerator params:
api_key
:api_secret
:connection_ids
: list of Fivetran connectionsfivetran_conn_id
: ID of Fivetran's Airflow connectionwait_for_completion
: whether to create an extra sensor-task that polls the sync-task for completion
[...]
nodes:
run_fivetran:
generator: FivetranGenerator
type: task_group
api_key: my_api_key
api_secret: my_api_secret
connection_ids:
- two_word
- fivetran_ids
fivetran_conn_id: fivetran_in_airflow
wait_for_completion: true
FivetranDbtGenerator params:
host
port
fivetran_conn_id
wait_for_completion
dbt_project_path
run_dbt_deps
run_dbt_compile
dbt_list_args
[...]
nodes:
extract_and_load_fivetran:
generator: FivetranDbtGenerator
type: task_group
api_key: my_api_key
api_secret: my_api_secret
fivetran_conn_id: fivetran_in_airflow
wait_for_completion: true
dbt_project_path: /config/workspace/transform
run_dbt_deps: true
run_dbt_compile: true
dbt_list_args: "--select tag:daily_run_fivetran"