BIEE建模参考规范

注:本文基于网上盛传的“BIEE建模黄金法则”,并做了更为细致的讲解,以及修改。

物理层

1、  在可能的情况下,配置你的连接池使用本地驱动来连接物理数据库。例如,使用OCI而不是ODBC来连接Oracle数据库

2、  当数据模型是星型时,为物理表建别名(以Dim_,Fact_作为前缀),并根据需要添加描述性后缀。

例如:在数据仓库中,我们有一张W_STATUS_D字典表用于存储各种事务状态(活动状态、合同状态、客户状态),那我们应该为不同的状态类别创建相应的别名表,如:

Dim_W_STATUS_D_Activity_Status

Dim_W_STATUS_D_Contact_Status

Dim_W_STATUS_D_Customer_Status

 

描述名称部分应该按每个单词首字母大写的方式(如果是英文名称)

Tips:为什么要这样做?这样看起来更为复杂,但是实际上会使逻辑更为清晰,通过在逻辑层对不同的表添加不同的过滤条件,使得最终每张逻辑表只包含所对应的状态值,那我们在Answer中使用的时候就不必进行过滤了。

另外,通过建立别名,我们可以避免在物理层出现环状连接关系;更为重要的是,我们可以通过建立别名来实现角色扮演维!

3、  尽量避免视图的使用,视图有可能会带来性能问题。(除非你非常熟悉视图合并的原理)

4、  为初始化块建立单独的连接池,而不要使用第一个连接池(从上到下)。因为查询使用的是第一个连接池,当已有查询用尽了连接池的所有连接时,如果此时新用户登录需要初始化会话变量,就会因为没有可用的连接而等待,进而造成用户登录缓慢。(这也是为什么BIEE 11g默认情况下不能将第一个连接池用于初始化块的原因,这不是最佳实践!)

 

逻辑层

1、命名规范

方案一:所有的逻辑表都应该以Dim -,Fact –开头,中间跟业务主题或者模块名(可选),最后是表名,例如:

Fact - CRM – Revenue

Fact - HR – Payroll

Dim – Agreement

方案二:所有的逻辑表以F+编号,D+编号为前缀,然后空一格跟表描述;另外维度以H+编号为前缀,然后空一格跟维度描述;例如:

F0 Sales Base Measures

D0 Time

H1 Products

此种方案主要是为了控制表的排列顺序

另外,所有的描述名称部分应该按每个单词首字母大写加空格分隔的方式(如果是英文名称)

2、所有的物理层的列名称都不应该出现在逻辑层。逻辑的命名必须是“面向业务”的。例如使用Revenue而不是DOLLARS,同样应该遵循每个单词首字母大写加空格分隔的方式

下面给出一些常见的命名方式:

关于数量的: # of Assets (一般其聚合规则为count或者 count distinct的)

百分比的: % Contacted

时间序列的:Quarter Ago Average Order Size

另外,同一张事实表中的指标应该按类别进行排列,并添加分隔符(添加逻辑字段,修改其名称),如下图所示:

还可以通过设置不同的图标来标识不同类别指标,如下图所示:

计算器图标的是派生指标、其它的是普通指标。

3、物理主键和代理键不应该出现在业务模型层。

4、维度逻辑表必须要指定逻辑键。这个逻辑健应该是面向业务的,比如应该是“Employee Login”而不是“EMPLOYEE_PK”。

5、维度逻辑表必须仅仅包含维度属性,他们永远不应该包含任何度量列(有聚合规则)

Tips:如果需要在维度上做计算,如“天数”,则应将该维表为LTS建立事实表,比较常见的就是“时间事实表”

5、  事实逻辑表不应该指定逻辑键。

6、  在事实逻辑表中,每一列都是度量列,同时要指定聚合规则。

Tips:对应事实表上的属性字段,比如退化维,则应该以该事实表为LTS建立相应的逻辑维表

7、业务模型应该仅包含逻辑星型,不应该是雪花型。

注意:这里说的是逻辑星型,物理上有可能是雪花型。通过设置多LTS我们总能把雪花转换为逻辑星型

7、  每一个维度逻辑表都应该有对应的维度层次。

8、  每一个维度层级都设置适当的元素个数。一般要指定子层级的要比父层级的元素个数多。

注意:元素个数不需要精确,只要比例合适即可。另外可以使用“估计级别”功能自动来填写该值。

9、不要将所有度量合并到单独的一个事实逻辑表。例如,你应该将“Forecast Sales”和“Actual Sales”度量放到两个逻辑表中---“Fact_Sales”和“Fact_Forecast”

 

 

展现层

1、  主题应该按照业务进行划分,比如销售、采购、库存

2、  当你有多个主题区域时,在每个主题区域以相同的顺序列出这些公用的维度

3、  展示层的表的名字不要以Dim或Fact开头了。如果主题区域中的表是直接从逻辑层拖过来的话,要移除该前缀。

4、  时间维度表列在每一个主题区域的第一个位置。包含事实的展现层表应该列在底部,同时展现表应该被称作Facts,并可以根据需要划分成不同类别的事实,如Base Facts、Calculated Facts,然后做成层结构。如下图所示:

