数仓及其维度(分层)建模(ODS DWD DWS DWT ADS)

这篇具有很好参考价值的文章主要介绍了数仓及其维度(分层)建模(ODS DWD DWS DWT ADS)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 数仓及其维度

1. 什么是数仓?

        数据仓库,简称数仓,( Data Warehouse )从逻辑上理解,数据库和数仓没有区别,都是通过数据库软件实现存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大。

数仓主要是为企业制定决策,提供数据支持的。当业务简单,可以用数据库来存储,分析,制表。但当数据量几何式增长,需要跨机器整合时,数仓就是非常必要的了。

2. 数仓的特点

(1)集成性

        数仓中存储的数据来源于多个数据源,原始数据在不同数据源中的存储方式各不相同。要整合成为最终的数据集合,需要从数据源经过一系列抽取、清洗、转换的过程。

(2)稳定性

        数仓中保存的数据是历史记录,不允许被修改。用户只能通过分析工具进行查询和分析。

(3)动态性

        数仓的数据会随时间变化而定期更新,这里的定期更新不是指修改数据,一般是将业务系统发生变化的数据定期同步到数仓,和稳定性不冲突。不可更新是针对应用而言,即用户分析处理时不更新数据

(4)主题性

        传统数据库对应的业务不同,数仓需要根据需求,将不同数据源的数据进行整合,即数据一般都围绕某一业务主题进行建模。例如“贷款”主题、“存款”主题等。

(5)扩展性

        之所以有的大型数据仓库系统架构设计复杂,是因为考虑到了未来3-5年的扩展性,这样的话,未来不用太快花钱去重建数据仓库系统,就能很稳定运行。主要体现在数据建模的合理性,数据仓库方案中多出一些中间层,使海量数据流有足够的缓冲,不至于数据量大很多,就运行不起来了。

3. 数仓的数据哪里来?

(1)业务数据

        就是各行业在处理事务过程中产生的数据。比如用户在电商网站中登录、下单、支付等过程中,需要和网站后台数据库进行增删改查交互,产生的数据就是业务数据业务数据通常存储在MySQL、Oracle等数据库中。

(2)用户行为数据

        用户在使用产品过程中,通过埋点收集与客户端产品交互过程中产生的数据,并发往日志服务器进行保存。比如页面浏览、点击、停留、评论、点赞、收藏等。用户行为数据通常存储在日志文件中。

(3)爬虫数据

        通常事通过技术手段获取其他公司网站的数据。不建议同学们这样去做。

4. 什么是数仓的维度,为何要分层(分层的作用?)

        一个好的维度,决定着数仓的生死。数仓分层有利于:

(1)减少重复开发,在数据开发的过程中可以产生中间层,将公共逻辑下沉,减少重复计算;

(2)清晰数据结构,每个分层分工明确,方便开发人员理解;

(3)方便定位问题,通过分层了解数据血缘关系,在出问题的时候通过回溯定位问题;

(4)简单化复杂问题,和分治法思想类似,分而治之,将复杂的问题简单化,还能解耦

5. 数仓的维度建模和关系型建模的区别?

        数仓的关系型建模严格遵守三范式理论(第一范式:属性不可分割,第二范式:不能有部分函数型依赖,第三范式:不能有传递性函数依赖),数据冗余度低,但在大数据的场景下,查询效率低。

        维度模型相对清晰、简洁。以数据分析作为出发点,不遵循三范式,故数据存在一定的冗余。维度模型面向业务,将业务用事实表和维度表呈现出来,表结构简单,故查询简单,查询效率较高。

二. 典型维度建模

1. 一般分几层?

        不同的企业不同的业务类型服务不同的用户,没有定论说分3、4层还是5层,只有最合适的分层。一般的数仓包含:离线数仓、准实时、实时数仓;我们这里是采用T+1离线数仓,分为五层架构。

数仓及其维度(分层)建模(ODS DWD DWS DWT ADS)

2. 典型分层及其大致介绍(简单理解和总结)

1.ODS(Operation Data Store)

        原始数据,此层保存最原始数据,并且备份,备份时可以压缩。

2.DWD(Data Warehouse Detail)

        数据清洗,脱敏,维度退化。

3.DWS(Data Warehouse Summary)

        DWS层就是关于各个主题的加工和使用,是宽表聚合值。

4.DWT(Data Warehouse Topic)

        和DWS同,不过DWS层单位是日,而DWT是对截止到当日、或者近7日、近30日的汇总。

