dbt 模型建置與部署
Data6 個節點 · 6 條連接data
視覺化
ex-dbt-transform.osop.yaml
# dbt Transformation Workflow
# Install deps, run models, test, generate and deploy documentation.
osop_version: "2.0"
id: dbt-transform
name: "dbt 模型建置與部署"
nodes:
- id: dbt_deps
type: data
purpose: Install dbt package dependencies
runtime:
engine: dbt
config:
command: deps
project_dir: /app/dbt
profiles_dir: /app/dbt/profiles
outputs:
- deps_status
- id: dbt_run
type: data
purpose: Run all dbt models to build tables and views
runtime:
engine: dbt
config:
command: run
project_dir: /app/dbt
target: production
full_refresh: false
inputs:
- deps_status
outputs:
- run_results
timeout_sec: 600
retry_policy:
max_retries: 1
backoff_sec: 30
- id: dbt_test
type: data
purpose: Run dbt tests to validate data quality and integrity
runtime:
engine: dbt
config:
command: test
project_dir: /app/dbt
target: production
inputs:
- run_results
outputs:
- test_results
explain: "Runs schema tests (not_null, unique, relationships) and custom data tests."
- id: generate_docs
type: cli
purpose: Generate dbt documentation site
runtime:
command: "dbt docs generate --project-dir /app/dbt --target production"
inputs:
- test_results
outputs:
- docs_manifest
- id: deploy_docs
type: cli
purpose: Deploy generated docs to internal static hosting
runtime:
command: "aws s3 sync /app/dbt/target s3://dbt-docs-bucket/latest --delete"
inputs:
- docs_manifest
outputs:
- deploy_status
- id: notify_team
type: system
purpose: Send Slack notification with run summary and doc link
runtime:
tool: slack-webhook
inputs:
- run_results
- test_results
- deploy_status
outputs:
- notification_status
edges:
- from: dbt_deps
to: dbt_run
mode: sequential
- from: dbt_run
to: dbt_test
mode: sequential
- from: dbt_test
to: generate_docs
mode: conditional
condition: "test_results.failures == 0"
explain: "Only generate docs if all tests pass."
- from: generate_docs
to: deploy_docs
mode: sequential
- from: deploy_docs
to: notify_team
mode: sequential
- from: dbt_test
to: notify_team
mode: error
condition: "test_results.failures > 0"
explain: "Alert the team immediately on test failures."