银河真人开户:数仓维度建模系列-数仓规范篇

本文来源:http://www.bo884.com/www_ishowx_com/

申博太阳城亚洲微信支付充值,  项目夭折,也给陈天桥带来了数亿美元的损失。活动时间:2016年11月29日活动地址:点击试试手气即可获得随机折扣,最低可达一折哦!活动介绍:1.点击进入活动界面,每位玩家在神秘商店都有1次抽折扣购买道具的机会。当前位置:正文《最终幻想15》图文全流程攻略战斗系统解析+武器研究+水晶收集+BOSS战细节【游侠攻略组】2016-11-2913:36:18 角色扮演RPG 人气值:第1页:CHAPTER01.启程CHAPTER01.启程CHAPTER01.启程:为生活费烦恼的王子CHAPTER01.启程:协寻奖金猎人CHAPTER01.启程:血腥双角兽CHAPTER01.启程:首次搭车旅行CHAPTER01.启程:首次搭车旅行CHAPTER01.启程:秘密的代价CHAPTER01.启程:秘密的代价CHAPTER01.启程:令人忧心的消息CHAPTER02.再出发:父亲的遗言CHAPTER02.再出发:父亲的遗言CHAPTER02.再出发:历代诸王之力CHAPTER02.再出发:历代诸王之力CHAPTER02.再出发:宣战告示CHAPTER02.再出发:宣战告示BOSS战洛基CHAPTER03.辽阔的世界陆行鸟任务CHAPTER03.辽阔的世界陆行鸟任务CHAPTER03.辽阔的世界二人的散步CHAPTER03.辽阔的世界瀑布洞窟CHAPTER03.辽阔的世界瀑布洞窟CHAPTER04.神话再现前往卡帝斯的圆盘CHAPTER04.神话再现泰坦巨神的力量CHAPTER04.神话再现泰坦巨神的力量CHAPTER05.乌云雷神的启示CHAPTER05.乌云雷神的启示CHAPTER05.乌云夺回雷格里亚CHAPTER05.乌云夺回雷格里亚CHAPTER05.乌云夺回雷格里亚CHAPTER06.奋起CHAPTER06.奋起CHAPTER06.奋起CHAPTER06.奋起格拉迪欧兰斯离队CHAPTER07.三人行CHAPTER07.三人行CHAPTER08.出航发电厂危机CHAPTER08.出航前往欧尔提谢CHAPTER09.各自的使命首相的来访CHAPTER09.各自的使命首相的来访CHAPTER09.各自的使命博弈CHAPTER09.各自的使命露娜的觉悟CHAPTER09.各自的使命露娜的觉悟CHAPTER09.各自的使命水神CHAPTER10.为王者应如是前往矿山CHAPTER10.为王者应如是前往矿山CHAPTER10.为王者应如是伊格尼斯的坚持CHAPTER11.圈套CHAPTER11.圈套列车防卫战CHAPTER12.危在旦夕的世界CHAPTER12.危在旦夕的世界CHAPTER13.夺回进入要塞CHAPTER13.夺回进入要塞CHAPTER13.夺回进入要塞CHAPTER13.夺回进入要塞CHAPTER13.夺回进入要塞CHAPTER13.夺回再集合CHAPTER13.夺回使骸瑞布斯CHAPTER13.夺回王的宿命CHAPTER14.返乡锤头鲨再聚首CHAPTER14.返乡火神伊弗利特CHAPTER14.返乡火神伊弗利特CHAPTER14.返乡火神伊弗利特CHAPTER14.返乡真实之王与虚假之王CHAPTER14.返乡真实之王与虚假之王CHAPTER14.返乡王的牺牲  【CHAPTER01.启程】  主角诺克提斯·路希斯·切拉姆,为了出席在邻国举办的自身的婚礼,而准备与三位好友驾着父亲的爱车雷格里亚启程。  通知自2017年5月1日起施行。