5.ADS(Application Data Store)

        ADS层是面向业务定制的应用数据层。

三. 每层具体介绍

1.ODS

ODS主要完成:

(1)保持数据原貌不做任何修改,保留历史数据,储存起到备份数据作用;

(2)数据一般采用lzo、Snappy、parquet等压缩格式;

(3)创建分区表,防止后续的全表扫描,减少集群资源访问数仓的压力,一般按天存储在数仓中。

数据来源:

(1)前端埋点日志信息

        由Kafka和flume采集到HDFS上;前端埋点日志以JSON格式形式存在,又分为两部分:

启动日志和事件日志。

(2)业务系统数据

        由mysql数据库数据通过sqoop这种数据同步工具,采集到HDFS上;

2.DWD

        DWD层是对事实表的处理,代表的是业务的最小粒度层。任何数据的记录都可以从这一层获取,为后续的DWS和DWT层做准备。还有对日志行为进行解析,以及对业务数据采用维度模型的方式重新建模(维度退化)。

DWD主要完成:

1. 数据清洗
(1)空值去除
(2)过滤核心字段无意义的数据,比如订单表中订单 id 为 null,支付表中支付 id 为空
(3)将用户行为宽表和业务表进行数据一致性处理

        清洗的手段包括Sql、mr、rdd、kettle、Python等等。清洗掉数据不能太多也不能很少。合理范围:1 万条数据清洗掉 1 条。

2. 脱敏
        对手机号、身份证号等敏感数据脱敏

3. 维度退化
        对业务数据传过来的表进行维度退化和降维。(商品一级二级三级、省市县、年月日)

4. 压缩

        LZO,列式存储 parquet

3.DWS

        DWS层就是关于各个主题的加工和使用,这层是宽表聚合值,是各个事实表的聚合值。这里做轻度的汇总会让以后的计算更加的高效,如:统计各个主题对象计算7天、30天、90天的行为, 应对特殊需求(例如,购买行为,统计商品复购率)会快很多不必走ODS层反复拿数据做加工。     

        这层会把每个用户单日的行为聚合起来组成一张多列宽表,以便之后关联用户维度信息后进行,不同角度的统计分析。

        涉及的主题包括:访客主题、用户主题、商品主题、优惠券主题、活动主题、地区主题等,更详细可参考【6】.

      

4.DWT

        这层涉及的主题和DWS层一样包括:访客主题、用户主题、商品主题、优惠券主题、活动主题、地区主题等。只不过DWS层的粒度是对当日用户汇总信息,而DWT层是对截止到当日、或者近7日、近30日等的汇总信息。

        以用户主题这个来举列:

*DWS层:用户主题层是记录某一个用户在某一天的汇总行为。

*DWT层:用户主题层是记录某一个用户截止在当日的汇总行为。

5.ADS

ADS层数据是专门给业务使用的数据层,这层是面向业务定制的应用数据层。

ADS主要完成:

(1)提供为数据产品使用的结果数据、指标等。

(2)提供给数据产品和数据分析使用的数据,一般会存放在 ES、MySQL等系统中供线上系统使用,也可能会存在 Hive 或者 Druid 中供数据分析和数据挖掘使用。如报表数据,或者说那种大宽表。

        这个项目中ADS层也是包含有多个主题:设备主题、会员主题、商品主题、营销主题、地区主题、访客主题、用户主题、订单主题、优惠券主题、活动主题等等。每个主题都包含多个指标的计算。

参考来源:

【1】CSDN:大数据的奇妙冒险,通俗易懂:什么是数仓。

【2】b站:尚硅谷:数仓4.0。尚硅谷的个人空间_哔哩哔哩_bilibili

【3】知乎:张飞的猪,数据仓库(1)什么是数据仓库,数仓有什么特点。

【4】墨天轮:畅谈Fintech,数仓(十八)数仓建模以及分层总结。

【5】CSDN:billows9297,数仓分层(ODS、DWD、DWS、DWT、ADS)和数仓建模

billows9297

【6】博客园:Kris12,数据仓库1.4文章来源地址https://www.toymoban.com/news/detail-402242.html

