文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

报表自动化就是连接数据库?错,它打开了数据仓库的大门

2024-12-24 15:36

关注

我们主要讲报表自动化,但在这之前我们需要有“大量的数据”支持,多次提到“大量的数据”,这些数据就是指我们各种产品在使用、运行过程中存到数据库的数据,当然也包括日志中的数据,这些数据在我们产品运行过程中生成且同时为产品运行提供服务。 


FineReport做的报表

如果是数据库中的数据,那么还可能出现数据分别存储在各种库、表、文件中,他们以最初业务功能的需要进行着“合理”或者早已被多人“吐糟”的方式分布着。

那么,我们报表自动化的实践就是先要让一个服务连接上所有的产品数据库,然后构建出所有表的 entity 用我们熟悉的 JAVA、PHP 等语言完成么?实际上并不是这样的,在这之前,我们首先要先建立“数据仓库”。

数据仓库的设计

数据仓库的设计方式有很多种,这里主要讲一种设计方式 DB-ODS-DW-DM 分层设计,这里引入了四个单词,由他们构成的数据流如下 

图中箭头表示数据的流向,可以看到我们的数据大致是这样流动的:

DB(Data Base)

这里实际上是指我们的产品 / 业务系统的数据层,这里要用层的概念了,他们可能由多个库构成,这个数据层提供了业务正常运行的支持,如果要做数据仓库,DB 数据层还需要提供,在一定时间里被 ETL 工具批量拉取数据到 ODS 的支持。

注意这里数据拷贝不是人工拷贝,需要使用 ETL(Extract-Transform-Load)工具,ETL 指数据的抽取、转换、加载,可以通过 ETL 工具配置数据从源到目标的操作行为并定时触发,这个后文有所介绍。

OBS(Operational Data Store)

ODS(Operational Data Store),操作性数据,是作为数据库 DB 到数据仓库 DW 的一个过渡层 / 中间层。

实际上在做报表自动化时并不是直接从产品库获取数据的,是需要先构建数据仓库的,而数据仓库的第一步就是先将所有的产品库的各种数据都 copy 到一个“中间层 OBS”,后续所有的数据仓库都通过“中间层 OBS”获取数据,这样的操作有如下好处:

这一层是个大系统层,它的主要作用是将多个源库内容全部同步到本库中,ETL 工具会四处拉取数据到这里,考虑到单一职责原则,这一层数据结构一般就不会改变了,往往和源库的各个表的结构保持一致。

同样的这一层既然是为了汇总数据,那么数据的写入只能由 ETL 工具进行,这时候就遇到了源数据库的内容发生了变化怎么办?每次拷贝来的数据有重复如何处理?

DW(Data Warehouse)

这里讲的是数据仓库的数据仓库层。。。。

数据仓库,说到了仓库我们可以想象一下现实中的各种仓库的样子,其实数据仓库也是类似的。

前面 ODS 无条件的接受了所有的信息,也许他唯一能做的就是通过合理的 table 命名来识别出来每个表是从哪个产品库来的数据了,简直是一个超级大的混乱空间,而仓库主要做的就是“规整”。

数据仓库的建模(“整理”)方法有多种,范式建模法(Third Normal Form,3NF)、维度建模法(Dimensional Modeling)、实体建模法(Entity Modeling)…… 

通过各种方式的整理最终的目标是:

注意数据仓库只是仓库,存储了各种东西,它很整洁,但是它并没有完全的挖掘出存在其内数据的价值,挖掘的步骤就需要下一层了。

DM(Data Mart)

数据集市(Data Mart) ,也叫数据市场,数据集市就是满足特定的部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。

首先解释一下前面的图里为什么有那么多的 DM 数据库:DM 实际上可以根据业务、部门进行分割了,不同部门 / 业务 / 产品,可以有自己独有的数据库。

其次说说这里面装的是什么:

那什么是指标?同比增长率、月度销售总额、转换率、平均利润率、日点击总数……具体的后面进行更详细介绍 

实际上数据仓库不只是简单的几层,比如上图我“大概”、描述(“假想”)了一个数据仓库的更复杂一些的模型。

分层的目的,无外乎还是希望各司其职,收集、整理、分析,我们的输入就是各个数据源拉过来的信息,经过 OBS 囫囵吞枣、DW 建模归纳,最终我们的 DM 层直接对外提供更有价值数据。

本文简单的介绍了一种数据仓库的分层设计,主要提及了 OBS 层、DW 层、DM 层,这里过多的说了概念,后面开始抛出细节。比如后面让我们来聊聊 DW 层建模方法之维度建模。

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