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

最新文章

  1. 转载:《TypeScript 中文入门教程》 8、函数
  2. Time crumbles things; everything grows old under the power of Time and is forgotten through the lapse of Time
  3. HTML5移动Web开发(九)——优化浏览器视口宽度设置
  4. 控制器层(Controllers)
  5. codevs 3143 二叉树的序遍历
  6. unity3d 扩展NGUI —— 限制UI点击响应间隔
  7. SSIS ->> Event Handler
  8. maven跳过单元测试
  9. QListWidget 删除选中项目
  10. PD生成oracle表名带引号解决方案
  11. ecostore搜索注意事项
  12. JavaScript 插件的书页翻转效果
  13. python对象的基本操作代码
  14. 浏览器仿EXCEL表格插件 版本更新 - 智表ZCELL产品V1.3.2更新
  15. js···元素的属性
  16. Java 多线程 并发和并行
  17. BZOJ1855 股票交易 单调队列优化 DP
  18. iOS-项目开发1-Block
  19. 上拉刷新和下拉刷新的两种方法(包括使用第三方库MJRefresh)
  20. [UE4]把工程升级到最新版本

热门文章

  1. MEF入门之不求甚解,但力求简单能讲明白(五)
  2. html5学习笔记6-- canvas
  3. 孙鑫MFC学习笔记14:网络编程
  4. Objective-c 动画
  5. 内存溢出与jvm参数配置 ***最爱那水货
  6. opencart 后台导航菜单添加步骤
  7. 【2016年特别福利】史上最全CSS学习资料大全
  8. 一款很实用的jQuery鼠标悬浮有动画效果的响应式瀑布流插件
  9. IKONS – 赞!264 款手工打造的免费矢量图标
  10. Hexo - 快速,轻量,强大的 Node.js 博客框架