数仓设计

yoyowin yoyowin     2022-12-10     456

关键词:

数据仓库设计方案

一.概述

 数据仓库的特征在于面向主题、集成性、稳定性和时变性,用于支持管理决策。数据仓库的存在的意义在于对企业的所有数据进行汇总,为企业各个部门提供统一的、规范的数据出口。数据仓库在构建过程中通常都需要进行分层处理。业务不同,分层的技术处理手段也不同。数仓分层的主要原因:

  • 清晰数据结构
     每一个数据分层都有它的作用域,这样在使用表的时候能更方便的定位和理解。
  • 数据血缘追踪
     由于最终给业务呈现的是一个能直接使用的业务表,但是表的数据来源有很多,如果有一张来源表出问题了,我们希望能够快速准确的定位到问题,并清楚他的危害范围。
  • 减少重复开发
     规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
  • 复杂问题简单化
     将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

二.数据仓库分层设计

 常见的数据仓库分为ODS操作数据存储层、DW数据仓库层和DM数据集市层三层,其中DW层又分为DWD层和DWS层。数据仓库分层结构见下图:

技术图片

 

 

2.1 ODS层

 ODS层中的数据全部来自于业务数据库,ODS层的表格也业务数据库中的表格一一对应,就是将业务数据库中的表格在数据仓库的底层重新建立一次,数据与结构完全一致。
 由于业务数据库(OLTP)基本按照ER实体模型建模,因此ODS层中的建模方式也是ER实体模型。

2.2 DW层

 DWD层要做的就是将数据清理、整合、规范化、脏数据、垃圾数据、规范不一致的、状态定义不一致的、命名不规范的数据都会被处理。DWD层应该是覆盖所有系统的、完整的、干净的、具有一致性的数据层。在DWD层会根据维度模型,设计事实表和维度表,也就是说DWD层是一个非常规范的、高质量的、可信的数据明细层。
 DWS层为公共汇总层,会进行轻度汇总,粒度比明细数据稍粗,基于DWD层上的基础数据,整合汇总成分析某一个主题域的服务数据,一般是宽表。DWS层应覆盖80%的应用场景。

2.3 DM层

 DM层为数据集市层,面向特定主题。在DM层完成报表或者指标的统计,DM层已经不包含明细数据,是粗粒度的汇总数据。DM层是针对某一个业务领域建立模型,具体用户(一般为决策层)查看DM层生成的报表。

三.维度模型

 维度建模的理论由 Ralph Kimball 提出,他提出将数据仓库中的表划分为事实表和维度表两种类型。维度建模源自数据集市,主要面向分析场景。维度建模是面向分析场景而生,针对分析场景构建数仓模型;重点关注快速、灵活的解决分析需求,同时能够提供大规模数据的快速响应性能。针对性强,主要应用于数据仓库构建和OLAP引擎底层数据模型。
 “事实表”,用来存储事实的度量(measure)及指向各个维的外键值。“维度表”, 用来保存该维的元数据,即维的描述信息,包括维的层次及成员类别等。
 简单的说,维度表就是你观察该事物的角度(维度),事实表就是你要关注的内容。例如用户使用滴滴打车,那么打车这件事就可以转化为一个事实表,即打车订单事实表,然后用户对应一张用户维度表,司机对应一张司机维度表。

技术图片

 

 

3.1 事实表

 在现实世界中,每一个操作型事件,基本都是发生在实体之间的,伴随着这种操作事件的发生,会产生可度量的值,而这个过程就产生了一个事实表,存储了每一个可度量的事件。
 发生在现实世界中的操作性事件所产生的可度量数值,存储在事实表中。从最低的粒度级别来看,事实表行对应一个度量事件,反之亦然。因此,事实表的设计完全依赖于物理活动,不受可能产生的最终报表的影响。除数字度量外,事实表总是包含外键,用于关联与之相关的维度,也包含可选的退化维度键和日期/时间戳。查询请求的主要目标是基于事实表展开计算和聚集操作。
 事实表往往包含三个重要元素:

  • 维度表外键
  • 度量数据
  • 事件描述信息

 例如在电商场景中的一次购买事件,涉及主体包括客户、商品、商家,产生的可度量值包括商品数量、金额、件数等。

技术图片

 

 

3.2 维度表

 每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的描述环境应与事实表行完全对应。维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。
 比如商品,单一主键为商品ID,属性包括产地、颜色、材质、尺寸、单价等,但并非属性一定是文本,比如单价、尺寸,均为数值型描述性的,日常主要的维度抽象包括:时间维度表、地理区域维度表等。

技术图片

 

 综上所述,如果针对用户的下单行为(单一商品)进行维度建模,可以得到如下模型:

技术图片

 

 

四.数据仓库规范

4.1 表名命名规范

 为了让数据所有相关方对于表包含的信息有一个共同的认知。比如说属于哪一层(ODS、DW明细、DW汇总、DM)?哪个业务/部门?哪个维度(用户、车机设备)?哪个时间跨度(天、月、年、实时)?增量还是全量?
命名格式:层次_业务/部门_修饰/描述_范围/周期

技术图片

 

 数据仓库中表格的命名规范如下表所示:

数仓层次 周期/数据范围
公用维度 dim 日快照 d
DM层 dm 增量 i
ODS层 ods w
DWD层 dwd 拉链表 l
DWS层 dws 非分区全量表

a

 

https://www.cnblogs.com/skyell/p/11005666.html

数仓设计

...进行分层处理。业务不同,分层的技术处理手段也不同。数仓分层的主要原因:清晰数据结构 每一个数据分层都有它的作用域,这样在使用表的时候能更方便的定位和理解。数据血缘 查看详情

