大数据开发工程师需要了解的【数仓中的维度设计】(一)

简介: 笔记

(1)数仓模型如何分层


企业常用的数据模型分为三层:


操作数据层(ODS)

公共维度模型层(CDM)

数据应用层(ADS)

其中公共维度模型层包括:


明细数据层(DWD)

汇总数据层(DWS)


10.png

操作数据层(ODS) :把操作系统数据几乎无处理地存放在数据仓库系统中。


同步:结构化数据增量或全量同步数仓

结构化 :非结构化(日志)结构化处理并存储到数仓

累积历史、清洗:根据数据业务需求及稽核和审计要求保存历数据、清洗数据

公共维度模型层(CDM) :存放明细事实数据、维表数据及公共指标汇总数据


其中明细事实数据、维表数据一般根据ODS层数据加工生成;

公共指标汇总数据一般根据维表数据和明细事实数据加工生成。


CDM层又细分为:


DWD层:明细数据层

DWS层:汇总数据层

采用维度模型方法作为理论基础,更多地采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联,提高明细数据表的易用性;同时在汇总数据层,加强指标的维度退化,采取更多的宽表化手段构建公共指标数据层,提升公共指标的复用性,减少重复加工。


其主要功能如下:


组合相关和相似数据:采用明细宽表,复用关联计算,减少数据扫描

公共指标统一加工 :基于One Data体系构建命名规范、口径一致和算法统一的统计指标,为上层数据产品、应用和服务提供公共指标;建立逻辑汇总宽表。

建立一致性维度:建立一致的数据分析维表,降低数据计算口径算法不统一 的风险。


(2)企业数仓模型分层架构


11.png


(3)维度设计如何理解


维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实”将环境描述为“维度”,维度是用于分析事实所需要的多样环境。 例如,在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。


维度所包含的表示维度的列,称为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。


例如,在查询请求中,获取某类目的商品、正常状态的商品等,是通过约束商品类目属性和商品状态属性来实现的;统计不同商品类目的每日成交金额,是通过商品维度的类目属性进行分组的;

我们在报表中看到的类目都是维度属性。所以维度的作用一般是查询约束、分类汇总以及排序等。


如何获取维度或维度属性


报表中获取

和业务人员的交谈中发现维度或维度属性

因为它们经常出现在查询或报表请求中的“按照”(group by)语句内。 例如,用户要“按照”月份和产品来查看销售情况,那么用来描述其业务的自然方法应该作为维度或维度属性包括在维度模型中。


维度的基本设计方法

维度的设计过程就是确定维度属性的过程,如何生成维度属性,以及所生成的维度属性的优劣,决定了维度使用的方便性,成为数据仓库易用性的关键。正如Kimball所说的,数据仓库的能力直接与维度属性的质量和深度成正比。


第一步:选择维度或新建维度。作为维度建模的核心,在企业级数据仓库中必须保证维度的唯一性, 只允许有个维度定义。

第二步:确定主维表。此处的主维表一般是ODS表,直接与业务系统同步。

第三步:确定相关维表。数据仓库是业务源系统的数据整合,不同业务系统或者同一业务系统中的表之间存在关联性。根据对业务的梳理,确定哪些表和主维表存在关联关系,并选择其中的某些表用于生成维度属性。以商品维度为例,根据对业务逻辑的梳理,可以得到商品与类目、卖家、店铺等维度存在关联关系。

第四步:确定维度属性。本步骤主要包括两个阶段,其中第一个阶段是从主维表中选择维度属性或生成新的维度属性;第二个阶段是从相关维表中选择维度属性或生成新的维度属性

确定维度属性的几点提示


尽可能多地给出包括一些富有意义的文字性描述

属性不应该是编码,而应该是真正的文字,一 般是编码和文字同时存在,比如商品维度中的商品ID和商品标题类目ID和类目名称等。ID一般用于不同表之间的关联,而名称一般用于报表标签。

区分数值型属性和事实

数值型字段是作为事实还是维度属性,可以参考字段的一般用途。如果通常用于查询约束条件或分组统计,则是作为维度属性;如果通常用于参与度量的计算,则是作为事实。比如商品价格,可以用于查询约束条件或统计价格区间的商品数量,此时是作为维度属性使用的;也可以用于统计某类目下商品的平均价格,此时是作为事实使用的。另外,如果数值型字段是离散值,则作为维度属性存在的可能性较大;如果数值型字段是连续值,则作为度量存在的可能性较大,但并不绝对,需要同时参考字段的具体用途。

尽量沉淀出通用的维度属性

有些维度属性获取需要进行比较复杂的逻辑处理,有些需要通过多表关联得到,或者通过单表的不同字段混合处理得到,或者通过对单表的某个字段进行解析得到。此时,需要将尽可能多的通用的维度属性进行沉淀


(4)维表是怎么生成的


维度的层次结构

12.png


规范化与反规范化


