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

     

  • 相关阅读:
    C# 网络斗地主源码开源
    windows 10
    JAVA Eclipse Incorrect line ending found carriage return 怎么办
    JAVA Eclipse中如何简易的实现消息机制
    JAVA Eclipse中的Android程序如何使用线程
    JAVA Eclipse如何重新设置工作空间workspace
    JAVA Eclipse如何重命名包
    JAVA Eclipse如何修改Android程序名称
    JAVA Eclipse如何设置编程环境字体
    JAVA Eclipse如何设置点击按钮切换图片
  • 原文地址:https://www.cnblogs.com/lan-meng/p/6928729.html
Copyright © 2011-2022 走看看