数据仓库相关概念整理
数据仓库:英文Data WareHouse,数据仓库是面向主题,为分析数据而设计的,是一个各种数据(包括历史数据和当前数据)的中心存储系统,主要服务于商业智能(也就是BI)和企业决策管理。
商业智能:指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值,帮助企业做出明智的业务决策的工具。
面向主题:是在较高的层次能够完整的、统一的刻画某个分析对象所涉及的各项数据和数据间的联系。比如用户订单信息表刻画了用户的购买金额和其他购买行为信息,以及信用卡主档表,记录了信用卡这一业务下用户的卡信息,包含卡号、有效期、额度等。
数据仓库的源系统来源:业务系统数据库、日志采集系统、以及爬虫系统。
日志采集系统:一般是从PC端、APP、IOS对其进行埋点后采集的,也就是采集用户行为。比如上网页版京东搜索“手机”这一行为就会产生行为日志信息,埋点可以记录用户做的所有事情,比如页面浏览、点击、停留、评论、收藏等。
粒度:数据粒度指数据仓库的数据中保存数据的细化程度或综合程度的级别,粒度越小,数据越细,查询范围就越广泛;粒度大就越不够细节。声明粒度意味着精确定义事实表中的一行数据表示什么(比如代表一天的数据、一周的数据还是一个月的数据或者一条订单信息),应该尽可能选择最小粒度,以此来应对各种各样的需求,能满足更多指标开发。
维度:看待事物的角度。
维度表:一般是对事实的描述信息,可以看做是用户分析数据的窗口,包含了事实数据的特性。每一张维度表对应显示世界中的一个对象或者概念,比如用户类型、商品、日期、地区等。
事实表:包含对分析事物的一个或多个度量值(指标)。
指标:可以理解为统计的销售额、转账额等这样的业务统计数。
度量:可以是事实表中存放数值型或者连续次数的字段,例如订单金额、下单次数等。
用户画像:是将用户的每个具体信息抽象成标签,利用这些标签将用户形象具体化,从而为用户提供有针对性的服务,一般是为了后面的推荐系统提供用户标签。
数据质量:在保证数仓正常运行的前提下,对数仓是否运行良好、分析的指标是否正确、数据是否正确进一步检查。
OLAP:是一种软件技术,是分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的,从各个方面观察信息,也就是从不同的维度分析数据,因此OLAP也称为多维分析。如下图所示:角度数等于2的N次方减1.
1.1 数据仓库的特点
第一,面向主题:面向主题是指数仓中的数据是按照一定的业务主题划分组织的,能帮助用户做决策和分析探索。
第二,集成性:数仓的数据来源于其他源系统,可以使用各种ETL工具集成汇总到数仓。
第三,稳定性:数仓主要是为了决策分析,它存储大量的历史数据,一般只有新增,没有更新操作;
第四,时变性:时变性是指它具有时间属性,可以不断生成主题的新数据,比如按年月日的增量数据。
1.2 数据集市与数据仓库区别
数据集市是一种微型的数据仓库,他通常有 更少的数据,更少的主题区域,以及更少的历史数据,因此是部门级的,一般只能为某个局部范围内的管理人员服务。(市面上不同公司和书籍对它的概念可能不同,大体来说是这样)
数据仓库是企业级的,能为整个企业 各个部门 的运行提供决策支持手段。
1.3 数据模型
1.3.1 定义
数据模型是抽象描述现实世界的一种工具和方法,通过抽象的实体及实体之间联系的形式来表示现实世界中事务的相互关系。
数据模型的三要素:数据结构、数据操作、完整性约束。
1.3.2 什么是逻辑数据模型LDM
逻辑数据模型(Logical Data Model)是利用图形方式,采用面向主题的方法、按照3NF的规则有效组织来源多样的各种业务数据 ,通过**数据和关系 **反应业务的一个过程,是进行数据管理、分析和交流的重要手段,同时还能够很好的保证数据的一致性,是实现业务智能(Business Intelligence)的重要基础。
Teradata的逻辑数据模型涵盖以下九大行业:金融服务、医疗卫生、制造业、通讯、娱乐传媒、交通旅游、运输物流、零售、公用事业。
1.3.3 什么是FS-LDM模型
FS-LDM金融数据模型是一个分享成熟稳健的逻辑数据模型和全球性产品,蕴含了现在商业分析决策和客户管理关系的各个方面,利用FS-LDM模型可以直接开展数据仓库模型设计。
FS-LDM主要有以下优势:继承性、灵活性、扩展性、稳定性、可实施性、风险小、应用中性。
一共有十大主题:当事人、渠道、产品、资产、内部机构、地理、协议、事件、营销活动、财务。
第一级是主题、第二级是概念也就是实体、第三级是实体属性和逻辑视图。
建模过程经历系统调研、主题域模型设计、概念模型设计、逻辑模型设计、物理模型设计、模型优化回顾
数仓分层
1.4 数据仓库分层
阿里是4层(ODS、DWD、DWS、ADS),美团是5层(ODS、DWD、DWS、DWT、ADS),京东是9层
1.ODS层:原始数据层,存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理(同时起到备份的作用)
2.DWD层:明细数据层,每个地方叫法可能不同,结构和粒度与原始表保持一致,DWD层对ODS层数据进行清洗(去除空值、脏数据、超过极限范围的数据(比如金额出现负值))。
可能会用到的ETL:Hive SQL(hql)、MR、Spark sql、Python、kettle( 专门做etl,拖拽+sql,比较注重业务逻辑,但外包比较多)
3.DWS层:服务数据层,以DWD为基础,按天进行轻度汇总。比如用户行为宽表,记录了用户一天下单数、评论数等。
4.DWT层:数据主题层,以DWS为基础,按主题进行汇总。比如上面的用户行为宽表是记录了每天的下单数、评论数等,那这里就可以记录用户在今年内下单的总数之类的购买主题,属于某个整体范围。
5.ADS层:数据应用层,为各种统计报表提供数据。可以从其他层去运算。
二、数据建模
2.1 ODS 层 (负责备份数据工作)
(1)保持数据原貌不做任何修改,起到备份数据的作用。
(2)数据采用LZO压缩,并创建索引减少磁盘存储空间(切片)
(3)创建分区表,防止后续的全表扫描
(4)创建外部表(多人共用),内部表(仅自己使用)
2.2 DWD 层 (负责准备数据工作)
DWD 层需构建维度模型,一般采用星型模型,呈现的状态一般为星座模型。(1)数仓维度建模(星型模型),使维度退化。好处:减少后续大量join操作
(2)数据清洗(ETL)
(3)数据采用LZO压缩,
(4)parquet列式存储
(5)脱敏(手机号,身份证号,个人信息)
(6)对用户行为数据进行解析 event事件表
维度建模一般按照以下四个步骤: 选择业务过程→声明粒度→确认维度→确认事实(1)选择业务过程
在业务系统中,挑选我们感兴趣的业务线,比如下单业务,支付业务,退款业务,物流 业务,一条业务线对应一张事实表。(2)声明粒度
数据粒度指数据仓库的数据中保存数据的细化程度或综合程度的级别。
声明粒度意味着精确定义事实表中的一行数据表示什么,应该尽可能选择最小粒度,以 此来应各种各样的需求。
典型的粒度声明如下:
订单中,每个商品项作为下单事实表中的一行,粒度为每次下单
每周的订单次数作为一行,粒度就是每周下单。
每月的订单次数作为一行,粒度就是每月下单(3)确定维度
维度的主要作用是描述业务是事实,主要表示的是“谁,何处,何时”等信息。维度退化(4)确定事实
此处的“事实”一词,指的是业务中的度量值,例如订单金额、下单次数等。
在 DWD 层,以业务过程为建模驱动,基于每个具体业务过程的特点,构建最细粒度的 明细层事实表。事实表可做适当的宽表化处理。
2.3 DWS 层 (各个主题一天发生的行为数据)
统计各个主题对象的当天行为,服务于 DWT 层的主题宽表,以及一些业务明细数据, 应对特殊需求(例如,购买行为,统计商品复购率)。
2.4 DWT 层 (从用户或商品产生到当前时刻累积的数据)
以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建主题对象的全 量宽表
2.5 ADS 层 (分析具体报表,直观数据)
对电商系统各大主题指标分别进行分析。