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建模参考规范的更多相关文章
- Oracle的静默安装 升级和卸载 参考规范
Oracle的静默安装 升级和卸载 参考规范 20180912 V1 一.Oracle的安装 Oracle产品的三种安装方式分别为: 1.图形化(Java向导)安装引导 2.使用应答文件静默安装 3. ...
- iOS编码规范参考
目录 注释 1.1 多行注释 1.2 单行注释 1.3 函数的注释 命名 2.1 常量的命名 2.2 函数的命名 2.3 变量的命名 2.3.1 成员变量 2.3.2 公 ...
- Hive 建模
date: 2020-05-24 17:55:00 updated: 2020-06-15 11:19:00 Hive 建模 1. 存储格式 textFile sequenceFile:一种Hadoo ...
- Java Script 编码规范【转】
Java Script 编码规范 以下文档大多来自: Google JavaScript 编码规范指南 Idiomatic 风格 参考规范 ECMAScript 5.1 注解版 EcmaScript ...
- starUML 建模
1. starUML 序列图建模 参考: [1]. starUML 序列图建模. http://blog.csdn.net/u013474104/article/details/43818691
- Objective-C 代码规范(Code Style)
我们写出来的代码会给很多人看,为了使代码清晰简洁,方便阅读理解,都会统一遵从一定的代码规范,Objective-C同样如此. 主要参考规范: 1.Google Objective-C Style Gu ...
- OC 代码规范
我们写出来的代码会给很多人看,为了使代码清晰简洁,方便阅读理解,都会统一遵从一定的代码规范,Objective-C同样如此. 主要参考规范: 1. Google Objective-C Sty ...
- 要想成为前端大神,那些你不得不知晓的web前端命名规范。
一.Web语义化 1.1 H5的语义化 对于经验资深的前端er,在给web布局时,相信都会很注重标签和命名的规范.尤其是随着html5的普及发展,更是把web前端语义化推向一个新的台阶上.比如html ...
- Web Components 规范学习
最新的规范在这里:http://w3c.github.io/webcomponents/explainer/ 依据规范,有以下四个组成部分: Templates Custom Elements Sha ...
随机推荐
- 如何在WinForm中发送HTTP请求
如何在WinForm中请求发送HTTP 手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法 手工发送HTTP的GET请 求: string strURL = &q ...
- Entity Framework 6 执行Linq to Entities异常"p__linq__1 : String truncation: max=0, len=2, value='测试'"
场景再现 我需要查询公司名称包含给定字符串的公司,于是我写了下面的测试小例子: var condition = "测试"; var query = from b in db.Com ...
- ASP.NET使用NPOI加载Excel模板并导出下载
1.为什么要使用NPOI导出Excel? 一.解决传统操作Excel遇到的问题: 如果是.NET,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导 ...
- LeetCode123:Best Time to Buy and Sell Stock III
题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...
- Tigase数据库结构(1)
Tigase数据库有很多张表,其中最主要的是3张表:tig_users,tig_nodes和tig_pairs. 1.tig_users tig_users存储用户信息,有uid(主键,用户ID),u ...
- EL表达式之sessionScope
EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以 $ ...
- android控制系统音量
body_sb=(SeekBar)root.findViewById(R.id.body_sb);audioManager=(AudioManager)getActivity().getSystemS ...
- 使用CTE解决复杂查询的问题
最近,同事需要从数个表中查询用户的业务和报告数据,写了一个SQL语句,查询比较慢: Select S.Name, S.AccountantCode, ( Select COUNT(*) from ( ...
- Linux学习笔记15-YUM安装
rpm软件包缺点:需要手工解决软件包的依赖关系.使用YUM可解决该问题. YUM(Yellodog Updater, Modified)是一个RPM前端程序,主要目的是设计用来自动解决RPM的依赖关系 ...
- 【GOF23设计模式】观察者模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_观察者模式.广播机制.消息订阅.网络游戏对战原理 package com.test.observer; import ja ...