数据仓库——数据仓库基础
数据仓库基础
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的存在。
OLTP | OLAP | |
---|---|---|
用户 | 操作人员,低层管理人员 | 决策人员,高级管理人员 |
功能 | 日常操作处理 | 分析决策 |
DB设计 | 面向应用 | 面向主题 |
数据 | 当前的,最新的细节的,二维的分立的 | 历史的,聚集的,多维的集成的,统一的 |
存取 | 读/写数十条记录 | 读上百万条记录 |
工作单位 | 简单的事务 | 复杂的查询 |
用户数 | 上千个 | 上百万个 |
DB大小 | 100MB-GB | 100GB-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的计算思路
- 用SQL调取出user_id和用户login_time的表,获得新增用户登录时间表。
- 根据user_id和login_time,增加一列first_day,此列存着每个用户最早登录时间。
- 有了最早登录时间和所有的登录时间,再增加一列by_day,这一列是用login_time-first_day,得到0,1,2,3,4,5…,这就得到了某一天登录离第一次登录有多长时间。
- 然后从表中提取数据,找到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掉前一天的数据,重新抽取一份最新的。
优点很明显,节省空间,一些普通的使用也很方便,不用在选择表的时候加一个时间分区什么的。
缺点同样明显,没有历史数据,先翻翻旧账只能通过其他方式,比如从流水表里面抽。
方案二:每天保留一份全量的切片数据
每天一份全量的切片是一种比较稳妥的方案,而且历史数据也在。
缺点就是存储空间占用量太大太大了,如果对这边表每天都保留一份全量,那么每次全量中会保存很多不变的信息,对存储是极大的浪费。
当然我们也可以做一些取舍,比如只保留近一个月的数据?但是,需求是无知的,数据的生命周期不是我们能完全左右的。
方案三:拉链表
拉链表在使用上基本兼顾了我们的需求。
首先它在空间上做了一个取舍,虽说不像方案一那样占用量那么小,但是它每日的增量可能只有方案二的千分之一甚至万分之一。
其实它能满足方案二所能满足的需求,既能获取最新的数据,也能添加筛选条件也获取历史数据。所以我们还是很有必要来使用拉链表的。
技巧
考察数据仓库建设中,拉链表的使用。用于历史数据变更这种场景。需要能够回答出拉链表的应用情况,拉链表的说明,拉链表如何创建。
数据仓库——数据仓库基础相关推荐
- 性能为MySQL 10倍!阿里云推出云原生数据仓库AnalyticDB基础版
云原生数据仓库AnalyticDB基础版来了! 点我看直播回放 惊喜优惠!体验10元3个月 发布会PPT资料放送(点击可直接查看哦) ADB基础版:云原生MySQL敏捷数仓 ADB for MySQL ...
- 基于Hadoop的数据仓库Hive 基础知识
转载自:namelessml 原文链接:[完]基于Hadoop的数据仓库Hive 基础知识 Hive是基于Hadoop的数据仓库工具,可对存储在HDFS上的文件中的数据集进行数据整理.特殊查询和分析处 ...
- 数据仓库—数据仓库—Sybase IQ 介绍
http://blog.itpub.net/8128313/viewspace-895289/ 软件厂商: Sybase 授权方式: 商用软件 版本号: 无 版本类型: 企业版 语言版本: 中文 软件 ...
- 企业级数据仓库:数据仓库概述;核心技术框架,数仓理论,数据通道Hive技术框架,HBase设计,系统调度,关系模式范式,ER图,维度建模,星型/雪花/星座模式,数据采集同步,业务数据埋点,数据仓库规范
文章目录 第一章 数据仓库概述 1.1 数据仓库简介 1.1.2 什么是数据仓库? 1.1.3 OLTP 与 OLAP 1.2 数据仓库技术架构 1.3 课程目标 第二章 核心技术框架 2.1 数据仓 ...
- 数据仓库-数据仓库的简介(由来、与关系数据库的区别、数据仓库模型)
数据仓库的基本概念 数据仓库泛化.合并多维空间的数据.构造数据仓库涉及数据清理.数据集成和数据变换,可以看做数据挖掘的一个重要预处理步骤.此外,数据仓库提供联机分析处理(OLAP)工具,用于各种粒度的 ...
- BI/数据仓库/数据分析 基础入门:一些常见概念解释
2019独角兽企业重金招聘Python工程师标准>>> Preface:本文将会讲述 BI/DW/DA 领域的一些常见概念,如:事实表.维度表.建模.多维分析.cube 等,但不涉及 ...
- 什么是Hive——大数据仓库Hive基础
Hive是什么: Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能:其本质是将HQL转化成MapReduce程序. 构建在Hadoop之上的数据 ...
- 【DBMS 数据库管理系统】数据仓库 ( 数据仓库简介 | 操作型数据与分析性数据对比 | 数据仓库特征 | 特征一 : 面向主题组织数据 | 面向应用 | )
文章目录 一.数据仓库简介 二.操作型数据与分析型数据对比 三.数据仓库 特征 与 定义 四.特征一 : 面向主题 数据组织方式 五.面向应用 数据组织方式 六.面向主题 组织数据 七.数据 从 面向 ...
- 数据仓库——数据仓库架构、维度数据建模、雪花模型和星型模型
文章目录 一.数据仓库架构 1. 自顶向下 2. 自底向上 二.维度数据建模 三.星型模型和雪花模型 1. 星型模型 2. 雪花模型 本篇文章主要介绍了数据仓库的整体架构.数仓中常用的维度数据建模方法 ...
最新文章
- UITableView 滑动删除
- nacos 配置不会动态刷新_Alibaba之Nacos详解
- 多类感知器算法题目_先进算法讲解
- 程序员获取编程灵感的 10 种方式
- c语言指针字符串逆序存放,C语言指针实现字符串的反转
- Excel催化剂插件安装过程升级,离线版全网公开下载!
- 用户界面样式-鼠标样式(HTML、CSS)
- 修改mysql默认端口
- php上搭建dvwa,使用phpstudy在windows上搭建DVWA
- 嵌入式开发——常见的存储器分类和特性介绍
- arcmap 影像坐标批处理 python_ArcMap怎么把坐标系转换成投影坐标系?
- MySQL 数据库扩容方案
- php 集成 spss,spss怎么录入数据
- 一洗大增大膏是真的吗_久久享欲增大膏跟一洗大结合真的有那么神奇吗?
- C# QQ连连看外挂(内存版)源代码
- 常见电商模式B2B、B2C、C2B、C2C、O2O
- 5款最好的安卓界面设计工具推荐
- MOT:A Higher Order Metric for Evaluating Multi-object Tracking
- Power BI DAX: DAX生成日历表
- 前端实现QQ聊天气泡
热门文章
- 人物照片墙html模板,制作散落照片墙效果人物照片的PS教程
- 工作五年,一年内我靠这系列 java 面试宝典从 13K 到大厂 30K
- UIPresentationController
- redis incr和incrBy的使用
- Visual Studio 2008 安装出错 无法安装 问题合集
- 支付宝转账到银行卡的二维码
- git 克隆到指定分支
- android锁定屏幕通知_如何在Android锁定屏幕上隐藏敏感通知
- MATLAB读取网页内链接,Matlab使用urlread()读取网页乱码问题
- 神经网络(深度学习)入门学习