HI!
Im a software engineer working on our dbt-based data platform at PointFive, a startup that builds a finOps platform, and i have been trying to set-up elementary for the last day or so. So far it looks great!
We run customer data in our dbt pipeline with the end goal of creating dashboards that allow the customer to visualize his cloud environment and cost. Our data platform has a fairly unique architecture - we keep each customer in it's own schema. we trigger dbt automatically right after collecting customer data from his cloud, and utilize dbt vars to build into the customers specific schema.
This has many advantages for us: better performance for smaller customers (without complex clustering), simplified security (a customer can see his own schema and nothing else), better integration with our existing systems. That said, this approach limits our use of the elementary system - in which, each model can only exist in a single schema at a time.
My naive, initial solution for this is to have an elementary schema for each customer (using the same logic we already have for choosing the correct customer schema). This will allow me to have an elementary dashboard for each customer, that I can expose through some simple server. Sounds nice, but:
1. this wont work if I ever want to switch to elementary cloud
2. this does not allow me access to cross-customer statistics, and therefore will require another dashboard system to compensate (most likely grafana)
What's your take on this? Is the schema-per-customer architecture as nice as it seems, or is it a very tempting anti-pattern? Is there a way to support this use-case in elementary that I'm missing?