如果请求的报告需要有关相同维度(和相同粒度)的汇总信息,但基础数据存储在单独的事实表中,那么什么是数据仓库设计的好方法?
例如,当工资和费用记录在不同的事实表中时,该报告显示每个雇员每年支付的工资总额和支出总额。或一份报告,其中列出了公司销售的每个SKU的每月总销售额和每月收到的库存,其中销售来自一个事实表而收入来自另一个事实表。
天真地解决这个问题似乎很容易:只需并行查询和汇总两个事实表,然后在数据仓库或客户端应用程序中将汇总结果拼接在一起。
但是我也对其他考虑该问题的方式感兴趣。别人如何解决呢?我想知道有关数据仓库模式和设计的问题,以及使该设计对客户端工具友好以生成如上例所示的报告的想法。
另外,这种“三维三明治”用例在规范数据仓库术语中是否有名称?如果是,那将使通过Google进行研究变得更加容易。
我们正在使用SQL Server,但目前我提出的问题希望与平台无关。
最佳答案
我今天了解到,该技术称为Drilling Across:
钻取只是意味着针对两个或多个单独查询
更多事实表,其中每个查询的行标题包括
相同的一致属性。两个查询的答案集
通过在公共目录上执行排序合并操作来对齐
维度属性行标题。 BI工具供应商参考此
各种名称的功能,包括针脚和多遍查询。
听起来像上面的幼稚解决方案(并行查询多个事实表并将结果拼接在一起)也是建议的解决方案。
更多信息:
Drilling Across-Kimball概述文章
http://blog.oaktonsoftware.com/2011/12/three-ways-to-drill-across.html-跨层钻取的SQL实现建议
非常感谢@MarekGrzenkowicz为我指出正确的方向,以找到自己的答案!如果有人在寻找相同的东西,我在这里回答。