data-dwh-dbt-project/dbt_project.yml

85 lines
3 KiB
YAML

# Name your project! Project names should contain only lowercase characters
# and underscores. A good package name should reflect your organization's
# name or the intended use of these models
name: "dwh_dbt"
version: "1.0.0"
config-version: 2
# This setting configures which "profile" dbt uses for this project.
profile: "dwh_dbt"
# These configurations specify where dbt should look for different types of files.
# The `model-paths` config, for example, states that models in this project can be
# found in the "models/" directory. You probably won't need to change these!
model-paths: ["models"]
analysis-paths: ["analyses"]
test-paths: ["tests"]
seed-paths: ["seeds"]
macro-paths: ["macros"]
snapshot-paths: ["snapshots"]
clean-targets: # directories to be removed by `dbt clean`
- "target"
- "dbt_packages"
# Configuring models
# Full documentation: https://docs.getdbt.com/docs/configuring-models
# In this example config, we tell dbt to build all models in the example/
# directory as views. These settings can be overridden in the individual model
# files using the `{{ config(...) }}` macro.
models:
+unlogged: true
# ^ This makes all the tables created by dbt be unlogged. This is a Postgres
# specific setting that we activate for performance. It has deep implications
# on how Postgres handles tables and is typically considered crazy risky, but
# it's very fitting for our needs. You can read more here:
# https://www.crunchydata.com/blog/postgresl-unlogged-tables
dwh_dbt:
+post-hook:
sql: "VACUUM ANALYZE {{ this }}"
transaction: false
# ^ This makes dbt run a VACUUM ANALYZE on the models after building each.
# It's pointless for views, but it doesn't matter because Postgres fails
# silently withour raising an unhandled exception.
staging:
+materialized: table
+schema: staging
intermediate:
+materialized: view
+schema: intermediate
reporting:
+materialized: table
+schema: reporting
seeds:
dwh_dbt:
schema: staging
vars:
"dbt_date:time_zone": "Europe/London"
# A general cutoff date for relevancy. Many models assume this to be the point
# in time after which they should work.
"start_date": "'2020-01-01'"
# KPIs Start Date. This is the date from which we start calculating KPIs.
"kpis_start_date": "'2022-04-01'"
# New Dash First Invoicing Date. This is the first date considered for New Dash invoicing.
"new_dash_first_invoicing_date": "'2024-12-31'"
# A distant future date to use as a default when cutoff values are missing.
"end_of_time": "'2050-12-31'"
# Booking state variables
# States should be strings in capital letters. Models need to force an upper()
"cancelled_booking_state": "'CANCELLED'"
"approved_booking_state": "'APPROVED'"
# Payment state variables
# States should be strings in capital letters. Models need to force an upper()
"paid_payment_state": "'PAID'"
# Protection service state variables
# States should be strings in capital letters. Models need to force an upper()
"default_service": "'BASIC SCREENING'"