关于命名规范、维度明细层及集市汇总层设计的思考

在SN做仓库项目,根据自己负责的内容及SN的一些规范等,将这一阶段的模型工作进行一个思考和总结。

一、仓库字段、表等命名的规范

数据仓库建设目的,其中重要的一个方面就是建立统一的全局视图;表、字段等的规范命名就是仓库全局视图一个方面的体现。

在进行规范命名的时候,一般会根据《数据建模字段简写命名规范.xlsx》来进行。《规范》中有的词组,对应的表及字段按照《规范》进行命名;有的字段词组在《规范》中没有,则需要在《规范》中新加、完善和补充。新增加的《规范》简写,只是对应于某些字段内的单个词组上,而非针对整个字段。对于一些常用的命名,如金额-AMT、数据-NUM、非/不-UN、代码-CD、标识-FLAG等;对于一些业务专业性的,根据业务含义及其可能固有的简写进行参考命名。所以,命名可分为常用名词缩写、DW专有名词缩写及业务相关专有名词缩写三部分。

在数据仓库建设过程中,可以考虑专门人员负责字段、表等命名的专业化、规范化工作;如同代码统一工作一样,专人负责。

二、维度模型明细的层建模设计

在数据仓库整合层与DM层之间,一般会有一个过渡层,叫做维度标签明细层。这一层的作用是在数据整合层与DM层之间起一个过滤作用,使范式建模的数据到维度模型之前有一个缓冲。这一层主要是根据整合层的数据和下游报表的业务需求,进行类维度建模。

维度标签明细层,主要包含如下一些部分,最细粒度的主键、下游报表需要展现的维度、数量金额型的度量、报表指标等的一些汇总性指标(打标签)、报表筛选时用到的过滤字段及下钻到明细要展示的属性字段等等。包含这些字段列表的明细层事实表,结合对应的维度表满足下游报表的数据需求。

汇总性的一些指标,并不是一个指标对应一个标签;而是尽可能将其分的更细。如果一些指标可以分成两部分,那么这个指标就对应用两个标签标记。这样做的好处是,便于维度标签明细层的扩展,便于整个模型的扩展。因为这一层设计的目的不是在于支持一张报表,而是支持某一类报表。对于以后上的一些报表或应用中,有可能只用到这个指标的一部分,那么做一个总体性的标签就无法使用。

在这一层中,对于可以由本层计算得到的冗余性指标字段,也不需要打标签。可以在集市汇总层直接根据其他字段计算得到。

上面提到,维度标签明细层的设计是为某一类报表,而非针对某一个报表。就是将同一业务主题下,相同的粒度及所有可能用到的维度进行整合设计。

考虑到数据的性能,标签值应该用(0,1)表示,而不能将不符便条件的置空。

三、集市高度汇总层设计

集市高度汇总层是从维度标签明细层根据具体的报表进行汇总而得;集市高度汇总层一个汇总模型对应一个报表。

集市高度汇总层模型主要包含如下内容:对应的维度、对应的指标及汇总时可能用到的过滤条件字段报表的下钻明细字段,应从维度标签明细层取数据

对于计算同比、环比、清理率等问题,因为要同历史的快照进行比对,所以要根据具体的情况在集市汇总层添加一些月度、年度等汇总快照表。

四、其他的一些思考

其实,在维度度明细层和高度汇总层之间也可以加一个中度汇总层,用来计算从维度明细层到集市汇总层不能一次计算出的复合指标,其目的也就是用空间换取性能。模型架构从来就没有定论,伟大如Bill Inmon和Ralph Kimball者,都有针锋相对的结论;所以,如何设计、采用几层架构,从来就是一个见仁见智的问题,要结合具体情况。模型设计师需要有强大的理解能力、全局掌控能力及灵活的分析能力,每一点都很重要。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 07:59:37

关于命名规范、维度明细层及集市汇总层设计的思考的相关文章

