数据仓库——数据仓库基础

数据仓库基础

1. *数仓中是如何划分主题的?

主题(Subject)是在较高层次上将企业信息系统中的数据进行综合,归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。例如“销售分析”就是一个分析领域,因此这个数据仓库应用的主题就是“销售分析”。
主题是根据分析的要求来确定的。这与按照数据处理或应用的要求来组织数据是不同的。如在生产企业中,同样是材料供应,在操作型数据库系统中,人们所关系的是怎样更方便和更快捷地进行材料供应的业务处理;而在进行分析处理时,人们就应该关心材料的不同采购渠道和材料供应是否即时,以及材料质量状况等。

技巧

考察数据仓库的相关知识:主题。目前大部分企业的数据仓库都是划分主题的。回答重点是主题是根据分析的要求来划分确定的。可以通过举例的方式来进行回答,讲一下自己项目中划分了哪些主题。

2. *数据如何分层?

一般情况下,将数据模型分为3层:

1.源数据层ODS

存放的是接入的原始数据。
经过ETL之后装入本层,大多是按照源头业务系统的分类方式而分类的,为了考虑后续可能追溯数据为题,因此对这一层不建议做过多的数据清洗工作,原封不动接入源数据即可,至于数据的去噪,去重,异常值处理等过程可以放在后面的DW层。

数据仓库层DW

重点设计的数据仓库中间层数据,在这里ODS层获得的数据按照主题建立各种数据模型,DW又细分:

  • 数据明细层:DWD(Data WareHouse Detail)
    该层一般保持和ODS层一样的数据颗粒,并且提供给一定的数据质量保证。同时为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化到事实表中,减少事实表和维度表的关联。另外,在该层也会做一部分的数据集合,将相同主题的数据汇集到一张表中,提高数据的可用性。
  • 数据中间层:DWM(Data WareHouse Middle)
    在DWD层的数据基础上,对数据做轻度的聚合操作,生成一系列的中间表提升公共指标的复用性,减少重复加工,直观来说,就是对通用的核心维度进行聚合操作,算出相应的统计指标。
  • 数据服务层:DWS(Data WareHouse Service)
    又称为数据集市或者宽表,按照业务划分,例如流量,订单,用户等,生成字段比较多的宽表,用于后续的业务查询,OLAP分析,数据分析等。
技巧

考察数据仓库的分层,结合项目来讲。需要讲清楚项目分了几层,然后每一层都有哪些数据。

3. *数仓和普通数据库区别是什么?

数据库与数据仓库的区别实际讲的是OLTP与OLAP的区别。
联机事务处理OLTP(on-line transaction processing)主要是执行基本的,日常的事务处理,比如数据库记录的增,删,改,查。比如在银行存取一笔款,就是一个事务交易。
OLTP的特点一般有:

  • 实时性要求高;
  • 数据量不是很大;
  • 交易一般是确定的,所以OLTP是对确定性的数据进行存取:(比如存取款都有一个特定的金额);
  • 并发性要求高并且严格的要求事务的完整,安全性。(比如这种情况:有可能你和你的家人同时在不同的银行取同一个账号的款)。
    联机分析处理OLAP(on-line analytical processing)是数据仓库系统的主要应用,支持负载的分析操作,侧重决策支持,并且提供直观易懂的查询结果。典型的应用就是复杂的动态的报表系统。
    OLAP的特点一般有:
  • 实时性要求不是很高,很多应用的顶多是每天更新一下数据;
  • 数据量大,因为OLAP支持的是动态查询,所以用户也许要通过将很多数据的统计后才能得到想要知道的信息,例如时间序列分析等等,所以处理的数据量很大;
  • 因为重点在于决策支持,所以查询一般是动态的,也就是说允许用户随时提出查询的要求。所以在OLAP中通过一个重要概念“维”来搭建一个动态查询的平台(或技术),供用户自己去决定需要知道什么信息。
    简单来说:
  • OLTP即联机事务处理,就是我们经常说的关系数据库,以及记录即时的增,删,改查,就是我们经常应用的东西,这是数据库的基础;TPCC(Transaction Processing Performance Council)属于此类。
  • OLAP即联机分析处理,是数据仓库的核心部分,所谓数据仓库是对于大量已经由OLTP形成的数据的一种分析型的数据库,用于处理商业智能,决策支持等重要的决策信息;数据仓库是在数据库应用到一定程序之后而对历史数据的加工与分析,读取较多,更新较少,TPCH属于此类,对于OLAP,列存储模式比通常的行存储模式可能更具优势。
  • OLAP不应该对OLTP产生任何影响,(理想情况下)OLTP应该完全感觉不到OLAP的存在。
