DBT Macro is Bad for Business Logic

DBT Macro is Bad for Business Logic

Macro is good for technical logic (e.g. format, SCD2 from and to dates), but is bad for business logic:

  • invisible in data lineage
  • macro cannot be unit tested
  • every other re-use in model needs a redundant unit test
  • technically complex for business user to work on

For business logic re-use, apply a design pattern that puts logic in a base upstream model, instead of macro. Other ideas:

  • validation in data test (dbt_utils.expression_is_true)
  • easy business involvement
  • AI can safely work in downstream models without touching business logic
  • wide view for business logic from multiple models
  • unit test for edge cases

Last modified on 2026-04-19