vlambda博客
学习文章列表

数据分析|决策分析需要用到啥?数据仓库!

数据分析之
✴ 数据仓库
✴ 数据仓库和数据库的区别
随着企业信息化的发展,数据仓库这个技术也逐渐被运用的越来越多。

数据仓库是比尔·恩门所提出的一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,主要用于管理决策。

数据仓库吸收了各个地方的数据、融会贯通,再规划各种业务、指标,创造出属于自己的一方天地。

今天就让我们走进数据仓库的小世界,看看它究竟是怎样的以及它和数据库有啥区别吧~


数据分析|决策分析需要用到啥?数据仓库!

# 数据仓库

在文章的开头我们提到了数据仓库的四个特点,那么这些特点具体是什么意思呢?


🔸 面向主题: 主题是指用户在使用数据仓库进行决策时所侧重的方面,数据仓库中的数据是按照不同主题进行组织的。

🔸 集成性: 数据仓库中的数据是对原有分散的数据库中的数据进行提取、清理,最后汇总而成。确保最后在数据仓库中的数据都是一致且较为全面的。

🔸 稳定性: 稳定是指一旦数据进入了数据仓库,一般情况下会被长期保留。数据仓库的主要任务是供企业进行决策分析,所以主要涉及数据查询工作。因此, 在数据仓库里一般会有较多的查询操作以及数据更新,但很少会有删除、修改。

🔸 反映历史变化: 数据仓库的数据一般都带有时间属性,系统记录了从过去某一点到目前的各个阶段的信息,方便企业基于过去和当下做出对未来的判断。

在知道了数据仓库的特性之后,数据仓库又是如何搭建的呢?让我们来看看以下几个步骤:

1. 确定项目及深入业务
2. 确定技术架构
3. 建立模型以及物理设计
4. ETL的设计
5. 数据输出

数据是为业务服务的。在公司有众多分支的情况下,哪一个业务领域拥有优先权是在建立数据仓库前需要被确定的。这些需要公司根据本身的商业计划给出答案。

在得知了项目需求之后,我们需要和相关业务人员对接,对业务过程、数据量以及这些数据、指标带来的价值进行一个了解。

在我们对业务和指标数据都有了一定的了解之后, 根据数据量、数据类型等来确定需要采用的服务器配置以及相关技术,完成一个数据仓库的技术框架。

在确定了技术架构后,我们要把数据塞进去, 怎样的数据结构可以提供较快、较直观的查询性能?这就需要我们来建立模型(后文会详细阐述)。一般用维度建模较多。

在确定了数据的结构后,我们要设计数据仓库的逻辑模型在物理系统中的实现模式,即物理设计。 比如:表的数据结构类型、储存位置、存放分配等。

ETL(extraction-transformation-loading/抽取-转换-加载)的设计主要分为数据抽取、数据清洗和转换、数据加载三部分。

最后的数据输出是让数据对外,在客户端使用。比如:BI分析系统、API接口(例如:淘宝和中通是两个独立的公司,但我们在淘宝可以看到中通的物流信息,就是因为淘宝可以利用中通提供的API接口,随时调取信息呈现在自己的网上)等。


数据分析|决策分析需要用到啥?数据仓库!

# 数据仓库分层

数据仓库主要是供企业进行数据查询,所以 它侧重于对数据的管理。数据仓库在构建中通常都需要使用分层这种数据逻辑结构,将仓库大体分为原始数据层,中间层和数据应用层三层。

🔸 原始数据层
这一步是直接将原始数据从操作系统中提取出来放入数仓系统中,后续定位问题时,可以较为方便的找到源数据。该层的目的是将业务系统和数据仓库分开。

🔸 中间层
中间层其实要再细分成三层:数据明细层、主题层 和模型层。

数据明细层是将原始数据层定时(例如:每天)传输到数据仓库中的数据通过ETL, 将数据按照设定好的格式进行储存,形成基础数据层数据。

举个例子,从商品订单系统发过来的客户名单中客户的名字会有各种形式(例:有些订单是大写、有些订单是小写)。此时数据仓库的工作人员需要避免踩坑,和对应业务部门人员商讨确定一个统一的方案。比如不仅仅是按名字区分不同的客户, 而是核对客户的其他所有信息(电话、邮箱、住址等),如果所有其他信息一致则判断为同一个客户。同时,在这一步,要实行统一化,比如所有顾客的名字都用大写。

主题层是将数据根据不同的业务分类,形成一个完整的流程, 减少重复开发。

