Don’t be afraid of redundancy. As developers and database developers we try to reuse components and objects as much as possible. We try not to create two functions that do the same thing, and we try to model relational OLTP databases so that every data element is defined just once. Let go of this objective.
A data warehouse serves individual purposes, and everyone’s purpose. To make this happen with a non-redundant streamlined data model is very difficult. Data that needs to be measured transactionally may also need to be aggregated, and it may need point-in-time reporting capabilities. This could mean you store the same data three different ways. And that’s ok.