这样平均水平的玩家会发现他们更难维持疯入膏肓效果,顶级玩家和普通玩家的差距可能会更大。  其次,品牌效应间接影响游戏用户量,但不等于游戏用户量。魅族:你等等在上我,我给你要钱呢!高通:好...来自湖南省长沙市的匿名人士对新闻:的评论佛祖精通C#、Java、PHP、Python等各大主流语言来自山东省青岛市的匿名人士对新闻:的评论跑了50KM结果发现玻璃外,两边和顶上都坐满了人来自上海市的匿名人士对新闻:的评论我都知道原因,微波炉呗来自广东省的匿名人士对新闻:的评论联想也有同样的毛病,都被惯成全球性的大公司了!来自河南省平顶山市的匿名人士对新闻:的评论邮寄爆炸物判几年谁来科普下[s:笑]来自山东省淄博市的匿名人士对新闻:的评论质监部门和监管部门要到315才上班来自广东省的匿名人士对新闻:的评论用外部加热诋毁抹黑中国这事一定要跟寒锅人算账。获得翅膀并通过煅造属性诞生后,翅膀为玩家带来炫酷造型的同时,也将会为玩家的属性带来质的飞跃提升。

4.在法律允许的范围内,腾讯公司拥有对此活动的解释权。作为期待了这么多年的韩游超大作,游戏整体素质还是不错的,具体可以看我们新游频道在昨天发的《天堂永恒》韩服详细评测。的冯提莫,萌萌哒的美女主播,直播唱歌吸引很多粉丝,相信大家都是被萌萌的长相吸引的,然后才被她的歌声吸引的吧,可以说,冯提莫的歌唱实力不输给专业歌手啊,什么风格的都能驾驭,什么样的语言都会唱,也是觉了,怎么不去参加选秀,咳咳,不过选秀成功了估计都没现在赚的零头多。2011年收入1500万以上,2012年收入3000万以上,预计五年实现企业上市,成为东北地区首个互联网上市企业。

本系列将持续更新数仓建模相关知识,将学习到的理论知识和工作实践结合起来,总结沉淀下来,积跬步成千里。

上一篇介绍了维度建模体系的搭建,这次来分享下搭建数据仓库涉及的各种规范。

?

分享我工作中遇到的一个小案例:

小A:我发现XXX这个历史累计指标既可以从服务端出,又可以从日志出,这2份数据源貌似有差异

小B:是的,服务端记录的是当前还存在的,日志会把删除的也记下来

小A:嗯,2份数据源会导致数据不一致的情况,我觉得我们应该从指标命名上区分开来

小B:嗯,我这边是这么记得:服务端的直接从后端表获取,我直接放在维表中,且不加_std

小A:啊?我不是这么写的呢,我是想在前面加个后缀呢

小B:。。。

小A:。。。

?

案例虽小,但折射出来的问题是:每个人都有自己的一套准则,一个数仓几套准则的话,业务怎么用?新人怎么了解?指标一致性怎么保证?所以需要建设数仓标准化规范,保持队形。

另外一方面,所谓"前人留坑、后人填坑",接盘侠一般会很痛苦,好的规范一定程度上可以降低接盘侠的痛苦。比如版本迭代规范,可以很好的追溯新指标上线情况、bug修复情况、数据回刷情况等。

数据规范是数仓体系建设的"语言",是数据使用的说明书和翻译官,同时也是数据质量的保驾护航者。采用标准化、系统化规范让用户"看得懂"、"找得到"、"放心用",保证指标的一致性、保证数据高质量生产。

一、模型层次调用规范

设计模型层次和制定调用规范的目的是:避免烟囱式建设,数据更多的共享,减小重复计算、保持数据一致性等。主要有以下几点:

  • ods层一般只被dwd层调用,不建议跨层调用ods层
  • ads层优先调用dwd和dws层数据,不建议直接抽ods层数据,优先调用dws层
  • 应充分了解业务需求,尽量沉淀常用指标到dwd层、dws层、dim层
  • dws层可先建轻度汇总层,避免指标直接从dwd明细层出
  • dws层要尽量沉淀出常用指标,避免ads层过度调用dwd层数据
  • dws层不宜过深,比如超过10层

二、命名规范

字段命名一般有以下通用规范:

  • 命名一律采用小写
  • 由字母、下划线、数字组成,不能以下划线和数字开头
  • 尽量用英文简写,其次是英文
  • 部分可以汉语拼音首字母标准缩写,如中国制造zgzz
  • 命名不宜过长

1、数据域命名规范

确定好数据域后,需要对其命名,比如上一篇涉及到的

此外一些常用的命名,如:

  • 用户域:par
  • 日志域:log
  • 关系域:sns
  • 广告域:adv
  • 位置域:loc
  • ........

2、表命名规范

可以对表进行如下的约定:

1)临时表:tmp_名字全称_对应输出正式表名_自由发挥_yyyyMMdd