4、绝不应该出现用户从主题区域中选取的对象没有逻辑关联。如果有任何从同一主题区域中选择的对象无法共存,那么一定是你的主题区域设计不正确。

BIEE建模参考规范的更多相关文章

  1. Oracle的静默安装 升级和卸载 参考规范

    Oracle的静默安装 升级和卸载 参考规范 20180912 V1 一.Oracle的安装 Oracle产品的三种安装方式分别为: 1.图形化(Java向导)安装引导 2.使用应答文件静默安装 3. ...

  2. iOS编码规范参考

    目录      注释 1.1  多行注释 1.2  单行注释 1.3  函数的注释   命名 2.1  常量的命名 2.2  函数的命名 2.3  变量的命名 2.3.1  成员变量 2.3.2  公 ...

  3. Hive 建模

    date: 2020-05-24 17:55:00 updated: 2020-06-15 11:19:00 Hive 建模 1. 存储格式 textFile sequenceFile:一种Hadoo ...

  4. Java Script 编码规范【转】

    Java Script 编码规范 以下文档大多来自: Google JavaScript 编码规范指南 Idiomatic 风格 参考规范 ECMAScript 5.1 注解版 EcmaScript ...

  5. starUML 建模

    1. starUML 序列图建模 参考: [1]. starUML 序列图建模.  http://blog.csdn.net/u013474104/article/details/43818691

  6. Objective-C 代码规范(Code Style)

    我们写出来的代码会给很多人看,为了使代码清晰简洁,方便阅读理解,都会统一遵从一定的代码规范,Objective-C同样如此. 主要参考规范: 1.Google Objective-C Style Gu ...

  7. OC 代码规范

    我们写出来的代码会给很多人看,为了使代码清晰简洁,方便阅读理解,都会统一遵从一定的代码规范,Objective-C同样如此.   主要参考规范:   1. Google Objective-C Sty ...

  8. 要想成为前端大神,那些你不得不知晓的web前端命名规范。

    一.Web语义化 1.1 H5的语义化 对于经验资深的前端er,在给web布局时,相信都会很注重标签和命名的规范.尤其是随着html5的普及发展,更是把web前端语义化推向一个新的台阶上.比如html ...

  9. Web Components 规范学习

    最新的规范在这里:http://w3c.github.io/webcomponents/explainer/ 依据规范,有以下四个组成部分: Templates Custom Elements Sha ...

随机推荐

  1. jQuery 3.0正式发布

    jQuery 基金会刚刚发布了该 JavaScript 框架的 3.0 版本,并且首次抛弃了对老旧的 IE 浏览器的支持.jQuery 3.0 的工作始于 2014 年 10 月,其最初目标是在 2. ...

  2. 分析.Net里线程同步机制

    我 们知道并行编程模型两种:一种是基于消息式的,第二种是基于共享内存式的. 前段时间项目中遇到了第二种 使用多线程开发并行程序共享资源的问题 ,今天以实际案例出发对.net里的共享内存式的线程同步机制 ...

  3. FAILED BINDER TRANSACTION

    最近开发Widget,要在Widget上显示图片,出现了FAILED BINDER TRANSACTION错误,后来才发现是因为图片太大了.Widget使用的是RemoteViews,而Intent传 ...

  4. 第 17 章 CSS 边框与背景[上]

    学习要点: 1.声明边框 2.边框样式 3.圆角边框 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 边框和背景,通过边框和背景的样式设置,给元素增加更丰富的外观. 一.声明边框 边框的声明有 ...

  5. android控制系统音量

    body_sb=(SeekBar)root.findViewById(R.id.body_sb);audioManager=(AudioManager)getActivity().getSystemS ...

  6. [小北De编程手记] : Lesson 02 玩转 xUnit.Net 之 基本UnitTest & 数据驱动

    关于<玩转 xUnit.Net>系列文章,我想跟大家分享的不是简单的运行一下测试用例或是介绍一下标签怎么使用(这样的文章网上很多).上一篇<Lesson 01 玩转 xUnit.Ne ...

  7. 定时任务服务 CronService使用说明

    CronServiceInstaller.exe  部署安装程序 1.在打开该程序前务必设置为管理员运行 2.点击注册服务 3.检查服务是否开启,点击 services.msc, 打开系统服务列表 4 ...

  8. 如何在window Form中使用Font Awesome?

    随着技术的发展,web上以前的图片按钮现在逐步换成了图标字体,这些图标字体是矢量的,矢量图意味着每个图标都能在所有大小的屏幕上完美呈现,可以随时更改大小和颜色,而且不失真,真心给人一种“高大上”的感觉 ...

  9. 使用 SVG 动画实现弹性的页面元素效果

    Codrops 分享了一些给SVG元素加上弹性动画的灵感.实现的思路是把一个SVG元素整合成一个组件,然后从一个路径弹性动画到另一个.这种效果可以应用到像菜单,按钮或其它元素,使得交互更有趣,看起更原 ...

  10. 充满想象力的 JavaScript 物理和重力实验

    在这个列表中挑选了9个物理和重力实验,用来展示 Javascript 的强大.几年前,所有这些实验都必须使用 Java 或 Flash 才能做.在下面这些惊人的例子中,就个人而言,我比较喜欢仿真布料的 ...