构建数仓基本技术知识(二) ——————————DW/BI高级技术知识

DW/BI高级技术知识


  高级事实表技术

    事实表代理键

      代理键可以用作所有维度表的主键。还可以使用单列代理事实键,不与任何维度关联的事实表代理键,是在ETL加载过程中顺次分配,可用于作为事实表的唯一主键列;ETL中,用作事实表的直接标识符,不必查询多个维度;允许将事实表更新操作分解为风险更小的插入和删除操作。

    蜈蚣事实表

      一些设计者在对一层次的每层建立不同的规范化维度,例如日期维度、月份维度、季度维度、和年维度等,并将所有外键包含在一个事实表中。这就产生了蜈蚣事实表,包含与维度相关的多个维度。所有这些固定深度的、多对一的层次化关联都应该回到最细致的粒度。

    属性或事实的数字值

      设计者有时会遇到数字值,难以将这些数字值分类为维度表还是事实表。典型的实例就是产品的标准价格。如果该数字是以计算为目的,则可能属于事实表,如果该数字值主要用于分组或者过滤,则应当定义为维度属性。离散数字值用值范围属性进行表示,某些情况下,将这样的数字值既建模为维度又建模为事实属性是有效的一种解决方式。

    日志/持续时间事实

      累计快照事实表获取的多个过程,每一个都包含日期外键并可能包含时间戳。商业用户通常希望分析这些里程碑之间的滞后及延迟时间。

    多遍SQL避免事实表的连接

      BI应用绝不能够跨事实表的外键处理两个事实表之间的连接操作。在关系数据库中,控制此类连接的操作的回答集的基数是不可能的,会产生不正确的结果。比如,两个事实表包含客户产品出货和返回,这两个表不能按照客户和产品外键直接相连接。要采用跨钻方式使用两个事实表,并对结果按照公共分组属性值,进行操作产生结果。


  高级维度表技术

    维度表连接

      维度表可以包含到其他维度表的引用,在某些情况下,存在基本维度上的支架维度的外键的存在将导致基本维度爆炸性增长,如果将支架表中的外键放入事实表而不是放入基本维度表中,减低维度表之间的关联,这种情况就可以避免。这个方法意味着发现维度之间的关联,仅仅需要遍历事实表。

    多值维度和桥连接

      经典维度模式中,每个事实表关联的维度都有一个与事实表粒度一致的单一值。但是某些情况下,维度存在合理的多值。比如:病人接受了一次体检,可能会出现多个诊断。这种情况下,多值维度需要通过一组维度键通过桥接表使得一组中的每个诊断和事实表一行进行关联。

    随时间变化的多值桥接表

      多值桥接表可能会基于缓慢变化维度。比如,实现银行账户与单独客户的多对多关系的桥接表,通常必须基于该维度的账户和客户维度。为了防止账户和客户之间的不正确连接,桥接表必须包含有效期和截止日期,请求的应用必须约束桥接表,满足约束条件产生一致的快照。

    标签的时间序列行为

      数仓中所有的文本都是维度表中的描述文本。数挖客户聚类分析通常产生文本化的行为标签,可以用作区分周期。跨时间范围的客户行为度量称为由这些行为标签构成的一种序列,这种时间序列应该以位置属性被存储在客户维度中,构成完整的序列标签。

    聚集事实表作为维度属性

      用户对于基于聚集性能度量的客户维度感兴趣,例如,过滤去年或整个阶段所有花费超过一定数额的客户。选择聚集事实可以放入作为约束的目标维度中。维度睡醒表示增加聚集性能度量将增加ETL过程的工作,但是可以增加BI层的分析性能。

    动态值范围

      动态值范围由一系列的报表行头组成,这些报表行头为目标数字化实时定义了范围不断变化的集合。例如,一个银行的公共值范围报表包含带有标签的多个行。例如,从0到¥10的平账,此类报表是动态报表,每次查询都定义了特殊的行头,而不是在ETL过程中定义。行定义可以在小值范围维度表中实现,通过大于连接或小于连接与事实表连接。定义可以在SQL的case语句中,这种值范围维度方法或有更高的性能,特别是针对列数据库。

    多时区

      为了在多时区应用中获得通用标准时间以及本地时间,应该在受影响的事实表中设置双外键,泳衣连接两个不同角色的日期维度表。

    抽象通用维度

      有些人喜欢使用抽象通用维度。比如使用单一位置维度而不是关于商店,仓库和客户维度的嵌入式的地理属性。类似,人员维度包含雇员、客户和供应商行,因为尽管每种类型都包含不同的属性,但是他们都是人。在维度建模是应当避免使用这种维度。如果属性是通用的,例如地理州,应当将他们唯一标识区分商店所在州和客户所在州,最后将所有不同位置、人员、产品、放入单一无敌将产生大型的维度表。数据抽象可以用于ETL或者源系统,但是对查询性能有影响。

    审计维度

      当事实表行在ETL之后建立时,建立当时已知ETL过程的元数据的审计维度是一个很好的方法。简单的审计维度行可以包含一个或者多个数据质量的基本标识,记录数据处理的质量问题。


  特殊目的模式

    异构产品的超类和子类模式

      在银行中,有不用类型的账目,从支票到低压贷款到商业贷款,但是所有这些都是账户的实例,如果要建立单一、固定的事实表,将所有可能的事实都包含在内,联系维度表包含的所有不同产品的属性,是不会成功的,因为会存在大量的不兼容的事实。解决方法是建立单一的超类事实表,该事实表遍历所有的账户类型的事实表,然后系统化的为不同子类建立不同的事实表与维度表关联。

    实时事实表

      实时事实表需要比传统的夜间批处理过程更加频繁的被更新。许多技术可用于支持这一需求。采用什么技术需要考虑到BI层的数据库的能力。

猜你喜欢

转载自blog.csdn.net/flyinthesky111/article/details/90403345