数据仓库系列文章的第五篇,本文关键词:数据仓库;数据仓库ODS层;数据分析
之前在文章《扫盲系列(3):数据仓库架构详解》中,我们详细介绍了数据仓库的架构,接下来介绍数据仓库的数据集存和数据分析功能。
数仓架构图
01、数据集存功能之数据仓库ODS层
数据仓库ODS层(Operational Data Store)是数据仓库架构中的一个重要层次,主要用于保存从业务应用系统中抽取的数据,保证数据与业务系统保持一致性,并为数据仓库提供历史数据查询和数据更新功能。
数据仓库ODS层是基于业务系统的源数据构建的,与源数据保持一致,可以增加字段用来进行数据管理。由于数据仓库ODS层需要保留历史数据,因此一般采用只读的方式进行存储,同时提供业务系统查询使用。
业务系统对历史数据完成修改后,通常会将修改后的数据追加回数据仓库ODS层中,以保持数据仓库的实时性。为此,可以在数据仓库ODS层中将update_type字段更新为UPDATE,用来标识新插入的数据记录或已更新的记录。
update_type字段更新为UPDATE示例
在离线数据仓库中,业务数据可以定期通过ETL流程导入到数据仓库ODS层中。为了保证数据的准确性和完整性,可以采用全量导入或增量导入两种方式。
全量导入:用于第一次数据装载,增量导入则用于之后的数据更新。
增量导入:用于数据非第一次导入,只需要导入新增、更改的数据。在增量导入时,一般采用外连接&全覆盖方式,以保持数据与业务系统的一致性,并避免数据冗余。
那大家又要问了,市面上的ETL工具那么多,到底哪个最好用呢?
这边我推荐一下帆软公司的商业软件FineDataLink,它是“实时数据同步”和“离线数据处理”于一体的数据集成平台。简单来说,就是一个ETL工具,支持ETL和ELT两种方式进行数据处理,可以从多个不同数据源中提取数据,进行清洗、整合和转换。
软件优点是可对接数据库、上层通用协议、消息队列、文件、平台系统、应用等类型的数据源,支持数据服务的API接口发布,有统一的运维平台,是一款本土化自研数据集成产品。 除了kettle的定时数据处理场景,还能对接多种数据库,基于CDC、logminer、binlog等进行数据的实时同步。
用的是BS端,方便处理数据,可看到各个任务的运行状态,当任务出现问题时,还可以进行统一的消息通知,邮件、企业微信等。试用了下,搭配他们的报表软件FR+BI平台,可以很好地将数据进行集成、处理、存储、分析试用和分享。在官网了解了下定价,还算ok,属于是我们这种中小企业也能承受的价格。缺陷是刚上线,解决方案数量较少
02、数据分析功能之数据仓库DWD、DWS、ADS层
DWD、DWS和ADS层是数据仓库架构中的三个重要层次,分别用于数据清洗、数据集成和数据分析。
1、DWD层
DWD层(Data Warehouse and Design)主要对数据仓库ODS层的数据进行清洗、去重、标准化和维度退化等处理,使之符合分析运算的需要。
清洗主要是对数据进行去重、格式化、拆分、整合、纠错等工作,以消除数据中的异常和冗余。
标准化是将数据转换成统一的数据格式和命名约定,以方便后续的数据分析。
维度建模(例如对时间、分类、地域等进行维度退化)则是对数据中的维度信息进行分解和重组,以方便后续的报表统计和数据分析。
DWD层的数据仍然满足3NF模型(Third Normal Form),也就是第三范式,这意味着数据存储的结构是一个严格的关系模型,具备着较高的数据完整性和准确性。同时,DWD层的数据也能为数据仓库中的分析运算作好充分准备。
数仓工作示例
2、DWS层
DWS层(Data Warehouse and Store)主要是对DWD层的数据进行计算、汇总和聚合,生成宽表(也称为事实表),以便于后续的数据分析和决策支持。
DWS层存储的数据模型非3NF模型,而是注重数据聚合和处理性能更优的数仓模型,例如维度模型(Dimensional Model)。
维度模型是一种以满足各种查询需求为目的进行设计的模型,主要包括星型模型、雪花模型、星座模型等多种形式。
DWS层的主要特点是存储数据中的事实数据和维度数据,支持较大的数据集聚和各种复杂的查询和聚合操作。通过DWS层的数据存储和处理,提高了数据仓库的数据分析效率和决策支持功能。
数仓DWS层工作示例
3、ADS层
ADS层(Analytic Data Store)主要是存储数据仓库中的分析结果和汇总数据,为不同业务场景提供分析接口,减轻数据仓库的负担。
ADS层存储的数据主要是针对特定的业务问题进行计算、分析和汇总的数据结果,而不是原始数据或宽表。存储的数据结果可以是预测模型的输出结果,或各种业务指标的计算结果。这些数据结果可供业务系统使用,例如线上数据处理系统、报表系统等。
ADS层的主要目的是为不同的应用场景提供分析接口,而不是直接提供原始数据,这可以避免直接查询数据仓库的开销和负担。通过ADS层的建立,数据仓库可以提供更加灵活和高效的分析查询接口,提高数据仓库的使用效率和业务可用性。
数仓ADS层工作示例