2)正式表:可以采用模型层次、数据域、表描述和分表规则结合的方式

[层次][一级主题域][二级主题域][产品或业务板块][内容描述][分表策略]

说明:

  1. ods层表:尽量保持与源系统相同的命名,不涉及主题域,在此基础上增加层次或分表策略
  2. 内容描述
    • dim表内容描述一般是维度标识词
    • dwd事实表,内容描述跟业务过程有关
    • dws/ads可以增加统一关键词标识有聚合功能,比如aggr、tag等
  3. 层次:就是数仓的模型层次ods/dwd/dim/dws/ads
  4. 主题域:即指上面提到的数据域,根据业务情况确定是否有二级主题和产品或业务板块
  5. 分表策略:即为数据的生命周期,主要有下面几种:

分表策略

简称

说明

小时全量

dh

每小时分区中保留的是历史至今的全量数据

小时增量

hi

每小时分区中保留的是当前小时的增量数据

日全量

dd

每天分区中保留的是历史至今的全量数据

日增量

di

每天分区中保留的是当日的增量数据,可以是汇总数据也可以是明细数据

周全量

wd

每周的分区中保留的是历史至今的全量数据

周增量

wi

每周的分区中保留的是对应周的增量数据,可以是汇总数据也可以是明细数据

月增量

mi

每月的分区中保留的是对应月份的整个月的增量数据,可以是汇总数据也可以是明细数据

月全量

md

每月的分区中保留的是历史至今的全量数据

无时间分区

nd

死表或者不定期更新的全量表

3)表的分区命名规范

即表更新周期,确定表数据按小时、天、周、月、年更新

分区名

分区字段

说明

小时分区

pt_d

HH

天分区

pt_d

yyyy-MM-dd

周分区

pt_w

yyyy-MM-dd,无特殊需求统一写所在周周一的日期

月分区

pt_m

yyyy-MM

年分区

pt_y

yyyy

3、指标命名规范

1)原子指标:原子指标就是度量,对某一业务事件进行度量,有明确的业务含义,比如支付金额等。

原子指标隶属于业务过程,一般在事实表中包含,所以创建原子指标时必须选择所属的业务过程。原子命名规范可由业务修饰词 + 词根组成:

2)衍生指标:对原子指标业务统计范围的确定。由一个原子指标+修饰词+时间周期组成。

衍生指标唯一归属一个原子指标,继承原子指标的数据域。

衍生指标可以分为三类:事务型指标、存量型指标和复合型指标。按照其特性不同,有些必须新建原子指标,有些可以在其他类型原子指标的基础上增加修饰词形成衍生指标。

  1. 事务型指标:是指对业务活动进行衡量的指标,如近N天支付金额。这类指标需维护原子指标及修饰词,在此基础上创建衍生指标。

  2. 存量型指标:是指对实体对象某些状态的统计,对应的时间周期一般为”历史截止当前某个时间“。这类指标需维护原子指标及修饰词,在此基础上创建衍生指标。
  3. 复合型指标:在事务型指标和存量型指标的基础上复合而成,有以下几种:
  • 比率型:比如xxxCTR、xxx满意度。这种情况下需要创建原子指标,比如创建CTR、满意度等原子指标。
  • 比例型:比如xxx百分比,xxx占比。这种情况下需要创建原子指标,比如创建播放歌曲人数占比。
  • 变化量型:比如xxx指标相对上N天的变化量。这种情况下不不创建原子指标,增加统计方法相关的修饰词,然后在此基础上创建衍生指标,比如上N天变化量的修饰词。
  • 变化率型:比如xxx指标相对上N天的变化率。这种情况需要创建xxx变化率原子指标。
  • 统计型:比如人均、次均,xxx分位数等。这种情况下不创建原子指标,增加统计方法相关的修饰词,在此基础上创建衍生指标。
  • 排名型:一般为TOP_xxx_xxx。这种情况下创建原子指标,比如top_n_支付金额,在此基础上创建衍生指标。

3)修饰词的规范

为了规范指标的命名,我们可以对词根、时间周期等修饰词进行约定,比如:

①常用的【词根】可以做如下约定

词根

命名规范

类型

说明

用户数量

unt

bigint

?

次数

cnt

bigint

?

数量

num

bigint

?

金额

amt

Decimal

?

首次

fst

?

类型根据具体度量确定

末次

lst

?

类型根据具体度量确定

平均