JAVA 增删改查接口命名规范(dao层与 service 层

开发时,有很多规范,这里写的是命名规范. Dao 接口命名 insert batchInsert selectOne selectById count selectList update deleteById Service 接口命名 add findById findByXXX findXXXList modify remove 原文地址:https://www.cnblogs.com/asplover/p/12209046.html

触发器使用教程和命名规范

目  录 触发器使用教程和命名规范 1 1,触发器简介 1 2,触发器示例 2 3,触发器语法和功能 3 4,例一:行级触发器之一 4 5,例二:行级触发器之二 4 6,例三:INSTEAD OF触发器 6 7,例四:语句级触发器之一 8 8,例五:语句级触发器之二 9 9,例六:用包封装触发器代码 10 10,触发器命名规范 11 1,触发器简介 触发器(Trigger)是数据库对象的一种,编码方式类似存储过程,与某张表(Table)相关联,当有DML语句对表进行操作时,可以引起触发器的执 行

Android 你不可不看的命名规范

标识符命名法最要有四种: Camel(骆驼)命名法:除首单词外,其余所有单词的第一个字母大写,如:fooBar; Pascal命名法:所有单词的第一个字母大写,如:FooBar: 下划线命名法:单词与单词间用下划线做间隔,如:foo_bar; 匈牙利命名法:广泛应用于微软编程环境中,在以Pascal命名法的变量,首字母小写说明该变量的类型. 量的取名方式为:scope_ prefix_qualifier 范围前缀,类型前缀,限定词,如:g_foo_bar; 安卓App层开发主要是Java语言,所

Android开发必备:命名规范

标识符命名法最要有四种: Camel(骆驼)命名法:除首单词外,其余所有单词的第一个字母大写,如:fooBar; Pascal命名法:所有单词的第一个字母大写,如:FooBar: 下划线命名法:单词与单词间用下划线做间隔,如:foo_bar; 匈牙利命名法:广泛应用于微软编程环境中,在以Pascal命名法的变量,首字母小写说明该变量的类型. 量的取名方式为:scope_ prefix_qualifier 范围前缀,类型前缀,限定词,如:g_foo_bar; 安卓App层开发主要是Java语言,所

java 标示符 和命名规范

在java语言中, 其标识符的命名规范. 1> 标识符由大小写字母, 下划线, 数字, $符号组成.   2> 开头可以是大小写字母, 下划线, 和$符号.(数字不能开头)   3> 标识符长度没有限制   4> 标识符不能是关键子和保留字   *> 标识符的命名最好能反映出其作用   *> java语言对字母的大小写有严格的要求. *> 所有自定义标识符需全部遵循标识符的命名规范. 变量: 1> 如果是单个单词, 单词全部字母小写. 如:int count

CSS命名规范参考及书写注意事项

CSS书写顺序 *{ /*显示属性*/ display position float clear cursor - /*盒模型*/ margin padding width height /*排版*/ vertical-align white-space text-decoration text-align - /*文字*/ color font content /*边框背景 为什么要把 boder和background放在最后的原因是修改的频率会较之前的频繁,放在最后查看起来方便,哈哈.*/ 

这次一定理清晰ThinkPHP之中的模型、数据库之间命名规范

ServiceSiteModel.class.php 这个模型操控的数据库是service_site表: 1 <?php 2 namespace Admin\Model; 3 use Think\Model; 4 class ServiceSiteModel extends Model { 5 6 private $page = ""; 7 8 private $countNum = ""; 9 10 public function getList($page

Android 开发 命名规范(基础回顾)

标识符命名法标识符命名法最要有四种: 1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写. 2 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写 3 下划线命名法:单词与单词间用下划线做间隔. 4 匈牙利命名法:广泛应用于微软编程环境中,在以Pascal命名法的变量前附加小写序列说明该变量的类型. 量的取名方式为:<scope_> + <prefix_> + <qualifier>范围前缀,类型前缀,限定词.

java开发命名规范(转载)

java开发命名规范 使用前注意事项: 1.  由于Java面向对象编程的特性, 在命名时应尽量选择名词 2.  驼峰命名法(Camel-Case): 当变量名或函式名是由一个或多个单字连结在一起,而构成的唯一识别字时,首字母以小写开头,每个单词首字母大写(第一个单词除外). 如:myFirstName 一 包名的书写规范 (Package) 推荐使用公司或机构的顶级域名为包名的前缀,目的是保证各公司/机构内所使用的包名的唯一性.包名全部为小写字母,且具有实际的区分意义. 1.1 一般要求 1.