TL;DR: How do we know if we introduce a breaking change in our warehouse?
Simple enough, right. We run DBT+BQ+GitLab+QuarterMaster so we have a decent handle on potential breaking changes in our code analytics warehouse development.
But, when it comes to metabase, we’re suddenly helpless kittens.
Great for a Christmas card or a Tinder profile. less so for, you know, professional data people.
I’ll kick off one approach I’m tossing around
In our core repo, include a structure like this
Gitlabt/dbt/models/dataset1/table1.sql Gitlabt/dbt/models/dataset1/table2.sql Gitlab/metabase/models/questions/q1,sql Gitlab/metabase/models/questions/q2,sql Gitlab/metabase/models/dashboards/d1.sql
And in Q1.sql have
select * from ../dataset1/t1
similarly D1.sql has
Union all select ‘q2’ from ../questions/q2
Which is pretty manual, but I don’t see a better approach other than trying to parse the MB object definitions directly.
We could even extend it by having a 1:M