avg

?

类型根据具体度量确定

常用

com

?

类型根据具体度量确定

比率

ratio

Decimal

?

时间戳

timestamp

bigint

?

时间

time

string

yyyy-MM-dd HH:mm:ss

日期

date

string

yyyy-MM-dd

加密

encry

string

?

描述

desc

string

?

人民币

RMB

Decimal

?

美元

USD

Decimal

?

前N

topN

?

类型根据具体度量确定

升序

asc

?

类型根据具体度量确定

降序

desc

?

类型根据具体度量确定

时长

duration

Decimal

?

活跃

active

string

?

新/老

new/old

string

?

版本

ver

string

?

②常用的【时间周期】可以做如下约定

时间周期

简称

说明

最近1天

_1d

d:day

最近3天

_3d

最近N天

_Nd

最近7天

_1w

w:week

最近14天

_2w

最近30天

_1m

m:30天

b:before

y:year

最近60天

_2m

最近90天

_3m

最近180天

_6m

最近一年

_1y

180天以前

_b6m

未来7天

_p1w

p:predict;w:week

未来4周

_p1m

p:predict;m:month

自然周

_cw

c:calendar

w:week;

q:quarter;

y:year;fy:fiance year;hfy:half fiance year

自然月

_cm

自然季度

_cq

自然年

_cy

财年

_fy

半财年

_hfy

历史截至当日

_std

std:start to day

自然年初截至当日

_ytd

ytd:year to day

自然季度初截至当日

_qtd

qtd:quarter to day?

自然月初截至当日

_mtd

mtd:month to day

自然周初截至当日

_wtd

week to day

财年年初截至当日

_ftd

fiance(year)to day

最近1小时

_1h

h:hour

0点截至当前小时

_dth

day to hour

0点截至当前

_dtr

dtr:day to realtime

htr:hour to realtime

mtr:minute to realtime

小时截至当前

_htr

分钟截至当前

_mtr

活动开始截至当日

_atd

Activity start to day

活动开始截至当前

_atr

Activity start to realtime

4)公共字段规范

根据部门业务特色,我们可以沉淀一些共有的字段命名,比如维表中的一些字段、专有词语等

字段描述

缩写

字段类型

年龄

age

string

性别

gender

string

城市

city

string

省份

province

string

国家

country

string

用户id

user_id

string

出生日期

birth_date

string

地址

addr

string

邮箱

email

string

星座

constellation

string

昵称

nick_name

string

收入

income

Decimal

设备id

dev_id

string

操作系统

os

string

操作系统版本

os_ver

string

app版本

app_ver

string

三、开发规范

数据开发工程师在开发模型的时候,也尽量保持一致的规范,方便统一管理和运维。具体规范根据部门使用的数据平台有关,比如网易使用的是网易易数开发平台,那我们一般会有如下的约定:

1)建表规范

  • 临时表采用内部表;正式表采用外部表
  • 采用分库形式,按照模型层次建立对应的库名,保持库名、表层级的一致性
  • 建表时增加表属性:开启impala快速查询功能、添加表创建人POPO账号
  • 建表必须要有comment,说明表使用场景等
  • 表字段必须要有详细的描述说明,枚举值必须要有数据字典
  • 临时表后缀要添加创建日期,便于表生命周期管理
  • 表的存储也有严格的规定
    • 临时表统一放在临时库对应的临时目录下,比如:公共路径/临时库/tmp/账号/表名
    • 正式表按模型层级存在统一的目录下,比如:公共路径/库名/层次/表名
  • 表数据存储格式通常采用parquet的格式
  • 表一般会采用snappy压缩
  • 建表一般都有分区

2)作业流规范

根据网易易数开发平台的特点:数仓以作业流的形式开发。为了便于管理开发作业,我们做了如下规定:

  • 一个作业流只输出一张结果表,通过配置跨流依赖来保持顺序持续任务,表之间的依赖关系通过血缘可以快速查看。
  • 作业流的名称以产出表名命名
  • 作业流按模型层次分组,保持模型、表、作业流一致性,比如dim表只放在dim组下。
  • 非实时作业流一般采用T+1的方式调度,即今天更新作业的数据。

3)数据格式规范

我们对数据格式也做了一些约定,比如

  • 时长统一到秒,时间戳统一到毫秒
  • 时间和日期格式统一采用yyyy-MM-dd HH:mm:ss和yyyy-MM-dd

