# 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'" "flagged_booking_state": "'FLAGGED'" # 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'"