精华内容
下载资源
问答
  • 数据仓库设计

    2018-01-29 11:31:07
    以业务和需求为中心驱动数据仓库的建设和不同模型构建模式
  • 某四大行银行数据仓库设计方案,含:需求、架构、应用、部分界面。某四大行银行数据仓库设计方案,含:需求、架构、应用、部分界面。
  • 数据仓库设计说明书

    2012-03-06 18:50:04
    第1章 决策支持系统的发展 1 1.1 演化 1 1.2 直接存取存储设备的产生 2 1.3 个人计算机/第四代编程语言技术 3 1.4 进入抽取程序 3 1.5 蜘蛛网 4 ...10.1.5 典型的数据仓库设计复查 176 10.2 小结 185
  • 真实电商数据仓库全流程开发详解视频教程电商核心业务知识基础
  • 大数据:数据仓库设计

    千次阅读 2021-05-09 22:02:16
    数据仓库设计

    数据仓库设计

    一、数据仓库的功能和应用场景

    1.OLTP:联机事务处理

    场景:为了满足公司买卖的业务场景,而给用户提供了注册、登记、订单等功能,为了实现这些功能而存储了数据

    数据的使用者:用户

    特点
    业务数据管理和存储
    读写速度:快
    满足事务性的需求
    数据量相对较小

    工具
    一般选用关系型数据库来实现:MySQL、Oracle

    2.OLAP:联机分析处理

    场景:为了满足运营决策的需求,将公司各种各样的数据,实现数据分析的管理

    数据的使用者:运营、运维、领导层、数据分析师

    特点
    读写速度要求:按照一定时间周期进行处理,每个小时,每天,离线数据仓库:T+1
    数据量:非常庞大
    事务性的需求:不需要

    工具
    一般使用专业数据仓库工具来实现:Hive、GreepNum

    3.数据仓库功能

    功能
    为了满足OLAP场景下的数据管理需求
    存储:实现各种数据统一化的存储
    处理:将各种原始数据进行规范化的处理,提供给各个需求方

    本质
    是一种分布式、统一化的、规范化的数据管理的设计模型

    4.数据仓库应用

    应用场景:满足企业中所有数据的统一化存储,通过规范化的数据处理来实现企业的数据分析应用

    二、数据仓库的特点

    数据仓库的核心特点

    1.面向主题

    按照主题划分的应用需求

    数据库:面向业务的
    人事部门:人事管理系统:人事数据库中
    在职人员信息
    离职人员信息
    财务部门:财务管理系统:财务数据库中
    支持数据表
    收入数据表
    盈利数据表
    为了满足不同的业务,讲不同的数据放在不同的应用系统中

    数据仓库:面向主题的

    数据仓库:公司中所有的数据全部通过数据采集或者数据同步进入数据仓库【超市 = 所有数据】
    数据集市/主题域:一般都是按照部门划分【商品类别=数据类别】

    - 销售数据集市
    - 财务数据集市
    - 人事数据集市
    - 运维数据集市
    - 运营数据集市
    

    数据主题:各个应用对应的主题【商品细分 = 应用类别】

    订单主题
    收入主题、支出主题、税务主题
    在职人员主题、离职人员主题
    应用日志主题、机器日志主题
    来源分析主题、用户分析主题……
    

    2.数据集成

    存储整个公司所有数据,为公司所有数据的需求方提供数据
    数据仓库本身不产生数据,也不使用数据
    数据仓库会将整个公司采集到的所有数据源的数据进行存储,提供给各个数据的应用方

    3.非易失/稳定性

    按照数据仓库的业务需求,没有更新和删除的业务
    更新:没有,如果修改了数据,修改了数据的真实性,分析的结果就不对了
    删除:没有,工作中会出现删除老的历史数据,不会删除使用的数据

    4.时变性/动态性

    数据仓库中会按照时间记录时间发生变化的数据状态
    数据仓库中的数据随着时间的变化会不断增加
    变化状态:增加

    三、数据仓库的核心流程

    1.ETL

    1.1功能

    Extract、Transform、Load:抽取、转换、加载,将原始数据根据需求进行处理,将处理好的数据再写入HDFS

    1.2阶段:两个阶段

    数据生成

    数据采集
    采集:采集后的数据放在HDFS上

    /nginx/log/source/2021-05-09/20210509.log
    

    数据不一定是标准的结构化格式
    ETL:过滤、补全、转换

    /nginx/log/etl/2021-05-09/20210509.log
    

    通过代码进行开发:MapReduce、SparkCore
    入库:将ETL以后的每一天的数据作为Hive表的一个分区

    数据存储
    ETL场景:数据本身就是结构化的,直接加载到Hive表中
    实现:通过SQL来实现ETL

    数据计算

    数据应用

    1.3实现

    过滤、转换、补全

    过滤:将不需要的数据,或者非法的数据进行过滤
    数据中有10个字段,发现一条数据只有1个字段
    数据中重要的字段丢失:ip/userid/sessionId

    转换:将原始数据格式变成我们想要的数据格式
    解密:数据本来采集的时候是加密的,ETL时候实现解密操作
    格式:18/Aug/2021:19:30:00 =》 2021-08-18 19:30:00

    补全:需要使用的数据,但是原始数据中没有
    通过解析IP地址:得到用户所在的位置:国家、省份、城市
    通过时间信息:补全年、月、日、周、季度

    2.分层

    功能:规定数据在数据仓库中处理的步骤
    实现:每一层就是一个数据库,不同层的数据表在不同的数据库中

    3.建模

    功能:决定了数据表如何构建
    实现:ER建模、维度建模等

    四、指标设计

    指标的概念:对数据统计分析得到的结果,就是指标,也成为指数,指标是通过数值来体现的

    功能:通过指标来衡量事实的结果,反应事实的好坏

    大数据分析的目的:发现产品公司或者平台存在的问题,解决问题

    指标:通过指标来发现问题

    常见基础指标
    每个行业的需求不同,指标也不同
    PV:page view,用于反映网页的访问量
    字段:url
    统计:count(url)

    UV:unnique view:用于反映网站的用户访问量
    字段:访客id,userid,uuid,guid
    访客id:只要访问了,就有这个给id,统计UV:统计访问人数
    会员id:登陆了,就有会员id,统计登陆人数
    会话id:与服务端构建了连接,服务端会分配session id
    计算:count(distinct userid)

    IP:用于反应用户ip的个数,ip可以反映用户群体的分布
    字段:ip
    计算:count(distinct ip)

    跳出率:只访问了一个页面的会话个数/总的会话个数
    字段:sessionld
    计算:pv等于1的session个数count(case pv=1 else sessionid else null)/总的会话个数count(distinct sessionid)
    越低代表用户粘性越高,平台的运营越好

    二跳率:代表了两个页面及以上的会话个数/总的会话个数
    字段:sessionid
    计算:pv等于1的session个数count(case pv>1 else sessionid else null)/总的会话个数count(distinct sessionid)

    平均访问时常:总的session访问时常/总的session个数
    字段:time,sessionid
    计算:sum(访问最后一个页面的时间 - 访问第一个页面时间)/count(distinct sessionid)

    五、维度设计

    1.维度的概念:

    用于描述事实的角度
    用于细化对指标时事的分析,更加精确发现对应的问题

    大数据分析目的:发现问题,调整方案,支撑运营和决策
    指标:UV:100
    描述:昨天的UV是1000,今天的UV是100
    结果:是不好的,因为基于维度做了对比
    指标如果不基于组合维度进行分析得到,这个指标是没有意义的
    昨天的UV是1000,今天的UV是100
    基于多个组合维度看
    地区维度
    昨天的1000,是10个地区的结果,每个地区都有100
    今天的100,是一个地区的结果,这个地区有100个uv

    2.维度的功能

    基于组合更加细化我们的指标,来更加精确的发现问题
    问题:去年营业额2000万,今年营业额2000万[基于时间年维度]
    目的:问什么今年营业额没有增长?
    实现:发现问题
    校区的问题
    去年每个校区都是100万
    统计今年每个校区的营业额[基于时间年+学科]
    是否有个别校区拖后腿,其他小区都在增长,而这个校区降低了
    学科的问题
    统计今年每个学科的营业额[基于时间年+学科]
    每个月对应的营业额

    3.常见维度

    时间维度:年、季度、月、周、天、小时
    地区维度:国家、省份、城市
    平台维度:网站、APP、小程序、H5
    操作系统维度
    校区维度
    学科维度

    4.下钻与上卷

    下钻:当前我们的分析是基于一个大的维度进行分析,要下钻到一个更细的维度进行分析
    先按年分析
    然后按小时分析
    上卷:当前我们的分析是基于一个小的维度的进行分析,要上卷到一个大的颗粒维度来进行分析
    先按每个小时分析
    先按每个小时分析
    然后按照每天分析

    六、建模:ER模型

    1.ER模型的应用

    关系实体模型
    一般应用于OLTP的关系型数据库系统来实现业务数据库的建模,实现满足业务的数据存储
    思想:实现业务存储、通过外键构建数据关联关系、避免冗余存储,记录事件的产生

    2.ER模型的构建

    step1:找到所有实体,以及每个实体的属性
    step2:找到所有实体之间的关系
    step3:建表,每个实体与每个关系都是一张表

    角色
    实体、属性、关系

    举个栗子
    小明在商店买了一双800块的鞋

    实体
    小明:用户实体

    用户id 用户name  用户age 手机 密码
    

    商品:店铺实体

    店铺id  店铺名称 营业执照 经营范围 地址
    

    鞋:商品实体

    商品id 店铺名称  尺寸 颜色  价格
    

    关系
    订单:实体之间的购买关系

    订单id  用户id 店铺id  商品id  订单价格 支付方式
    

    建表
    实体:用户、商品、店铺
    关系:订单
    优点:
    符合数据库的设计规范,没有冗余数据,保证性能,业务的需求把握的比较全面
    缺点:
    设计时候非常复杂,必须找到所有实体和关系,才能构建

    七、建模:维度模型

    1.维度模型的应用

    一般应用于大数据的数据仓库的模型构建,用于通过不同维度来反映事情的好坏

    2.维度模型的构建

    角色
    维度:基于不同维度下的指标的结果,看待指标的角度
    事实:就是通过指标来反映事实

    流程
    构建所有维度
    基于维度分析事实

    举个栗子
    小明在商店买了一双800块
    维度
    小明:用户维度
    商店:店铺维度
    鞋:商品维度

    事实:指标[数值]
    一双:衡量多少
    800块:衡量贵或者便宜

    维度表
    一个维度可以有一张表,也可以有多张表
    事实表
    多个事实放在一张表中

    时间维度  地区维度  平台维度 UV PV IP 跳出率	二跳律
    

    什么是维度模型?
    基于不同维度实现统计分析各种指标事实,用于描述事实的结果

    八、事实表

    1.事实指标值的分类

    1.1可加类型

    基于不同的维度和统计可以直接进行累加的值
    举个栗子:PV
    统计这个月每天的PV
    累加每天的PV,统计这个月的PV

    2.半可加类型

    在有一些维度下可以累加,在有一些维度下不可以累加
    举栗:银行余额
    可以累加:账户维度
    不可累加:时间

    3.不可加类型:在任何维度下,指标的累加是没有意义的

    举例:比例类型

    不建议产生空值,事实表中是不会出现空值
    即使指标没有结果,也为0

    2.事实表的分类

    2.1事务事实表

    原始的事务数据,业务数据
    例如:订单信息表:记录每一条订单事实的信息

    时间						订单id				商品id 			订单价格
    2021-01-01 12:00:00
    2021-01-01 12:00:01
    

    2.2周期快照事实表

    基于事务事实表按照一定的周期进行聚合
    例如:订单统计表:统计每天的订单总个数和订单总金额

    天					订单总数					订单总金额
    2020-01-01			 1000						   2000
    

    大数据就是统计分析的结果表

    2.3累积快照事实表

    事实的结果随着时间的变化而不断完善
    例如:订单状态表

    订单id 				提交成功							支付成功					发货状态					收货状态					退货状态
    order001			12:00:00						   12:00:00				
    

    2.4无事实事实表

    特殊的事实表,无事实的事实表中没有度量值,只有多个维度外键,一般用于业务维度关联

    举例:可以统计分析哪些商品销售的比较好,商品销售量,销售总金额
    需求:哪些商品今天没有卖出
    无状态事实表中:记录所有上架的商品信息
    所有商品id

    今天  商品id
    

    订单事实表:记录所有被销售的商品信息
    订单中的商品id

    今天					订单id 				商品id
    

    九、维度表

    1.雪花模型

    雪花模型的结构
    维度模型构建的方式:决定了维度表与事实表怎么关联

    雪花模型:如果对于一个维度,它有子维度,将子维度关联在父维度上的

    优点:减少数据冗余存储
    缺点:每一次要想获取具体的数据,必须关联每一张子表,性能比较差
    在这里插入图片描述雪花模型的构建
    时间维度
    事实表

    时间维度					地区维度					平台维度				UV					IP				PV
    

    时间维度:B

    时间维度id		year:外键		month:外键		day	:外键
    	1				1				1				1										
    	4				19			   -1		       -1
    

    年维度表

    yearid	yearvalue
    1		2000
    ……
    10		2009
    
    ……
    100		2099
    

    2.星型/星座模型

    星型模型的设计
    所有维度表直接关联事实表
    优点
    每次查询时候,直接获取对应的数据结果,不用关联其他的维度子表,可以提高性能
    缺点
    数据冗余度比较高
    在这里插入图片描述
    星型模型的构建
    时间维度表

    时间维度id		year		month			day			 type
    1			    2020	     01				01			 day
    2				2020	     01				02			 day
    ……
    4				2020		 1				-1			month
    4				2020		-1				-1			year
    

    地区维度表

    地区维度id		国家		省份		城市		类型
    1			    中国	   上海	        浦东	     市
    2			    中国	   上海	        徐汇	     市
    ……
    10			    中国       上海      -1		         省
    11			    中国	    -1       -1              国
    

    需求:统计基于基于时间维度下以及地区维度下的PV、UV、IP
    事实表

    时间维度id	地区维度id		PV		  UV		  IP
    1				1		    10		  1		      1
    4			   -1		    1000	 100		  20	
    

    星座模型
    星座模型:基于星型模型的演变,多个事实共同同一个维度表
    在这里插入图片描述

    十、渐变维度

    渐变维度问题
    维度数据发生变化,如何处理发生变化的数据
    举例
    每个用户会对应一个工作地区,2019年在北京
    在这里插入图片描述
    2020搬到了三亚
    在这里插入图片描述
    现在是2020年,需要对2019年的北京的数据进行统计,这条数据是否参与统计?
    如果参与统计,数据是如何存储的?

    处理方案
    SCD1:通过更新维度记录直接覆盖已存在的值
    当2020年对2019年对北京进行统计的时候,按照覆盖的机制,这个人没有北京的记录,不会被统计,结果不准确

    SCD2:构建拉链表,根据不同的时间来标记这一列不同的状态
    记录这个用户的所有状态的变化

    用户id所在的地区时间标记:start时间标记:end
    1001beijing2018-01-012020-01-01
    1001sanya2020-01-012021-01-01
    1001meiguo2021-01-019999-12-31

    工作中的需求是可以指定日期查询对应的状态
    where starttime< 2019 and end > 2019
    默认应该处理最新的状态:通过9999-12-31,来标记这是最新的状态
    where endtime = 9999-12-31

    SCD3:通过增加列的方式来记录每个状态

    用户id工作城市1工作城市2
    10001beijingsanya

    不能满足需求,一般不用

    十一、分层

    目的:
    决定数据在数据仓库中处理的流程
    实现:
    每一层在HIve中就是一个数据库而言,每一层的表放在对应的数据库中

    原始数据层
    名称:ODS层,原始数据层或者操作数据层
    功能:用于存储最原始的数据
    数据仓库层
    名称:DW层
    数据应用层
    名称:DA/APP/ADS,存储最终要被使用的数据的
    功能:存储结果

    在这里插入图片描述

    十二、常见层次

    实施
    每个公司的分层都不一样,常见的层次要记住功能
    ODS:原始数据层
    专门用于存储原始数据,数据与原始业务数据是一致的
    DWD层:详细数据层
    一般用于将ODS的结果进行ETL处理,存储在DWD层中
    DWM:中间数据层
    用于对DWD层的数据进行轻量级的通用性的处理和聚合的
    一般看业务,如果简单的业务,一般不需要DWM层
    DWS/DM:汇总数据层/数据集市层
    用于实现最终的所有维度的指标的聚合分析,不同的部门需要的数据进行单独的划分
    APP/DA/ADS:数据应用层
    应用存储最后的应用结果
    DIM:维度数据层
    用于存储维度表的数据
    有的公司的维度表放在数据仓库Hive中,有的公司的维度表是在MySQL中
    TMP:临时数据层
    一般用于存储一些临时数据表

    十三、分层案例

    电商案例:
    在这里插入图片描述
    斗鱼案例:
    在这里插入图片描述

    美团数仓设计

    携程数仓设计

    展开全文
  • 数据仓库规范设计.pdf

    2019-11-04 19:36:32
    数据仓库规范设计.pdf
  • 中国工商银行数据仓库建设,介绍数据仓库的逻辑结构,数据流程,以及工商银行的主要分析指标
  • 数据仓库设计规范文档

    千次阅读 2020-08-31 19:43:43
    数据仓库设计规范文档 版本 更新内容 备注 v1.0 创建文档 2020-08-11 一. 数仓建设 1.1. 数据模型架构规范 分层是为了解决 ETL 任务及工作流的组织、数据的流向、读写权限的控制、不同需求的满足等各类...

    #数据仓库设计规范文档

    版本更新内容备注
    v1.0创建文档2020-08-11
    v1.1新增词根相关2020-08-31

    一. 数仓建设

    1.1. 数据模型架构规范

    分层是为了解决 ETL 任务及工作流的组织、数据的流向、读写权限的控制、不同需求的满足等各类问题。
    总体来说,数仓划分为操作数据层、数据仓库层和数据集市层三部分

    数据层次的划分

    • ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持一致。它相当于一个数据准备区,同时又承担着基础数据的记录以及历史变化。

    • DW: 数据仓库层 细分为DWS和DWA。它的主要作用是完成数据加工与整合、建立一致性的维度、构建可复用的面向分析和统计的明细事实表以及汇总公共粒度的指标。

      1. 维度层: 基于维度建模理念思想,建立整个企业的一致性维度

      2. DWS (Data Warehouse Service),明细数据层,以业务过程为建模驱动,基于每个具体业务过程的特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当的冗余,即宽表化处理

      3. DWA (Date Warehouse Aggregation),汇总数据层。

      4. 临时层: 生产明细表和聚合表的时候,不可避免地会产生许多中间结果。所有这些中间结果并不承担对外提供服务的职责——它们对数据仓库的使用者是不可见的。为此单独设计了一个临时层来存放数仓层加工过程中可能产生的各种结果。临时层是在 Hive 上额外开辟的一个数据仓库开发人员专用的库。它承担了数据生产过程中问题数据的跟踪,也是数据存储清理时优先考虑的一块空间

    • DM:Data Mart,数据集市层。

    数据仓库分层架构

    1.2. ODS层设计规范

    ODS层主要是解决:1)导表的冲突,2)落后的数据仓库中间层建设和日益增长的业务需求之间的矛盾。

    • 导表的冲突

    由于数据源有各种各样的库,源表表名重复是很正常的情况。因此我们需要给每个表加上主题域前缀,从而避免来自不同主题域的同名表之间的冲突。当同一主题域下出现同名表时,我们辅以额外的表后缀来区分。

    落地层解决了统一导表的落地问题,也承担着全局 ETL 中的第一轮 Extract。原则上是使落地层里的数据和业务数据保持一致,这也是为了方便将来数据问题的排查与核对。

    • 数仓建设和业务需求之间的矛盾

    当时我们的人力完全无法满足众多需求方对数据的需求——数据中间层的建设赶不上飞速奔跑的业务需求。于是,一个折中的方法是让业务方直接使用落地层,自行处理一些不跨主题域的需求。这里有业务方非常熟悉的原始表,他们能非常迅速地获得所需要的数据。这也有利于快速、低成本地进行一些数据方面的探索和尝试。

    ####ODS层命名规范

    • 表命名规范

    • 表命名规则:主题域_项目名_原表名[_可选的后缀]。

    • 可选的后缀的含义

      • _incr : 只包含了增量部分
      • _tmp{从0开始的序号} :ODS ETL过程的临时表
      • _hh : 按小时同步的全量表
      • _incr_hh :按小时同步的全量表

    示例:

    pc_mysql_minieastdaypc_config_newsrank : 项目pc从mysql:minieastdaypc中全量导入的config_newsrank
    pc_mysql_minieastdaypc_config_newsrank_incr :项目pc从mysql:minieastdaypc中增量导入的config_newsran
    pc_oracle_minieastdaywap_config_newsrank : 项目pc从oracle:minieastdaypc中全量导入的config_newsrank
    h5_log_active : 项目h5 active日志

    表命名不要怕长,要能一眼看清楚含义,表注释要清晰,类似 ods抽取的mysql业务表注释写: 从127.0.0.1/pc:config_newsrank 抽取。

    • 字段命名规范
      • 字段默认使用源系统的字段名。
      • 字段名与关键字冲突时,在源字段名后加上col,即源字段名col。

    ####数据存储及生命周期管理规范

    数据表类型存储方式最长存储保留策略
    ODS流水型全量表按天分区不可再生情况下,永久保存
    日志:视情况保留
    ODS镜像型全量表按天分区重要的业务表及需要保留历史的表视情况保存
    ODS全量表的默认生命周期为2天,支持通过dt=max_pt(tablename)方式访问数据
    ODS增量表按天分区有对应全量表,最多保留最近14天分区数据。
    无对应全量表,需要永久保留数据。
    ODS ETL过程临时表按天分区最多保留最近7天分区

    1.3. DW 数仓层设计规范

    1. 维度层

    • 表命名规范

    dim_[业务/pub]{维度定义}[_{自定义命名标签}],其中的pub与具体业务无关,各个业务部都可以共用,例如时间维度。

    示例:

    dim_pc_config_newsrank

    2. DWS (Data Warehouse Service) 明细数据层

    • 表命名规范
      dws_主题域[_可选的二级主题域]_相关描述

    示例:

    dws_pc_active

    dws_pc_show

    dws_pc_img_show

    3. DWA (Date Warehouse Aggregation),汇总数据层。

    • 表命名规范
      dwa_主题域_聚合维度

    示例:

    dwa_pc_softtype_qid_uid_pv :根据softtype,qid,uid聚合的表

    4. 临时层

    • 表命名规范
      tmp_项目名_业务名_时间
      mid_项目名_业务名

    示例:

    tmp_pc_information_20200810: 以tmp开头和时间结尾的临时层表可以直接删除

    mid_pc_active: 以mid开头的临时层的表可以删除数据

    1.4. DM 数据集市层设计规范

    数据集市层 (Data Mart) 根据主题域的不同在物理上进行划分——它表现为多个相互独立的库,各个数据集市之间不允许做数据依赖。每个数据集市可以由该主题域的使用方在数据仓库规范下自行开发和建设。

    主要依据是以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段来物理化模型

    整体参考:

    分层数据库数据库名表命名规范示例备注
    ODS 落地层ods主题域_项目名_原表名[_可选的后缀]pc_mysql_minieastdaypc_config_newsrank
    pc_oracle_minieastdaywap_config_newsrank
    h5_log_active
    mysql根据实际情况按照拉链表或者增量导入
    log表类似pc_log 开头即可
    表做好注释,这样能看出从哪里导入的
    明细层dwdws_主题域[_可选的二级主题域]_相关描述dws_pc_active
    dws_pc_show
    dws_pc_img_show
    聚合层dwdwa_主题域_聚合维度dwa_pc_softtype_qid_uid_pv根据softtype,qid,uid聚合的表
    通用维度层dwdim_[业务/pub]{维度定义}[_{自定义命名标签}]dim_pc_config_newsrank其中的pub与具体业务无关,各个业务部都可以共用,例如时间维度。
    临时层tmptmp_项目名_业务名_时间
    mid_项目名_业务名
    tmp_pc_information_20200810
    mid_pc_active
    以tmp开头和时间结尾的临时层表可以直接删除
    以mid开头的临时层的表可以删除数据
    数据集市dm_dc :dc报表数据集市
    dm_interface :对外接口数据集市
    rt_业务相关描述
    根据实际情况设计表名

    1.5. 其他规范

    1. 词根

    词根是维度和指标管理的基础,划分为普通词根与专有词根,提高词根的易用性和关联性。

    · 普通词根:描述事物的最小单元体,如:类型-type。

    · 专有词根:具备约定成俗或行业专属的描述体,如:智能咨询-qa。

    (词根标准需大家一起收集并统一标准)

    2. 公共规范

    • 所有命名都要按照蛇形命名法 (snake_case)——全小写,单词之间用下划线分隔
    • 所有表,列都需要注释
    • 表名、字段名需以字母为开头。
    • 表名、字段名最长不超过64个英文字符
    • 优先使用词根中已有关键字(数仓标准配置中的词根标准),定期Review新增命名的不合理性。

    公共字段定义规范

    • 数据统计日期的分区字段按以下标准:

      • 按天分区:dt(YYYYMMDD)。
      • 按小时分区:hh(00-23)。
      • 按分钟:mi (00-59)。
    • is_{业务}:表示布尔型数据字段。以Y和N表示,不允许出现空值域。

    3. 指标命名规范

    结合指标的特性以及词根管理规范,将指标进行结构化处理.

    A. 基础指标词根,即所有指标必须包含以下基础词根(需大家共同维护):

    基础指标词根英文全称Hive数据类型Oracle数据类型长度精度词根样例
    数量countBigintNumber100cnt
    比率/占比ratioDecimalNumber104ratio0.9818

    B.业务修饰词,用于描述业务场景的词汇,例如trade-交易。

    C.日期修饰词,用于修饰业务发生的时间区间。

    时间类型全称词根备注
    小时hourh
    dailyd
    weeklyw
    monthm
    quarterq
    yeary

    D.聚合修饰词,对结果进行聚集操作。

    类型全称词根备注
    平均averageavg
    周累计wtdwtd本周一截止到当天累计
    总量totaltol
    标准差standarddeviationstd

    E.基础指标,单一的业务修饰词+基础指标词根构建基础指标 ,例如:交易金额:trade_amt。

    F.派生指标,多修饰词+基础指标词根构建派生指标。派生指标继承基础指标的特性,例如:安装门店数量:install_poi_cnt。

    G.普通指标命名规范,与字段命名规范一致,由词汇转换即可以。

    H.日期类型指标命名规范,命名时要遵循:业务修饰词+基础指标词根+日期修饰词。将日期后缀加到名称后面.例如:7日交易金额:trade_amt_7d

    I.聚合类型指标,命名时要遵循:业务修饰词+基础指标词根+聚合类型+日期修饰词。将累积标记加到名称后面.如:7日平均交易金额:trade_amt_avg_7d

    4. 数据开发规范

    • 表别名定义约定
      建议将所有的表加上别名。一旦在SELECT语句中给操作表定义了别名,在整个语句中对此表的引用都必须惯以别名替代。考虑到编写代码的便捷性,约定别名尽量简洁,同时避免使用关键字。

      • 表别名采用简单字符命名。
      • 多层次的嵌套子查询别名之前要体现层次关系,SQL语句别名或分层的命名,从第一层次至第四层次,分别用P、S、U、D表示,取意为Part,Segment,Unit,Detail。也可用a、b、c、d来表示第一层次到第四层次。对于同一层次的多个子句,可以在字母后加1、2、3、4区分。
      • 必要时,为表别名添加注释

    待续。。。。

    3. 任务命名及工作流组织规范

    任务是组成工作流的最小单位,也是完成一次 ETL 的最小开发单位,同时也是调度任务进行失败重试的最小单元。我们要求一个任务只写一张目标表,同时任务的命名中必须包含该目标表的表名。
    工作流是一次调度应用的最小单元,它将一组具有相关性的共同调度频率的任务组织在一起。
    同一主题、同一分层且同一调度周期的任务组织成一个工作流。

    工作流组织规范

    • 工作流命名规范

      • 同步任务命名规范 :imp_项目名_{源系统表名}
      • 同步节点导出任务 :exp_项目名_{源系统表名}

    待续

    1.6. 主题域的划分

    主题域的考虑可以从数据仓库层或者数据集市层出发,考虑将全域的数据分散到若干个主题中存放。就像图书管理员需要将书籍分门别类一样,主题域的划分是为了将相关的数据组织在一起,从而使其更容易被寻找和使用。

    1.7. 权限的设计

    待定:根据后续实际情况

    1.8. 数据字典

    业务表字段都需要加注释

    元数据管理是一个单独的模块

    1.9. 任务的优先级

    在 Hadoop 的环境下,任务之间不可避免会出现集群资源竞争的关系。如果没有一个优先级规则,那么大量任务运行时,产出时间的波动是不可控的。需要任务的优先级,在调度层面让高优先级的任务优先进入队列,从而更容易获得资源。

    待定…

    参考:

    展开全文
  • 数据仓库设计
  • 第3 章设计数据仓库 第4 章数据仓库中的粒度 第5 章数据仓库和技术 第6 章分布式数据仓库 第7 章高级管理人员信息系统和数据仓库 第8 章外部数据/非结构化数据与数据仓库 第9 章迁移到体系结构设计环境 第10 章数据...
  • 数据仓库与数据挖掘 DATA WAREHOUSING AND DATA MINING 石家庄铁道大学 内 容第2章 数据仓库的数据模型第3章 数据仓库的数据组织第4章 数据仓库设计--第2章 数据仓库的数据模型本章要点数据仓库的概念模型信息包图...
  • 基于SparkSQL的海量数据仓库设计与实践
  • 阿里支付宝数据仓库层次设计、逻辑数据模型设计方法、设计规范。
  • 【数据中台】数据仓库设计规范

    千次阅读 2020-02-29 11:37:49
    为了解决数据仓库建设过程中出现的各种痛点,我们从模型与规范两个方面进行建设,并提出设计统一归口。 1.模型 规范化模型分层、数据流向,从而降低研发成本,增强指标复用性,并提高业务的支撑能力。 1.1....

    为了解决数据仓库建设过程中出现的各种痛点,我们从模型与规范两个方面进行建设,并提出设计统一归口。

    1. 模型

    规范化模型分层、数据流向,从而降低研发成本,增强指标复用性,并提高业务的支撑能力。

     

    1.1. 模型分层

    为了保证数据层的稳定又要屏蔽对下游的影响,并且要避免链路过长,我们将分层进行统一定义为四层:

    ODS(Operational Data Store):定义为存储层,仅以技术手段(存储快照形式)保留历史数据,不作任何转换,与业务侧db实体保持同构。压缩采用 Snappy,存储采用 orc,根据需求创建分区表并采用列式存储。

    DWD(Data Warehouse Detail):定义为明细层,对数据进行规范化(编码转换、清洗、统一格式、脱敏、维度退化和降维,隔离等),很多同学不是很理解隔离的重要性,在构建整个数仓的过程中,不可避免会发生源业务系统的表结构或者表本身发生变化,如果没有一个中间层进行隔离的话,如果对应的底表被多个下游表使用,那么模型的修改代价是非常大的。因此该层主要对原系统变更进行隔离,尽可能保证对外的模型接口不变。

    DWB(Data Warehouse Basic):定义为汇聚层,集中建设通用性维度和指标,降低业务需求开发成本。

    DWS(Data Warehouse Service):定义为主题宽表层,对DWD、DWB各信息进行联合整合。

    APP:定义为应用层,面向业务需求进行定制开发。

    DIM(Dictionary Data Layer):定义为维度表。

    TMP:定义为中间层临时表(建议在一定的周期内删除)。

    BAK:定义为备份表。

    1.2. 模型数据流向

    稳定业务按照标准的数据流向进行开发,即ODS–>DWD–>DWB–>DWS–>APP或者ODS–>DWD–>DWB–>APP。

    非稳定业务或探索性需求,可以遵循ODS->DWD->APP或者ODS->DWD->DWS->APP两个模型数据流。在保障了数据链路的合理性之后,又在此基础上确认了模型分层引用原则:

    · 正常流向:ODS>DWD->DWB->DWS->APP,对于使用频度非常低的表允许DWD->DWS。

    · 尽量避免出现DWS宽表中使用DWD又使用(该DWD所归属主题域)DWB的表。

    · 同一主题域内对于DWS生成DWS的表,原则上要尽量避免,否则会影响ETL的效率。

    · DWB、DWS和APP中禁止直接使用ODS的表, ODS的表只能被DWD引用。

    · 禁止出现反向依赖,例如DWS的表依赖APP的表。

    1.3 模型开发规则

    1. 所有任务都必须严格配置任务依赖,如果没有配置任务依赖,会导致前一个任务没有正常产出数据的情况下,后一个任务被调度起来,基于错误的数据空跑,浪费资源,同时增加了排查故障的复杂度;

    2. 任务中创建的临时表,在任务结束前应该删除,如果不删除,会发现有大量的临时表存在,占用空间;

    3. 任务名称最好跟表名一致,方便查找和关联;

    4. 生命周期的管理,对于 ODS 和 DWD,一般尽可能保留所有历史数据,对于DWS/ADS/DM 需要设置生命周期,7~30 天不等;

    5.  DWD 层表宜采用压缩的方式存储,可用 lzo 压缩。

    2. 规范

    模型是整个数仓建设基石,规范是数仓建设的保障。为了避免出现指标重复建设和数据质量差的情况,我们统一按照最详细、可落地的方法进行规范建设。

    2.1 词根

    词根是维度和指标管理的基础,划分为普通词根与专有词根,提高词根的易用性和关联性。

    · 普通词根:描述事物的最小单元体,如:类型-type。

    · 专有词根:具备约定成俗或行业专属的描述体,如:智能咨询-qa。

    (词根标准需大家一起收集并统一标准)

    2.2 表命名规范

    · 蛇形命名法---全小写,单词之间用下划线分隔。

    · 表名、字段名采用一个下划线分隔词根(示例:clienttype -> client_type)。

    · 每部分使用小写英文单词,属于通用字段的必须满足通用字段信息的定义,如英文单词过长,可使用英文首字母代替,并加入专有词根。

    · 表名、字段名需以字母为开头。

    · 表名、字段名最长不超过64个英文字符。

    · 优先使用词根中已有关键字(数仓标准配置中的词根标准),定期Review新增命名的不合理性。

    · 在表名自定义部分禁止采用非标准的缩写。

    2.3.  表命名规则

    2.4 任务命名及工作流组织规范

    任务是组成工作流的最小单位,也是完成一次 ETL 的最小开发单位,同时也是调度任务进行失败重试的最小单元。我们要求一个任务只写一张目标表,同时任务的命名中必须包含该目标表的表名。

    工作流是一次调度应用的最小单元,它将一组具有相关性的共同调度频率的任务组织在一起。

    在没有工作流组织规范之前,我们的工作流组织因人而异显得五花八门。杂乱的工作流同样不利于数据仓库的管理和维护。于是我们将同一主题、同一分层且同一调度周期的任务组织成一个工作流。

    2.5 指标命名规范

    结合指标的特性以及词根管理规范,将指标进行结构化处理.

    A. 基础指标词根,即所有指标必须包含以下基础词根(需大家共同维护):

    基础指标词根

    英文全称

    Hive数据类型

    Oracle数据类型

    长度

    精度

    词根

    样例

    数量

    count

    Bigint

    Number

    10

    0

    cnt

     

    比率/占比

    ratio

    Decimal

    Number

    10

    4

    ratio

    0.9818

     

     

     

     

     

     

     

     

     

    B.业务修饰词,用于描述业务场景的词汇,例如trade-交易。

    C.日期修饰词,用于修饰业务发生的时间区间。

    时间类型

    全称

    词根

    备注

    小时

    hour

    h

     

    daily

    d

     

    weekly

    w

     

    month

    m

     

    quarter

    q

     

    year

    y

     

     

    D.聚合修饰词,对结果进行聚集操作。

    聚合类型

    全称

    词根

    备注

    平均

    average

    avg

     

    周累计

    wtd

    wtd

    本周一截止到当天累计

    总量

    total

    tol

     

    标准差

    standard deviation

    std

     

     

     

    E.基础指标,单一的业务修饰词+基础指标词根构建基础指标 ,例如:交易金额:trade_amt。

    F.派生指标,多修饰词+基础指标词根构建派生指标。派生指标继承基础指标的特性,例如:安装门店数量:install_poi_cnt。

    G.普通指标命名规范,与字段命名规范一致,由词汇转换即可以。

    H.日期类型指标命名规范,命名时要遵循:业务修饰词+基础指标词根+日期修饰词。将日期后缀加到名称后面.例如:7日交易金额:trade_amt_7d

     

    I.聚合类型指标,命名时要遵循:业务修饰词+基础指标词根+聚合类型+日期修饰词。将累积标记加到名称后面.如:7日平均交易金额:trade_amt_avg_7d

    2.6 字符集

    Hadoop和hive 都是用utf-8编码的,在建表时可能涉及到中文乱码问题,所以导入的文件的字符编码统一为utf-8格式。

    2.7 约定

    理论上在数仓落地的表不应该出现null未知类型,对于可能出现null的字段,如果为字符型统一为空字符串,如果是数值则给0。

    3. 模型设计文档

    结合模型与规范,形成模型相关设计文档。模型设计文档涉及内容:

    · 需求映射关系表:描述实现某一需求时所涉及的ODS、DWD、DWB、DWB层各个表的详细信息。

    · 数据流图:画出从ODS层—->DWD层—->DWB—->DWS—->APP层表之间的数据流向关系图,作为数仓的储备知识库和ETL开发向导。

    · 物理模型表结构设计:表所有字段、类型、含义等。

    · 词根表:将该物理模型表的新词根由审核人员核验后,更新到文档中(需要wiki文档支持)。

    · 贴源层库表来源文档:记录数据源的详细信息。

    4. 调度shell脚本

    调度脚本主要是通过跑shell脚本,shell脚本的注意点:

    1)命名与所跑的目标表名相同,注释要完善,后缀以.sh结尾。

    2)脚本头需要加上分割线、作者、日期、目的、描述等信息。

    5. 数据生命周期

    一般原始数据和明细数据,会保留完整的历史数据。而在汇总层、集市层或者应用层,考虑到存储成本,数据建议按照生命周期来管理,通常保留几天的快照或者分区。

    展开全文
  • 数据仓库设计规范

    千次阅读 2018-12-19 11:41:34
    名词 名词简称 名词解释 Data Warehouse DW 数据仓库主体 Operational Data Store ODS 数据原始接入层,需要对数据频繁的... 数据源的细节层,有的也称为ODS层,是业务层与数据仓库的隔离层...
    名词名词简称名词解释
    Data WarehouseDW数据仓库主体
    Operational Data StoreODS数据原始接入层,需要对数据频繁的增删改查,是支持对近期数据的OLTP查询,以减轻业务系统负载。
    Data Warehouse DetailDWD数据源的细节层,有的也称为ODS层,是业务层与数据仓库的隔离层,在该层可以把业务表分的更细
    Data Warehouse BaseDWB数据仓库基础数据层,
    存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层
    Data Warehouse ServiceDWS服务数据层,基于DWB上的基础数据,主要整合汇总最终的结果供应用层使用,一般是宽表和高度压缩表。
    Data Warehouse HistoryDWH该层不在数据仓库设计的范围之内,按照业务新增的数据层,主要储存历史数据。
    Data Warehouse ExceptionDWE该层不在数据仓库设计的范围之内,按照业务新增的数据层,主要储存异常数据。
    Enterprise Data WarehouseEDW作为企业唯一的数据仓库,EDW提供统一的数据服务,查询结果有效一致。数据设计支持跨部门,支持海量数据,并支持大量的查询请求。
    Data MartDM和EDW类似,但更专注于部门级别而不是公司级别的统一数据服务。提供EDW不能提供的,针对部门的特殊数据服务需求
    BI/Analytic DatabaseBID/AD为商业智能和分析而优化的数据处理技术。包括数据清理,ETL,数据挖掘等。生产报表,也支持adhoc查询,数据反范式设计。
    Data Lake DatabaseDLD该层存储非加工数据,比如日志、视频等,以后结构化数据,并且不分类,
    没有为了特定程序进行设计和加工。

    参考资料:

    1、https://www.netavis.net/en/products/data-warehouse

    2、具体的可以参考数据仓库之父Bill Inmon在1991年出版的"Building the Data Warehouse",下载地址为:链接: https://pan.baidu.com/s/1I5ImKxDv0Jbx3psqTY2TzQ 提取码: gm8k

    3、https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/381916?fromtitle=data%20warehouse&fromid=1264024&fr=aladdin

    4、https://zhidao.baidu.com/question/2075474616200593988.html

    5、https://blog.csdn.net/Post_Yuan/article/details/52611396

    展开全文
  • 数据仓库设计原则

    2019-09-18 13:54:45
    数据仓库设计原则(一) 模型构架 尽量使用星型架构,使用雪花架构的目的是使事实表第一级的维表数量达到最小。 设计方法 将常识规范化方法应用于维度表设计。例如,不相关的数据不应组合到单一维度表中,而且在多个...
  • 数据仓库设计;1.1数据仓库的发展与展望 1;1.1数据仓库的发展与展望 1;1.1数据仓库的发展与展望 对;定义 一个面向主题的集成;1.1.3 数据仓库的未来发;1.2 数据仓库的体系结构 ;1.2.2 虚拟数据仓库结构;1.2.3 数据集市...
  • 数据仓库的数据模型、数据组织、数据仓库设计(学时2).ppt
  • 数据仓库设计要点

    千次阅读 2021-05-09 17:21:33
    本文简述数据仓库设计要点
  • 第3章 数据仓库设计;3l数据仓库中数据模型概述; 图3-2 数据模型关系;312数据仓库模型构建的原则 ;313企业数据模型;32概念模型设计;2E-R模型设计中的一些说明 1模糊性无法表述数据仓库中各数据间的关系比如分析数据...
  • 数据仓库设计流程图

    千次阅读 2020-01-11 16:22:46
  • 干货:一文读懂数据仓库设计方案

    千次阅读 2019-11-14 12:10:00
    原文:https://www.cnblogs.com/skyell/p/11005666.html 作者:Skyell 转载原因:发现好多人对数据仓库理解的还不够透彻...
  • 第三章 数据仓库设计第3章 数据仓库设计3.1 数据仓库的需求与规划 3.1.1 数据库设计方法简述 3.1.2 数据仓库开发流程 3.1.3 数据仓库需求分析 3.1.4 数据仓库规划3.2 建立数据仓库 3.2.1 数据仓库的平台与结构选择 ...
  • pubs数据仓库设计.pptx

    2020-02-29 04:06:41
    设计要求;数据介绍;数据介绍;分析需求;...利用DTS实现数据仓库数据的加载;利用DTS实现数据仓库数据的加载;利用DTS实现数据仓库数据的加载;利用DTS实现数据仓库数据的加载;包的保存;包的保存;包的保
  • 数据仓库结构设计与开发;提纲; 数据仓库的发展 Development of DataWarehouse;数据仓库的发展2;数据仓库的发展3;为什么要建立数据仓库;OLTP的局限性 ;数据库应用的规模和深度的发展高级数据库;突出的问题;多库系统的...
  • (3)数仓建设-数据仓库设计方案

    千次阅读 2020-08-18 17:56:17
    数据仓库的特征在于面向主题、集成性、稳定性和时变性,用于支持管理决策。数据仓库的存在的意义在于对企业的所有数据进行汇总,为企业各个部门提供统一的、规范的数据出口。数据仓库在构建过程中通常都需要进行...
  • 第4章 数据仓库设计与开发 ; ;4.1数据仓库分析与设计;4.1.1 需求分析;1.确定主题域;2.支持决策的数据来源;3.数据仓库的成功标准和关键性能指标;4.数据量与更新频率;通过需求分析需要的数据包括;4.1.2 概念模型设计...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 151,170
精华内容 60,468
关键字:

数据仓库设计