例如,一份报告显示每个员工每年报告的工资总额和报告的总费用,当时工资和费用记录在不同的事实表中.或者一份报告,列出公司销售的每个SKU每月的总销售额和每月收到的库存,当销售来自一个事实表并且接收来自另一个.
天真地解决这个问题看起来很简单:只需并行查询和聚合两个事实表,然后将聚合结果拼接在数据仓库或客户端应用程序中.
但我也有兴趣考虑其他方法来思考这个问题.别人怎么解决了?我想知道数据仓库架构和设计,以及使客户端工具设计友好,以构建报告,如上面的例子.
此外,这个“维度三明治”用例是否在规范数据仓库术语中有名称?如果是,那么将更容易通过谷歌进行研究.
我们正在使用sql Server,但我现在提出的问题有望与平台无关.
解决方法
Drilling across simply means making separate queries against two or
more fact tables where the row headers of each query consist of
identical conformed attributes. The answer sets from the two queries
are aligned by performing a sort-merge operation on the common
dimension attribute row headers. BI tool vendors refer to this
functionality by varIoUs names,including stitch and multipass query.
听起来像上面的天真解决方案(并行查询多个事实表并将结果拼接在一起)也是建议的解决方案.
更多信息:
> Drilling Across – Kimball概述文章
> http://blog.oaktonsoftware.com/2011/12/three-ways-to-drill-across.html – 用于钻取的sql实现建议
非常感谢@MarekGrzenkowicz指出我正确的方向找到我自己的答案!我在这里回答它,以防其他人正在寻找同样的事情.