Hello cglowe ,
A pleasure to e-meet you, I'm Benji from Paldi Solutions- a gold-certified Sisense partner.
One important thing to know is that the Sisense query engine looks for the shortest paths when querying the ElastiCube.
I haven't looked at your data model but at the links below you can find some information on how to solve these kinds of issues:
https://support.sisense.com/kb/en/article/key-table-store-data-relationships-between-primary-key-values
https://support.sisense.com/kb/en/article/formulas-creating-random-paths-between-dimensions
https://support.sisense.com/kb/en/article/not-all-dimensions-relate-to-all-facts
Feel free to reach out of you have further questions, we're always happy to help (:
Paldi Solutions - Number #1 Sisense Plugins Developer