这里根据具体部门的业务需求来统一约定。

4)数据字典规范

开发过程中会涉及到各种枚举值,为了方便管理,也可以统一码值,建立标准化码表。

5)维度规范

维度是维度建模的基础和灵魂,维度的作用是:查询约束、分类汇总、以及排序等。所以对维度统一规范非常重要,比如

  • 共享公共维度
  • 维度采用一张主维表+多张次维表的形式。
  • 维度主键唯一
  • 维度属性的枚举值要统一
  • 维度属性命名要统一
  • 维度属性值格式要规范
  • 维度数值型单位要统一

6)指标来源规范

  • 为了保持数据一致性,同一业务含义指标的源头尽量保持同一张表,比如所有相关评论指标应该能追溯到同一个数据表。
  • 同一业务指标需要涉及多个源数据时,比如日志和服务端的数据。建议尽量加以区分,比如命名上区分

7)指标一致性建设规范

在开发指标过程中,做到需求描述、计算口径、指标口径保持一致性,同时做到指标可追溯可管理。可依托于工具来完成指标的管理。

8)迭代规范

模型上线后期会出现补数据、bug修复、增加指标等情况,为了做到版本迭代可追溯,需要在代码中增加版本迭代备注,比如:版本迭代时间、开发人员、迭代内容、版本上线时间、是否补数据、补数据的分区范围等。

四、交付标准规范

kimball指出,对数仓的基本要求是:对业务用户发布高质量、相关的、可访问的信息和分析 。

那么,数据开发完成后,并不是直接上线交付,还需要重要的一步是保证交付标准,保证数据质量和产出的及时性。实现的手段是数据质量测试、质量监控、调度监控。基本原则主要有以下:

  1. 准确性:准确性是指数据中记录的信息和数据是否准确,是否存在异常或错误的信息。
  2. 完整性:指数据的记录和信息是否完整,是否存在缺失的情况。数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都造成统计结果不准确,所以说完整性是数据质量最基础的保障。
  3. 一致性:一致性一般体现在跨度很大的数据仓库体系中,比如云音乐数据仓库,内部有很多业务线数据仓库分支,对于同一份数据,必须保证一致性。例如用户id,必须保证所有业务线的用户id数据类型、长度等一致。
  4. 唯一性:对于需要保证主键唯一的产出表,必须保证主键的唯一性,比如维表、实体聚集表。
  5. 及时性:在确保数据的完整性、准确性和一致性等后,接下来就要保障数据能够及时产出,这样才能体现数据的价值。

实现这五大标准,可以采用事前质量测试、时候质量&调度监控相结合的方式。比如易数有专门的数据质量中心,支持表和字段级别。任务上线后,尽量配置下质量监控。

五、数据资产管理

好的规范需要有专业的工具来管理,单靠文档和人工肯定会出错的。比如我们使用的是网易内部数据中台产品:【指标管理系统】和【模型设计平台】。实现整个数据资产管理,它的功能如下:

?

  • 统一词根、修饰词、公共字段管理,保证原子指标和衍生指标的一致性

  • 统一指标管理,保证需求描述、计算口径、指标业务口径数据来源的一致性。

  • 统一维度管理,保证了维度定义、维度值的一致性。

  • 统一模型层次、维表、事实表的关联,保证模型设计的一致性

  • 统一数据域、业务过程管理,保证数仓体系的一致性

?

下一篇将着重介绍数仓模型设计相关内容。

参考

1.《数据仓库工具箱—维度建模权威指南》

2.《大数据之路:阿里巴巴大数据实践》

作者简介

吴珍,网易数帆高级数据开发工程师,长期从事大数据开发、数仓体系建设和模型设计、数据规范、数据应用和服务等相关工作。目前主要负责网易云音乐数仓升级项目,依托网易易数及系列数据产品,协助云音乐优化数仓体系架构和数据模型、完善数仓规范、提升数据服务等工作。

已标记关键词 清除标记
www.77msc.com 四川申博官网登入 申博游戏官网登入 申博太阳城官方现金直营网 太阳城亚洲游戏登入 菲律宾太阳娱乐网138登入
www.81138.com 申博代理开户合作登入 菲律宾申博娱乐直营官网 申博电子游戏备用网址 www.38333.com www.sb87.com
申博会员登入 申博亚洲官网登入 申博游戏手机网址 申博官网开户登入 申博官网下载登入 99真人娱乐成登入