到了这里,关于数仓及其维度(分层)建模(ODS DWD DWS DWT ADS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 助力工业物联网,工业大数据之数仓维度层DWS层构建【十二】

    ODS层与DWD层的功能与区别是什么? ODS:原始数据层 存储格式:AVRO 数据内容:基本与原始数据是一致的 DWD:明细数据层 存储格式:Orc 数据内容:基于与ODS层是一致的 ODS层的需求是什么? 自动化建库建表 建表 表名 表的注释 表对应的HDFS地址 Schema文件的地址 DWD层的需求是什

    2024年02月08日
    浏览(36)
  • 【电商数仓】关系建模与维度建模、维度表和事实表、几种维度模型、数仓建模原则

    如何规范数仓的表格,想要构建数仓,需要将数仓分层。某一层中存放哪些表,表里有哪里字段,这些事情就是通过建模来确定的。 关系建模和维度建模是两种数据仓库的建模技术。关系建模由Bill Inmon所倡导,维度建模由Ralph Kimball所倡导。 (1)关系建模 从MySQL中导出来的

    2023年04月19日
    浏览(42)
  • 一百八十七、大数据离线数仓完整流程——步骤六、在ClickHouse的ADS层建表并用Kettle同步Hive中DWS层的结果数据

    经过6个月的奋斗,项目的离线数仓部分终于可以上线了,因此整理一下离线数仓的整个流程,既是大家提供一个案例经验,也是对自己近半年的工作进行一个总结。 1、ClickHouse的ADS层建库建表语句 --如果不存在则创建hurys_dc_ads数据库 create database if not exists hurys_dc_ads; --使用

    2024年02月07日
    浏览(50)
  • 助力工业物联网,工业大数据之ODS层及DWD层建表语法【七】

    一站制造项目的数仓设计为几层以及每一层的功能是什么? ODS:原始数据层:存放从Oracle中同步采集的所有原始数据 DW:数据仓库层 DWD:明细数据层:存储ODS层进行ETL以后的数据 DWB:轻度汇总层:对DWD层的数据进行轻度聚合:关联和聚合 基于每个主题构建主题事务事实表

    2023年04月26日
    浏览(38)
  • 物流实时数仓DWD层——1.准备工作

    目录 1.创建主程序——DwdOrderRelevantApp类 2.创建DWD层的事实表——来源于订单表和订单明细表 (1)创建订单表实体类 (2)创建订单明细表实体类 (3)创建交易域:下单事务事实表实体类,并整合(1)与(2),采用下单时间 (4)创建交易域:支付成功事务事实表实体类,并整合(1)与(2),采

    2024年02月01日
    浏览(40)
  • 数仓开发之ODS层

    优秀可靠的数仓体系,需要良好的数据分层结构。合理的分层,能够使数据体系更加清晰,使复杂问题得以简化。以下是该项目的分层规划。 (1)ODS层的表结构设计依托于从业务系统同步过来的数据结构 (2)ODS层要保存全部历史数据,故其压缩格式应选择压缩比较高的,此

    2024年03月15日
    浏览(38)
  • HIve数仓新零售项目ODS层的构建

    注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。 今天继续和大家分享一下HIve数

    2023年04月24日
    浏览(41)
  • 大数据之使用Flink消费Kafka中topic为ods_mall_data的数据,根据数据中不同的表将数据分别分发至kafka的DWD层

    前言 题目: 一、读题分析 二、处理过程 三、重难点分析 总结  本题来源于全国职业技能大赛之大数据技术赛项赛题 - 电商数据处理 - 实时数据处理 注:由于设备问题,代码执行结果以及数据的展示无法给出,可参照我以往的博客其中有相同数据源展示     提示:以下是本

    2024年02月04日
    浏览(48)
  • GaussDB(DWS)基于Flink的实时数仓构建

    本文分享自华为云社区《GaussDB(DWS)基于Flink的实时数仓构建》,作者:胡辣汤。 大数据时代,厂商对实时数据分析的诉求越来越强烈,数据分析时效从T+1时效趋向于T+0时效,为了给客户提供极速分析查询能力,华为云数仓GaussDB(DWS)基于流处理框架Flink实现了实时数仓构建。在

    2024年04月22日
    浏览(43)
  • 【实时数仓】介绍、需求分析、统计架构分析和ods层日志行为数据采集

    普通的实时计算 优先考虑时效性,所以从数据源采集经过实时计算直接得到结果。如此做时效性更好,但是弊端是由于计算过程中的中间结果没有沉淀下来,所以当面对大量实时需求的时候,计算的复用性较差(如B想要使用A的结果),开发成本随着需求增加直线上升。 实时

    2023年04月23日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包