from cosmos import DbtDag, ProjectConfig, ProfileConfig, ExecutionConfig
from cosmos.profiles import GoogleCloudServiceAccountFileProfileMapping
import os
from pathlib import Path
from pendulum import datetime
BIGQUERY_CONN_ID = os.getenv("BIGQUERY_CONN_ID", "bigquery_default")
DBT_PROJECT_NAME = os.getenv("DBT_PROJECT_NAME", "marketing_metrics")
DBT_PROJECT_PATH = (
(Path(__file__).parents[2] / "dbt" / DBT_PROJECT_NAME).resolve().as_posix()
)
DBT_EXECUTABLE_PATH = f"{os.getenv('AIRFLOW_HOME')}/dbt_venv_bigquery/bin/dbt"
_project_config = ProjectConfig(
dbt_project_path=DBT_PROJECT_PATH,
)
_profile_config = ProfileConfig(
profile_name="default",
target_name="dev",
profile_mapping=GoogleCloudServiceAccountFileProfileMapping(
conn_id=BIGQUERY_CONN_ID
),
)
_execution_config = ExecutionConfig(
dbt_executable_path=DBT_EXECUTABLE_PATH,
)
_default_args = {
"retries": 2,
}
marketing_metrics = DbtDag(
dag_id="marketing_metrics",
project_config=_project_config,
profile_config=_profile_config,
execution_config=_execution_config,
start_date=datetime(2025, 8, 23),
schedule="@daily",
default_args=_default_args,
tags=["marketing", "bigquery", "cosmos"],
)