2张事实表怎么通过中间表连接

0
事实表A有row_id,事实表B也有row_id,两者是多对多的关系,对应关系在中间表C中(A_id,B_id),要实现报表中能通过点击表A中的字段显示表B中对应的数据,请问在物理层和逻辑层如何连呢?
已邀请:
1

百分百 - BIEE独立顾问、零售行业 2015-11-10 回答

你这个问题说简单也简单。说复杂也复杂。
如果理清楚关系后,再相应的修改就会很简单。
我们现实中的情况一般一个主要描述的事物,都会加许多限定词。例如一个很帅的男人。
那么人就是事物,也就是 我们说的事实。男就是对人的限定,也就是维表,很帅也可以看做是维度。
 
那么回到一个比较好理解的实例。A部门2015.11销售100w。那么事实是100w,A部门就是维表数据,2015.11就是维表的数据。他们的关系的一对一的。在维表是1,在事实表是N。因为事实表可能存在N条类似记录,比如说A部门2015.10销售200w之类的数据。
再延伸,又有A部门2015.11月销售B产品50w个。那么事实就是50w,对应的维表就是A部门,2015.11月,B产品。
 
在上面的实例中,有2个事实,100w的销售额和50w的销售数量。共同的维度就是A部门和2015.11这个时间。
在物理层就是各自设置关联关系,然后在逻辑层类似,在前端展示的时候拖出A部门和2015.11,然后再拖出销售额和销售数量就可以了。
 
它的原理类似于拼结果集,先计算出A部门2015.11的销售额,再计算出A部门2015.11的销售数量。然后拿这2个结果集去匹配数据展示。
 
那么换到你的情况,你说的事实表的row_id不知道能否作为一个维度ID去匹配。因为不知道你的C表是否和A\B两个表存在1:N的关系。如果是N:N,那么需要转换成上述类似的1:N的对应关系才行。
 
当然你可以在ETL的过程中把A\B两者根据关系C合为1个表,然后在前端展示又是另外一种做法。
0

Goldec 2015-11-17 回答

感谢百分百的回答!

要回复问题请先登录注册