必备技能之数据仓库的理解
一、了解数据仓库背景知识点
背景:早期2000年初,Excel 国内是简单的报表阶段,这个阶段主要是汇总一些数据,解决业务人员想要的报表( 如:销售额:xxx万元、销售量:20000件)--到OLAP/OLTP(OLTP:在线存储历史数据,OLAP:在线分析当前数据,各公司对当前的定义)-----再到2010年,数据集市阶段,进行一定的数据采集、整理,按照某业务部门的需求进行采集、整理,按照业务人员需要,进行多维度报表的展现,能够提供特定的领导决策数据。如:1月~3月销售额:xxx万元、4月~6月销售额:xxx万元(部分数据维度分析维度一致性 类似的维度需要一致性)------再到 2015年数据仓库,各大公司开始注重用户体验,物流效率等问题,这个时候进入数据仓库阶段,主要按照数据模型,对整个企业的数据进行采集、整理,提供跨部门,完整一致性的业务报表数据,能够通过数据仓库生成对业务具有指导性的数据,为决策者提供更全面的数据。(如:某个月某个地区的用户数量下降,某个月某个地区的用户数量上升)-----数据湖-----2020年大企业如今的数据中台。
数据仓库的概念: 从事务型数据库中抽取、整理、并转化为新的存储格式,为决策服务
一个公司里面不同项目可能用到不同的数据源,有的存在关系型数据库MySQL里面,有的存在非关系型数据库MongoDB里面,甚至还有些要做第三方数据。但是现在又想把数据整合起来,进行数据分析。此时数据仓库(Data Warehouse,DW)就派上用场了。它可以对多种业务数据进行筛选和整合,可以用于数据分析、数据挖掘、数据报表。
数据仓库的特点
数据仓库的用途
是用于报告和数据分析的系统,被认为是商业智能的核心组件,数据仓库是来自一个或多个不同源 的集成数据的中央存储库,数据仓库将当前数据和历史数据存储在一起,用于为整个企业的员工创建分析报告。
延伸拓展
1、数据仓库与事务型数据库的区别
我们为某个程序创建的特定的数据库一般称为事务型数据库(Transaction Database), 它与Data Warehouse(DW)还是有很大差别的.
1. 事务数据库帮助人们执行活动,而数据仓库帮助人们做计划。例如,事务数据库可能显示航班的哪些座位是空的,这样旅客可以进行预定。而数据仓库用于展示空座率情况的历史信息,以让航班管理员决定在未来是否要调度航班。
2. 事务数据库关注细节,而数据仓库关注高层次的聚集。例如,一个大人只想购买最流行的儿童图书而不关心它的库存情况。但负责图书在书架上排列的管理员也关心图书的销售情况和变化趋势。这之间的不同的隐含区别在于数据仓库中的数据通常都是数值类型,它可用于汇总。
3. 事务数据库通常为特定的程序而设计,而数据仓库用于整合不同来源的数据。例如订单处理程序——数据库会包含每笔订单的折扣信息,但不会包含产品的成本超支情况。相应地产品管理程序会包含详细的成本信息但不会包含销售折扣。但可以把这两样信息组合到一个数据仓库中,你就可以计算产品的实际销售利润。
4. 事务数据库关注现在,而数据仓库关注于历史。例如一个银行帐户,每一次事务——即每次的存款与取款都会改变帐户余额的值,但事务系统很少会维护历史余额。但在数据仓库中,你可以存储很多年的事务数据(可能被汇总的),还会存储余额快照。这样允许你把当前值与历史进行比较。在进行决策时,可以查看历史趋势。
5. 事务数据库是可变的,这很容易理解。但数据仓库是稳定的;它的信息会以固定的间隔进行更新(可能是每月,每星期或每小时),而且理想情况下,更新只会为新的时间段添加新值,而不会改变先前存储的值。
6. 事务数据库必须提供对详细信息的快速获取和更新,而数据仓库必须对高汇总信息的快速获取或更新。所以事务数据库的设计优化与数据仓库的设计优化可能不同。而且,以管理目的查询一个事务数据库生成报表可以会导致该事务程序运行性能下降
2、MongoDB与MySQL的区别
二、构建数据仓库的实操步骤
数据仓库:实操步骤 (从表开始)
第一步:多维度建模 时间表、事实表 例如:时间维 《2019年》
第二步:需求分析(lazada网站)
1)用户购买分析(2)订单分析(3)评论分析产品(4)产品访问维度(5)购物车维度(6)评价值(7)销售利润维度(8)客户货物运输(9)库存维度(10)页面点击维度
第三步:构建多维矩阵
行列式
行写:数据集市 主题
购买产品
订单
产品评论
***********等等
列写:维度
时间
支付
地理位置
第四步:多维表思维 构建事实表
事实的映射关系
三、数据仓库的数据源
数据来源:1、结构化的数据(即存在关系数据库里面的数据可通过SQL查询到可以直接计算的,比如订单、利润、商品等)
2、半结构化数据
3、非结构化数据(视频、图像)
DB 是现有的数据来源,可以为mysql、SQLserver、文件日志等,为数据仓库提供数据来源的一般存在于现有的业务系统之中。
分级层或分级数据库存储从每个 不同的源数据系统中提取的原始数据。
集成层通过转换来自分级层的数据,将不同数据集合在一起,通常将转换后的数据存储在ODS数据库中,然后将集成的数据转移到另一个数据库通常称为数据仓库数据库,在这个数据库中数据被分为层次组(称为维度)并被分成事实和聚合事实,事实和维度的组合有时被称为星型模式。
ETL的是 Extract-Transform-Load 的缩写,用来描述将数据从来源迁移到目标的几个过程:
Extract,数据抽取,也就是把数据从数据源读出来。
Transform,数据转换,把原始数据转换成期望的格式和维度。如果用在数据仓库的场景下,Transform也包含数据清洗,清洗掉噪音数据。
Load 数据加载,把处理后的数据加载到目标处,比如数据仓库。
ODS(Operational Data Store) 操作性数据,是作为数据库到数据仓库的一种过渡,ODS的数据结构一般与数据来源保持一致,便于减少ETL的工作复杂性,而且ODS的数据周期一般比较短。ODS的数据最终流入DW
+DW (Data Warehouse)数据仓库,是数据的归宿,这里保持这所有的从ODS到来的数据,并长期报错,而且这些数据不会被修改。
DM(Data Mart) 数据集市,为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据,面向应用。
延伸拓展
数据仓库与数据集市
数据仓库与数据湖
数据仓库图解
数据产品经理在构建数据仓库中系统中的工作
1、数据仓库属于数据产品的数据管理内容(包含指标体系管理、元数据管理、数据接口管理、全局数据管理 )
2、检查数据仓库表生成的时效(Mysql、Hive)
hive是基于 Hadoop 的一个 数据仓库 工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供 SQL 查询功能,能将 SQL语句 转变成 MapReduce 任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive是十分适合数据仓库的统计分析和 Windows 注册表文件。
3、检查数据一致性
培养以上技能需要满足
四、半结构化会话数据预处理
对半结构化的和非结构化数据的提取,需要算法 特征进行选择、特征提取
半结构化数据(日志、xml、jason格式、URL、文字型URL)
非结构化数据(图像、声音)
五、物理化实现数据仓库环境与ETL
环境:Linux+Apache +Mysql +语言
ETL (用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程)
六、设计执行物理操作
变成具体的事实表
列名 描述 类型 长度 示例
int /char
七、ETL
调度方案
八、加载维度表和事实表
维度表映射成事实表
九、OLAP加载分析
写在最后:
数据平台
HDFS--来自GOogle GFS
负责传输的框架
FLUME kafaka sqoop
存储(数据库):MySQL HDFS Hbase MongoDB(爬虫存储的数据放这个地方)
计算:HIve Tez Spark(实时计算)
数据查询:Druid Presta