数据仓库的建设是不同于面向业务的操作型数据库,它的核心更应该是业务知识。单纯的理论是无聊的,那么我们从一个实例来,那么就已我手边正在放lpl直播的虎牙直播为例。
在数据仓库建立之前,需要数据采集平台提供数据。数据来源往往有两个种类,一个是日志,这个需要你和开发应用方协商你需要的埋点,比如打开虎牙直播的埋点,虎牙直播的首页上各个模块(LOL,王者荣耀。。。)的埋点,日志的解析的话,可以使用spark,flume等工具按照约定的格式导入到数据平台,这时候的表称为埋点表,需要你在后期对埋点表加工处理,提取可用的数据,另一个则是app后端的数据库,例如记录着登陆虎牙app的用户信息的用户表,观众的观看记录表,打赏相关信息的表,一般而言可以使用datax和sqoop对数据进行处理,两者的区别在于,datax更偏向于插件化,使用json的方式配置,sqoop则是借用了mapreduce,这个取决于业务情景。
假设我们已经有了基础数据,要开始建设一个数据仓库了,开发工具使用的是hive。
1.首先我们应该确认数据仓库的主题,模型的建立均要以建立好的主题为准,而不是力图建设一个适合于所有主题的模型。现在业务或者说是产品经理要先考虑,我需要什么数据,
比如消费者在淘宝购买商品,那么对于这次的虎牙直播平台,我希望关注观众在虎牙直播平台的观看情况,当然我们也可以反过来关注,主播在虎牙直播的直播情况,两者可以说紧密相连。在确定了主题,比如现在的观众和直播在虎牙直播观看和直播情况,我们可以建立一个星座模型,共享某部分维度表,也可以只考虑观众的观看情况,使用一个星型模型。为了简便起见,只考虑观众的观看情况。 2.在确定主题之后,我们需要从两个角度考虑这个主题,维度和指标。维度可以理解为一种事物的属性,是某个事件中的客观存在,在观众的观看情况这个主题当中,维度我们可以选择观众,观看的直播间。指标是衡量某个事件的量化属性,比如观看次数,频度,观看时长。维度之间可以相互联系,可以不联系,但是一定要和事件,指标有所联系。维度和指标不是随意定的,而是经过慎重考虑,两者如何联系起来,如何体现主题。
3.在确定了维度和指标后,我们需要考虑,维度和指标也需要根据某些相关性,将数据划分成相对主题的表,基于性能和后续维护来看,而不是考虑成一张大宽表。大概举下例子,以观众这个维度为例,我们可以将观众这个维度划分为基本信息、用户习惯,消费信息等表,比如用户习惯表,我们在这张表可以记录用户的观看癖好,打开LOL直播等模块的次数,登陆时间,时长诸如此类。指标也是如此。
4.在拥有这些表之后,数据仓库也就有了雏形,我们只需要建立一张事实表,去把维度和指标联系起来,这张可以做成一张大宽表,尽可能记录一个观众的观看情况。
上面所述的便是数据仓库的建立的大概思路,细节在开发过程中,需要不断的完善。下面大概聊聊对于数据仓库质量管理的一些理解。
说了这么多,最最重要的,一定要做好规范维护,无论是用前端还是excel,及时更新是必须的。表的作用,设计理念,表字段的取数逻辑,口径的提供人,表结构都要记录在案,时常维护。