OLTPOLAP
用户操作人员,低层管理人员决策人员,高级管理人员
功能日常操作处理分析决策
DB设计面向应用面向主题
数据当前的,最新的细节的,二维的分立的历史的,聚集的,多维的集成的,统一的
存取读/写数十条记录读上百万条记录
工作单位简单的事务复杂的查询
用户数上千个上百万个
DB大小100MB-GB100GB-TB
时间要求具有实时性对时间的要求不严格
主要应用数据库数据仓库
技巧

此处可以讲一下OLTP和OLAP的区别.从应用,功能,时间要求,数据量等方面进行回答.

4.用过什么ETL工具?

ETL常用的三种工具–Datastage,Informatica,Kettle。

技巧

了解一种ETL工具即可。比如Kettle。

5. *星型模型和雪花模型的区别?

事实表:一般是用户行为产生的数据,数据量比较大。
维度表:一般是一些属性信息,用户信息表,产品信息表等。这些属性信息不经常变动。
数据仓库模型:星型模型和雪花模型
星型模型:当所有维表都直接连接到”事实表“上时,整个图解就像星星一样,故将该模型称为星型模型。特点:星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如果地域维度表中,存在国家A省B的城市C以及国家A省B的城市D两条记录,那么国家A和省B的信息分别存储了两次,即存在冗余。
图 : 销售数据仓库中的星型模型
在这里插入图片描述
雪花模型:当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的“层次”区域,这些被分解的表都连接到主维度表而不是事实表。如图,将地域维度表又分解为国家,省份,城市等维表。它的优点是:通过最大限度地减少数据存储量以及联合较小地维表来改善查询性能。雪花型结构去除了数据冗余。
在这里插入图片描述
星型模型因为数据地冗余,所以很多统计查询不需要做外部的连接,因此一般情况下效率比雪花模型要高。星型模型不用考虑很多正规化的因素,设计与实现都比较简单。雪花模型由于去除了冗余,有些统计就需要通过表的连接才能产生,所以效率不一定有星型模型高。正规化也是一种比较复杂的过程,相应的数据库结构设计,数据的ETL,以及后期的维护都要复杂一些。因此在冗余可以接受的前提下,实际运用中星型模型使用更多,也更有效率。

技巧

考察数据仓库的模型。以及相关的一些概念。需要能够回答出星型模型和雪花模型的区别。以及在项目中的使用情况。一般星型模型运用的比较多,效率更高。

用户留存和拉链表

1. *用户留存怎么做?

1.留存率计算方法

假如今天新增了100名用户,第二天登录了50名,则次日留存率为50/100=50%,第三天登录了30名,则第二日留存率为30/100=30%,以此类推。

2.用SQL的计算思路
  1. 用SQL调取出user_id和用户login_time的表,获得新增用户登录时间表。
  2. 根据user_id和login_time,增加一列first_day,此列存着每个用户最早登录时间。
  3. 有了最早登录时间和所有的登录时间,再增加一列by_day,这一列是用login_time-first_day,得到0,1,2,3,4,5…,这就得到了某一天登录离第一次登录有多长时间。
    在这里插入图片描述
  4. 然后从表中提取数据,找到first_day对应的with_first列中0有多少个,1有多少个,一直到7以上。
    在这里插入图片描述
    根据此表,就很容易计算出每天引流的留存率。
技巧

需要能够回答出留存率是如何计算的,不过一般不会问相关概念,而是直接给一个需求,让你进行写SQL计算。所以应该平时多练习SQL语句。

2.拉链表怎么创建

拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。
下面就是一张拉链表,存储的是用户的最基本信息以及每条记录的生命周期。我们可以使用这张表拿到最新的当天的最新数据以及之前的历史数据。
在这里插入图片描述
说明:

  • t_start_date表示该条记录的生命周期开始时间,t_end_date表示该条记录的生命周期结束时间。
  • t_end_date = ‘9999-12-31’ 表示该条记录目前处于有效状态。
  • 如果查询当前所有有效的记录,则 select * from user where t_end_date = ‘9999-12-31’。
  • 如果查询 2017-01-01 的历史快照,则 select * from user where t_start_date <= ‘2017-01-01’ and end_date >=‘2017-01-01’。
1.拉链表的使用场景

在数据仓库的数据模型设计过程中,经常会遇到下面这种表的设计:

  • 有一些表的数据量很大,比如一张用户表,大约10亿条记录,50个字段,这种表,即使使用了ORC压缩,单张表的存储也会超多100G,在HDFS使用双备份或者三备份的话就更大一些。
  • 表中的部分字段会被update更新操作,如用户联系方式,产品的描述信息,订单的状态等。
  • 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态。
  • 表中的记录变化的比例和频率不是很大,比如,总共有10亿的用户,每天新增和发生变化的有200万左右,变化的比例占的很小。
    对于这种表的设计?下面有几种方案可选:
    方案一:每天只留最新的一份,比如我们每天用datax抽取最新的一份全量数据到Hive中。
    方案二:每天保留一份全量的切片数据。
    方案三:使用拉链表。