对于商品维度,采用雪花模式进行规范化处理,如果将维度的属性层次合并到单个维度中的操作称为反规范化。分析系统的主要目的是用于数据分析好统计,如何更方便用户进行统计分析决定了分析系统的优劣。采用雪花模式,用户在统计分析的过程中需要大量的关联操作,使用复杂度高,同时查询性能很差;而采用反规范化处理,则方便、易用性能好。

13.png


(5)维度整合的两种策略


第一种是垂直整合,即不同的来源表包含相同的数据集,只是存储的信息不同。

14.png


第二种是水平整合,即不同的来源表包含不同的数据集。

15.png


(6)维度拆分的最佳方案


水平拆分

维度通常可以按照类别或类型进行细分。比如淘系商品表,根据业务线或行业等可以对商品进行细分,如淘宝的商品、天猫的商品、1688的商品、飞猪旅行的商品、 淘宝海外的商品、天猫国际的商品等。不同分类的商品,其维度属性可能相同,也可能不同。比如航旅的商品和普通的淘系商品,都属于商品,都有商品价格、标题、类型、上架时间类目等维度属性,但是航旅的商品除了有这些公共属性外,还有酒店景点、门票、旅行等自已独特的维度属性。

16.png

主要有两种解决方案

方案一:是将维度的不同分类实例化为不同的维度,同时在主维度中保存公共属性


17.png

当维度属性随类型两个依据变化较大时,将所有可能的属性建立在一个表中是不切合实际的,也没有必要这样做,此时建议采用此方案。定义一个主维度用于存放公共属性;同时定义多个子维度,其中除了包含公共属性外,还包含各自的特殊属性。公共属性一般比较稳定,通过核心的商品维度,保证了核心维度的稳定性;通过扩展子维度的方式,保证了模型的扩展性。


方案二:是维护单一维度,包含所有可能的属性

18.png

通常来说推荐方案二。


垂直拆分

在进行维度设计时,依据维度设计的原则,尽可能丰富维度属性,同时进行反规范化处理。对于具体实现时可能存在的问题,一是在“水平拆分”中提到的,由于维度分类的不同而存在特殊的维度属性,可以通过水平拆分的方式解决此问题。二是某些维度属性的来源表产出时间较早,而某些维度属性的来源表产出时间较晚;或者某些维度属性的热度高、使用频繁,而某些维度属性的浓度低、较少使用;或者某些维度属性经常变化,而某些维度属性比较稳定。在“水平拆分”中提到的模型设计的三个原则同样适合解决此问题。出于扩展性、产出时间、易用性等方面的考虑,设计主从维度。主维表存放稳定、产出时间早、热度高的属性;从维表存放变化较快、产出时间晚、热度低的属性。

19.png



相关实践学习
数据库实验室挑战任务-初级任务
本场景介绍如何开通属于你的免费云数据库,在RDS-MySQL中完成对学生成绩的详情查询,执行指定类型SQL。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
2月前
|
存储 JSON 大数据
大数据离线数仓---金融审批数仓
大数据离线数仓---金融审批数仓
161 1
|
4月前
|
监控 数据可视化 安全
Spring Cloud可视化智慧工地大数据云平台源码(人、机、料、法、环五大维度)
智慧工地平台是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
64 2
|
5月前
|
物联网 大数据
助力工业物联网,工业大数据之其他维度:组织机构【十五】
助力工业物联网,工业大数据之其他维度:组织机构【十五】
31 0
|
5月前
|
SQL Oracle 物联网
助力工业物联网,工业大数据之数仓维度层DWS层构建【十二】
助力工业物联网,工业大数据之数仓维度层DWS层构建【十二】
50 0
|
4天前
|
分布式计算 监控 大数据
《吊打面试官》- 大数据工程师50道中大厂面试真题保姆级详解
《吊打面试官》- 大数据工程师50道中大厂面试真题保姆级详解
18 1
《吊打面试官》- 大数据工程师50道中大厂面试真题保姆级详解
|
11天前
|
存储 运维 监控
|
2月前
|
分布式计算 大数据 Hadoop
数据仓库(13)大数据数仓经典最值得阅读书籍推荐
从事数仓工作,在工作学习过程也看了很多数据仓库方面的数据,此处整理了数仓中经典的,或者值得阅读的书籍,推荐给大家一下,希望能帮助到大家。建议收藏起来,后续有新的书籍清单会更新到这里。
262 2
数据仓库(13)大数据数仓经典最值得阅读书籍推荐
|
2月前
|
存储 大数据 数据管理
数据仓库(09)数仓缓慢变化维度数据的处理
数据仓库的重要特点之一是反映历史变化,所以如何处理维度的变化是维度设计的重要工作之一。缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流逝发生缓慢的变化,与数据增长较为快速的事实表相比,维度变化相对缓慢。阴齿这个就叫做缓慢变化维。
228 2
数据仓库(09)数仓缓慢变化维度数据的处理
|
3月前
|
SQL 分布式计算 数据库
离线数仓--大数据技术之DolphinScheduler
离线数仓--大数据技术之DolphinScheduler
167 2
|
4月前
|
数据挖掘 数据库
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
135 0

热门文章

最新文章