37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from pathlib import Path
|
||
|
||
from dagster import Definitions
|
||
from dagster_dbt import DbtCliResource, DbtProject, dbt_assets
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# dbt project
|
||
# ---------------------------------------------------------------------------
|
||
|
||
DBT_PROJECT_DIR = Path(__file__).parent.parent / "dbt"
|
||
|
||
dbt_project = DbtProject(project_dir=str(DBT_PROJECT_DIR))
|
||
|
||
# When running locally outside Docker, generate/refresh the manifest automatically.
|
||
dbt_project.prepare_if_dev()
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# dbt assets – every dbt model/test/snapshot becomes a Dagster asset
|
||
# ---------------------------------------------------------------------------
|
||
|
||
@dbt_assets(manifest=dbt_project.manifest_path)
|
||
def dbt_project_assets(context, dbt: DbtCliResource):
|
||
yield from dbt.cli(["build"], context=context).stream()
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Definitions
|
||
# ---------------------------------------------------------------------------
|
||
|
||
defs = Definitions(
|
||
assets=[dbt_project_assets],
|
||
resources={
|
||
"dbt": DbtCliResource(project_dir=str(DBT_PROJECT_DIR)),
|
||
},
|
||
)
|