举个例子,一个商品从零售分销商手中到最后使用用户手中,会经历以下几个步骤:分销商生成一张订单卖给零售商,零售商生成一张订单卖给终端用户。每一个步骤中的订单是断层的、来源于不同系统的、订单表的结构也会不同。因此,我们无法从一个整体的角度去看该商品在每个过程中的转化率。这个时候, 我们就需要把每一级的订单进行分类,也可以说按照基础维度进行划分,并且建立一种相关关系把它们串起来。

模型层是将上一步的主题数据组合成数据分析模型。以表的形式包含多业务场景。

举一个我在网上看到的例子,我们想体现“不同商品在不同区域不同客户的销售情况”, 在模型层我们就要结合订单表、区域表、客户表和商品表,最终使每个区域每个商品每个客户对应一行销售数据,形成一个按区域、商品、客户特征的模型,展示出不同区域、不同商品的的客户特征是怎么样的。

🔸 数据应用层
数据应用层是再次将数据和业务系统关联,供业务部门使用。

总的来说,数据仓库的分层避免了用户直接使用最基础的数据, 可以让用户更高效的调出所需的数据。 同时,分层也是一种细化问题,每一层只处理一种问题,比较容易操作,当出现问题的时候,也只需要更改相关步骤,不用修改所有数据。



数据分析|决策分析需要用到啥?数据仓库!

# 数据仓库 vs 数据库

这两者主要的区别在于 数据库是面向顾客的设计,而数据仓库是面向主题、市场设计的,且通常数据仓库是基于数据库建立的。具体的不同可以见下图:

数据分析|决策分析需要用到啥?数据仓库!
(图源网络)



数据分析|决策分析需要用到啥?数据仓库!

# 数据仓库建模

数据仓库的建模用的较多的是维度建模。 维度建模是从决策分析的需求出发构建模型,因此它侧重于解决用户如何更快的完成分析需求,同时支持大规模复杂查询。它可以分为星形模式、雪花模式和星座模式。

首先,让我们来看一下维度建模的基本要素:事实表和维度表。

维度表表示的是你要对数据进行分析时的不同维度,比如针对消费,我们可以按区域、年龄、商品划分。

事实表包含了分析主题的度量。比如对于消费,销售额是包含在事实表里的。

星形模型的维度建模是以一个事实表为中心,连接不同的维度表。

数据分析|决策分析需要用到啥?数据仓库!
(图源网络)

它的特点是 各个维度表只和事实表有关联,各个维度表之间没有关联。同时,它会把每个维度的主码放置在事实表的中间,作为连接的外码。

数据分析|决策分析需要用到啥?数据仓库!
(图源网络)

举个例子,上图是以消费事实表作为中心, 消费可以用销售数量和销售金额来衡量。 跟消费相关联的因素又有地域、部门、产品、时间(属于维度表),在星形模型中,这四个就是各个维度的主码。而当事实表和维度表连接的时候,这四个就相当于桥梁。

雪花模型是有一个或多个维度表没有直接与事实表相连,而是通过其它维度表和事实表相连。雪花模型其实是星形模型的一种扩展,将维度表再次层次化。

数据分析|决策分析需要用到啥?数据仓库!
(图源网络)

该模型通过最大程度的减少数据储存量以及不断细分维度表来改善查询性能, 但因为维护成本较高且不利于开发,所以不太常用。

星座模型也是星形模型的一个延伸, 但它是基于多个事实表,而且共享维度信息。

数据分析|决策分析需要用到啥?数据仓库!
(图源网络)

总的来说, 星座模型允许多个事物表的存在,更符合业务需求,在业务发展的后期,星座模型是被使用较多的。

写在最后

随着信息化工具的升级、数据量越来越多、对于决策的要求愈发严格,数据仓库的技术也需要不断的改进来满足企业的需求。 实时化和自动化决策需求正是数据仓库发展的趋势。

除了传统的数据仓库, 也有云数据仓库,该数仓是基于云计算,并且运用公开的云提供商提供的数据仓库服务,例如Amazon Redshift。感兴趣的朋友们也可以去了解一下~

参考资料:
1. 人人都是产品经理:《十问十答,带你了解数据仓库》《大数据时代:数据仓库搭建之路》
2. 简书:《数据仓库之数据分析》
3. OSCHINA:《维度建模的三种模型——星型模型、雪花模型、星座模型》

你的学姐们


数据分析|决策分析需要用到啥?数据仓库!

Carrie

香港大学

决策分析与数学

数据分析|决策分析需要用到啥?数据仓库!

Zoe

香港大学

国际商业及环球管理

数据分析|决策分析需要用到啥?数据仓库!

Anna

多伦多大学

管理金融与统计

数据分析|决策分析需要用到啥?数据仓库!
数据分析|决策分析需要用到啥?数据仓库!

关注摘颗星, 每天进步一点点

小红书账号: @欧弗儿学姐


喜欢的话,点个「在看」吧!