维表与事实表

BI平台分为事实表、维表,然后两种表聚合成一个宽表。(注意这里取的BI平台是Davinci:https://edp963.github.io/davinci/)
 
其维表、事实表的关系图如下:

 

 
 
一个维表会对应多个事实表,而维表和事实表所有关联起来就形成一个宽表,其关系如同mysql中的外键索引,如A表中有B_id,A作为维表,B作为事实表,A(维表)可通过B_id来关联B(事实表),然后关联汇总生成的SQL就是宽表。
 
BI系统中可根据事实表和维度表的关系,应遵循如下两种模型的规范:星型模型和雪花型模型。
  • 星型表:反范式,数据冗余,查询效率高。
  • 遵循范式:数据不冗余,但引用层级深,维护复杂,查询效率较低
下面举一个星型模型(体验课上课预约记录)的例子来说明如下:
 
 
 
上图以user_table_course_schedule的部分字段(user_id、table_course_schedule_id、teacher_id、gmt_create)来作为维度,并分别关联到了userinfo、tablec_course_schedule、teacherinfo这三张事实表,然后形成一张宽表。
 
以上面星型模型的例子,对其进行修改,举一个雪花模型例子来说明如下:
 
 
上面雪花模型中,学生信息事实表的orderId还继续关联了下一个层级体验课记录表,体验课报名记录表还可能会继续往下关联,对于复杂的系统而言,一般会采用雪花模型,关键层级会较多,而星型模型的关联过于单一,层级不够深,无法支持这种操作。
 
理解了上面两种模型的设计,接下来需要确定维度和指标的用法:
维度与指标的规范:
  • 维度:维度用于关联事实表,也可用于做冗余显示(如gmt_create),用于数据检索,所以对于维度设计时,可将其进行分类(看业务扩展需要):
    • 时间维:将时间进行维度细分,如gmt_create划分为年维度、月维度、日维度。
    • 地域维:将地域划分为省维度、市维度、区维度。反例:把省市区 只作为一个维度,而没有拆分,后面进行筛选就不方便。
    •  其他维度按业务进行扩招
  • 指标:用于统计(如总和、平均数、最大值、最小值)、排序等。
 
  • 12
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值