2.为什么使用拉链表?

方案一:每天只留最新的一份
这种方案就不用多说了,实现起来很简单,每天drop掉前一天的数据,重新抽取一份最新的。
优点很明显,节省空间,一些普通的使用也很方便,不用在选择表的时候加一个时间分区什么的。
缺点同样明显,没有历史数据,先翻翻旧账只能通过其他方式,比如从流水表里面抽。
方案二:每天保留一份全量的切片数据
每天一份全量的切片是一种比较稳妥的方案,而且历史数据也在。
缺点就是存储空间占用量太大太大了,如果对这边表每天都保留一份全量,那么每次全量中会保存很多不变的信息,对存储是极大的浪费。
当然我们也可以做一些取舍,比如只保留近一个月的数据?但是,需求是无知的,数据的生命周期不是我们能完全左右的。
方案三:拉链表
拉链表在使用上基本兼顾了我们的需求。
首先它在空间上做了一个取舍,虽说不像方案一那样占用量那么小,但是它每日的增量可能只有方案二的千分之一甚至万分之一。
其实它能满足方案二所能满足的需求,既能获取最新的数据,也能添加筛选条件也获取历史数据。所以我们还是很有必要来使用拉链表的。

技巧

考察数据仓库建设中,拉链表的使用。用于历史数据变更这种场景。需要能够回答出拉链表的应用情况,拉链表的说明,拉链表如何创建。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章对数据仓库的迫切需求...................................................................................................23 本章目标:.............................................................................................................................23 对战略性信息的迫切需求.....................................................................................................24 信息危机.................................................................................................................................26 技术趋势.................................................................................................................................27 机遇和风险.............................................................................................................................28 过去决策支持系统的失败.....................................................................................................29 决策支持系统的历史.............................................................................................................30 不能提供信息.........................................................................................................................31 操作型系统和决策支持系统.................................................................................................31 使商业运转起来.............................................................................................................31 监视商业的运转.............................................................................................................32 不同的范围,不同的目的.............................................................................................32 数据仓库——唯一可行的解决方案.....................................................................................33 一种新类型的系统环境.................................................................................................34 新环境的需求处理.........................................................................................................34 数据仓库的商业智能.......................................................................
人们在日常生活中经常会遇到这样的情况:超市的经营者希望将经常被同时购买的商品放在一起,以增加销售;保险公司想知道购买保险的客户一般具有哪些特征;医学研究人员希望从已有的成千上万份病历中找出患某种疾病的病人的共同特征,从而为治愈这种疾病提供一些帮助……对于以上问题,现有信息管理系统中的数据分析工具无法给出答案。因为无论是查询、统计还是报表,其处理方式都是对指定的数据进行简单的数字处理,而不能对这些数据所包含的内在信息进行提取。随着信息管理系统的广泛应用和数据量激增,人们希望能够提供更高层次的数据分析功能。为此,数据仓库应运而生。   数据仓库的概念及特点   数据仓库概念始于本世纪80年代中期,首次出现是在号称“数据仓库之父”William H.Inmon的《建立数据仓库》一书中。随着人们对大型数据系统研究、管理、维护等方面的深刻识认和不断完善,在总结、丰富、集中多行企业信息的经验之后,为数据仓库给出了更为精确的定义,即“数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合”。   数据仓库并没有严格的数学理论基础,也没有成熟的基本模式,且更偏向于工程,具有强烈的工程性。因此,在技术上人们习惯于从工作过程等方面来分析,并按其关键技术部份分为数据的抽取、存储与管理以及数据的表现等三个基本方面。   ⑴数据的抽取:数据的抽取是数据进入仓库的入口。由于数据仓库是一个独立的数据环境,它需要通过抽取过程将数据从联机事务处理系统、外部数据源、脱机的数据存储介质中导入到数据仓库。数据抽取在技术上主要涉及互连、复制、增量、转换、调度和监控等方面。数据仓库中的数据并不要求与联机事务处理系统保持实时同步,因此数据抽取可以定时进行,但多个抽取操作执行的时间、相互的顺序、成败对数据仓库中信息的有效性则至关重要。   ⑵存储和管理:数据仓库的真正关键是数据的存储和管理。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。要决定采用什么产品和技术来建立数据仓库的核心,则需要从数据仓库的技术特点着手分析。   ⑶数据的表现:数据表现实际上相当于数据仓库的门面,其性能主要集中在多维分析、数理统计和数据挖掘方面。而多维分析又是数据仓库的重要表现形式,近几年来由于互联网的发展,使得多维分析领域的工具和产品更加注重提供基于Web前端联机分析界面,而不仅仅是在网上发布数据。   提到数据仓库,人们难免会想到仅有一字之差的数据库,那么,数据仓库和我们经常提到的数据库有哪些区别呢?为什么要使用数据仓库呢?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值