Goal: Allow multiple analysts to collaborate on dbt models, with teams as the logical permission boundary.
Our dbt-jobs repository works as a single dbt project, but it can be split in many ways, using folders, subfolders, tags, schemas, etc.
dbt by default recognizes all the models in the project, and understand in what order they need to be run. If there are dependencies between models, it will know how to run them in the right order, but it also allow many ways of running specific models and their dependencies.
To allow for good collaboration, we have to define at least:
- Folder structure for teams, projects and shared models
- Tags defined for each model and/or folder, which might allow better selections when running dbt
- Datalake schemas used for each team, project or folders.
Acceptance criteria:
- Analysts within a single team can co-own dbt models.
- Access control rules allow them to collaborate on their team’s model configurations and create model dependencies.
- Access control rules allow dbt to read and write all of the team's materialized models.
- Analysts across teams can safely expose and share dbt models.
- Default dbt configuration segregates the models of different teams (e.g., using different schemas).
- Default dbt configuration allows reading, but disallows writing, of models maintained by a different team.
- Analysts can update and run dbt configurations without blocking on DPE for approval.