最强最全面的数仓建设规范指南(代码片段)

目录一、数据模型架构原则1.数仓分层原则2.主题域划分原则3.数据模型设计原则二、数仓公共开发规范1.层次调用规范2.数据类型规范3.数据冗余规范4.NULL字段处理规范5.指标口径规范6.数据表处理规范7.表的生命周期管理三、数仓... 查看详情

最强最全面的数仓建设规范指南(代码片段)

目录一、数据模型架构原则1.数仓分层原则2.主题域划分原则3.数据模型设计原则二、数仓公共开发规范1.层次调用规范2.数据类型规范3.数据冗余规范4.NULL字段处理规范5.指标口径规范6.数据表处理规范7.表的生命周期管理三、数仓... 查看详情

低代码实时数仓构建系统的设计与实践

1导读本文介绍58信安基于Flink实现低代码实时数仓构建系统,我们将数仓构建这一过程进行抽象,通过工程化的思想去解决,将固有领域问题交给系统,让开发人员关注数据本身,解放人力缩短数仓构建周期。... 查看详情

数仓设计

(简答题)1.如果让你来设计数据仓库并搭建相关可视化报表,你会考虑哪些问题。1.数据推送方式与批次,是推送增量还是推送全量,是一天一次还是一天两次;2.推送全量的就全删全插,推送增量的涉及到时间拉链的取法,是... 查看详情

数仓建设规范指南(代码片段)

本文将全面讲解数仓建设规范,从数据模型规范,到数仓公共规范,数仓各层规范,最后到数仓命名规范,包括表命名,指标字段命名规范等!目录:一、数据模型架构原则数仓分层原则主题域划... 查看详情

万字详解数仓分层设计架构ods-dwd-dws-ads(代码片段)

万字详解数仓分层设计架构ODS-DWD-DWS-ADS(qq.com)数仓(三):分层设计ODS-DWD-DWS-ADS_四月天03的博客-CSDN博客_数仓分层设计一、数仓建模的意义,为什么要对数据仓库分层?只有数据模型将数据有序的组织和存储起来之后ÿ... 查看详情

万字详解数仓分层设计架构ods-dwd-dws-ads(代码片段)

万字详解数仓分层设计架构ODS-DWD-DWS-ADS(qq.com)数仓(三):分层设计ODS-DWD-DWS-ADS_四月天03的博客-CSDN博客_数仓分层设计一、数仓建模的意义,为什么要对数据仓库分层?只有数据模型将数据有序的组织和存储起来之后ÿ... 查看详情

数仓实践:总线矩阵架构设计

如何设计一套切实可行的数据仓库呢?我们要明白,对于数据仓库的设计是不能完全依赖于业务的需求,但往往又必须要服务于业务的价值。因此,在构建数据仓库前,我们往往会通过总线矩阵设计,来快... 查看详情

带你认识数仓的增量备份核心设计

...,作者:我的橘子呢。1、认识增量备份GaussDB(DWS)数仓的备份恢复工具Roach支持集群级增量备份。全量备份会将源数据完整备份&# 查看详情

带你认识数仓的增量备份核心设计

...,作者:我的橘子呢。1、认识增量备份GaussDB(DWS)数仓的备份恢复工具Roach支持集群级增量备份。全量备份会将源数据完整备份&# 查看详情

实时数据平台设计

1相关概念背景1.1从现代数仓架构角度看实时数据平台现代数仓由传统数仓发展而来,对比传统数仓,现代数仓既有与其相同之处,也有诸多发展点。首先我们看一下传统数仓(图1)和现代数仓(图2)... 查看详情

电商数仓笔记1(数据仓库概念,项目需求及架构设计,数据生成模块)(代码片段)

电商数仓一、数据仓库概念二、项目需求及架构设计1、项目需求分析2、项目框架(1)技术选型(2)系统数据流程设计(3)框架版本选型(4)服务器选型(5)集群规模(6)集群资... 查看详情

如何设计好数仓?数仓到底是什么?---详解

数据仓库1、什么是数仓?--数据仓库概念2、OLTP和OLAP区别3、数据仓库的特点3.1面向主题3.2数据集成3.3非易失3.4时变4、数据仓库系统架构4.1系统结构图4.2、源数据4.3、ETL4.4、数据仓库与数据集市4.5、应用系统4.6、用户5、维度... 查看详情

大数据开发工程师需要了解的数仓中的维度设计(代码片段)

目录(1)数仓模型如何分层(2)企业数仓模型分层架构(3)维度设计如何理解(4)维表是怎么生成的(5)维度整合的两种策略(6)维度拆分的最佳方案(7)缓慢变化维的... 查看详情

大数据开发工程师需要了解的数仓中事实表的设计

目录(1)如何正确看待事实表(2)企业中事实表的设计原则(3)事物事实表的设计流程(4)深入事物事实表的设计(5)怎么理解周期快照事实表(6)累计快照事实表的设计(7... 查看详情

说说数仓(6)-关于命名规范

参考技术A数仓总结目录:说说数仓(1)-什么是数仓说说数仓(2)-传统数仓与互联网数仓说说数仓(3)-数仓架构说说数仓(4)-指标字典说说数仓(5)-最重要的维度之日期维度说说数仓(6)-关于命名规范说说数仓(7)-浅谈数据治理说说数仓(8)-... 查看详情

技术分享:从双11看实时数仓hologres高可用设计与实践

...介:本文将会从阿里巴巴双11场景出发,分析实时数仓面临的高可用挑战以及针对性设计。2021年阿里巴巴双11完美落下为帷幕,对消费者来说是一场购物盛宴,对背后的业务支撑技术人来说,更是一场年度大考... 查看详情