维度建模技术概述

1.维度模型设计过程

  1. 确定业务过程
    业务过程是组织完成的操作型活动,例如,获得订单、处理保险索赔、学生课程注册或每个月每个账单的快照等。业务过程事件建立或获取性能度量,并转换为事实表中的事实。多数事实表关注某一业务过程的结果。过程的选择是非常重要的,因为过程定义了特定的设计目标以及对粒度、维度、事实的定义。每个业务过程对应企业数据仓库总线矩阵的一行。
  2. 声明粒度
    声明粒度是维度设计的重要步骤。粒度用于确定某一事实表中的行表示什么。粒度声明是设计必须履行的合同。在选择维度或事实前必须声明粒度,因为每个候选维度或事实必须与定义的粒度保持一致。在所有维度设计中强制实行一致性是保证BI应用性能和易用性的关键。在从给定的业务过程获取数据时,原子粒度是最低级别的粒度。我们强烈建议从关注原子级别粒度数据开始设计,因为原子粒度数据能够承受无法预期的用户查询。上卷汇总粒度对性能调整来说非常重要,但这样的粒度往往要猜测业务公共问题。针对不同的事实表粒度,要建立不同的物理表,在同一事实表中不要混用多种不同的粒度。
  3. 确认维度
    维度提供围绕某一业务过程事件所涉及的“谁、什么、何处、何时、为什么、如何”等背景。维度表包含BI应用所需要的用于过滤及分类事实的描述性属性。牢牢掌握事实表的粒度,就能够将所有可能存在的维度区分开。当与给定事实表行关联时,任何情况下都应使维度保持单一值。维度表有时被称为数据仓库的“灵魂”,因为维度表包含确保DW/BI系统能够被用作业务分析的入口和描述性标识。主要的工作都放在数据管理与维度表的开发方面,因为它们是用户BI经验的驱动者。
  4. 确认事实
    事实涉及来自业务过程事件的度量,基本上都是以数量值表示。一个事实表行与按照事实表粒度描述的度量事件之间存在一对一关系,因此事实表对应一个物理可观察的事件。在事实表内,所有事实只允许与声明的粒度保持一致。例如,在零售事务中,销售产品的数量与其总额是良好的事实,然而商店经理的工资不允许存在于零售事务中。
扩展维度模型

当事实与存在的事实表粒度一致时,可以创建新列。
通过建立新的外键列,可以将维度关联到已经存在的事实表上,前提是维度列与事实表粒度保持一致。
可以在维度表上通过建立新列添加属性。
可以使事实表的粒度更原子化,方法是在维度表上增加属性,然后以更细的粒度重置事实表,小心保存事实表及维度表的列名。

2.事实表技术基础

发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。从最低的粒度级别来看,事实表行对应一个度量事件,反之亦然。因此,事实表的设计完全依赖,于物理活动,不受可能产生的最终报表的影响。除数字度量外,事实表包含外键,用于关联与之相关的维度,也包含可选的退化维度健和日期/时间戳。查询请求的主要目标是基于事实表开展计算和聚集操作。

  1. 可加 半可加 不可加事实
  2. 事实表中空值的处理
  3. 一致性事实
  4. 事务事实表
  5. 周期快照事实表
  6. 累积快照事实表
  7. 无事实的事实表
  8. 聚集事实表或OLAP多维数据库
  9. 合并事实表

3.维度表技术基础

每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的描述环境应与事实表行完全对应。维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。操作代码与指示器可作为属性对待,最强有力的维度属性采用冗长的描述填充。维度表属性是查询及BI应用的约束和分组定义的主要目标。报表的描述性标识通常是维度表属性领域值。

  1. 维度代理键:这是一个难点
  2. 自然键 持久键
  3. 下钻:group by
  4. 维度退化
  5. 非规范化扁平维度
  6. 多层次维度
  7. 文档属性的标识和指示器
  8. 维度表中的空值属性:使用特殊字符替代
  9. 日历日期维度:注意可作为代理键
  10. 扮演角色的维度
  11. 杂项维度
  12. 雪花维度
  13. 支架维度
    维度可包含对其他维度的引用。例如,银行账户维度可以引用表示开户日期的维度。,这些被引用的辅助维度称为支架维度。支架维度可以使用,但应该尽量少用。多数情况下,维度之间的关联应该由事实表来实现。在事实表中通过两个维度的不同外键相关联。

上面的知识在维度模型这一块已经写过了,不再摘要了

4.一致性维度集成

  1. 一致性维度
    当不同的维度表的属性具有相同列名和领域内容时,称维度表具有一致性。利用一致性维度属性与每个事实表关联,可将来自不同事实表的信息合并到同一报表中。当一致性属性被用作行头,就是说,用作SQL查询中的分组列时,来自不同事实表的结果可以排列到跨钻报表的同一行中。以上实现是集成企业DW/BI系统的基础。一致性维度一旦在与业务数据管理方共同定义后,就可以被所有事实表重用。该方法可获得分析一致性并减少未来开发的开销,因为不需要重新创建。
  2. 缩减维度
    缩减维度是一种一致性维度,由基本维度的列与(或)行的子集构成。当构建聚集事实表时需要缩减上卷维度。当商业过程自然地获取粒度级别较高的数据时,也需要缩减维度,例如按某个月和品牌进行的预测(不需要与销售数据关联的更原子级别的数据和产品)。另外一种情况下,也就是当两个维度具有同样粒度级别的细节数据,但其中一个仅表示行的部分子集时,也需要一致性维度子集。
  3. 跨表钻取(?)
    简单地说,跨表钻取意思是当每个查询的行头包含相同的一致性属性时,使不同的查询能够针对两个或更多的事实表进行查询。来自两个查询的回答集合将针对公共维度属性行头,通过执行排序-融合操作实现排列。BI工具提供商对这些功能有多种不同的命名方法,包括编织和多遍查询等。
  4. 价值链
    价值链用于区分组织中主要业务过程的自然流程。例如,销售商的价值链可能包括购买、库存、零售额等。一般的分类账价值链可能包括预算编制、承付款项、付款等。操作型源系统通常为价值链上的每个步骤建立事务或快照。因为每个过程在特定时间间隔,采用特定的粒度和维度建立唯一的度量,所以每个过程通常至少建立一个原子事实表。
  5. 企业数据仓库总体矩阵
    企业数据仓库总线矩阵是用于设计并与企业数据仓库总线架构交互的基本工具。矩阵的行表示业务过程,列表示维度。矩阵中的点表示维度与给定的业务过程是否存在关联关系。设计小组分析每一行,用于测试是否为业务过程定义好相关的候选维度,同时也能分析每个列,考虑某一维度需要跨多个业务过程并保持一致性。除技术设计细节外,当设计小组实现矩阵中的某行时,总线矩阵还可用作输入帮助确定优先处理DW/BI项目过程管理。
  6. 机会/利益相关方矩阵
    在确定了企业数据仓库总线矩阵行之后,可以通过替换包含业务功能(例如,市场、销·售、财务等)的维度列规划不同的矩阵。通过确定矩阵点以表示哪些业务功能与哪些业务过程行相关。机会/利益相关方矩阵可用于区分哪些业务过程分组应该与过程中心行相关。

5.处理缓慢变化维度的基本方法

  1. 保留原样
  2. 重写
  3. 增加新行
  4. 增加新的属性
  5. 增加微型维度:适用于快速变化的维度

6.高级事实表技术

  1. 事实表代理键
  2. 蜈蚣事实表:如何建模来避免蜈蚣事实表(不要建立杂项维度)
  3. 属性或者事实的数字型(如何分类到事实表或者维度表)
  4. 日志/持续时间事实:为每个度量步骤储存一个时间延迟
    累积快照事实表获取多个过程里程碑,每个都包含日期外键并可能包含日期/时间戳。商业用户通常希望分析这些里程碑之间的滞后及延迟时间。有时这些延迟仅仅是日期上的差异,但某些情况下,延迟可能基于更复杂的业务规则。如果流水线包含大量的步骤,则可能存在上百个延迟。与其要求用户查询通过日期/时间戳或者日期维度外键计算每个可能存在的延迟,不如根据过程的开始时间点为每个度量步骤存储一个时间延迟。这样做可以方便地通过利用存储在事实表中的两个延迟,简单地用减法计算任何两个步骤间可能存在的延迟。
  5. 行/头事实表
  6. 分配的事实
  7. 利用分配建立利润与损失事实表
  8. 多种货币事实(统一货币维度)
  9. 多种度量事实单位(转化系数)
  10. 年月事实
    商业用户在事实表中通常需要年-日(year-to-date, YTD)值。很难反对单个请求,但是YTD请求很容易变换为“财务周期结束时的YTD"或者“财务周期日"。一种更可靠、可扩展的处理这些请求的方法是在BI应用或OLAP多维数据库中计算YTD矩阵,而不是在事实表中查出YTD事实。
  11. 多遍SQL避免事实表相连
    BI应用绝不应该跨事实表的外键处理两个事实表的连接操作。在关系数据库中,控制此类连接操作的回答集的基数是不可能的,将会产生不正确的结果。例如,如果两个事实表包含客户产品出货和返回,则这两个表不能按照客户和产品外键直接连接。要采用跨钻方式使用两个事实表,并对结果按照公共行头指针属性值,进行排序-融合操作以产生正确结果。
  12. 针对事实表的时间追踪
  13. 迟到的事实:查询维度表

7.高级维度技术

  1. 维度表相连
    维度表可以包含到其他维度表的引用。尽管此类关系可以采用支架维度建模实现,但某些情况下,存在于基本维度上的指向支架维度的外键的存在将导致基本维度爆炸性增长,因为支架表中的类型2变化强制需要在基本维度中对应处理类型2变化。如果通过将支架表中的外键放入事实表中而不是放置在基本维度表中,降低维度表之间的关联,则此类增长通常可被避免。该方法意味着发现维度之间的关联,仅需要通过遍历事实表,这是可以接受的,特别是当事实表示周期快照,其所有维度的所有键都会在每个报表周期内出现时。
  2. 多值维度与桥接表
  3. 随时间变化的桥接表
  4. 标签的时间序列行为
  5. 行为研究分组
  6. 聚集事实作为维度属性
  7. 动态值范围
  8. 文本注释维度
  9. 多时区
    为在多时区应用中获得通用标准时间以及本地时间,应该在受影响的事实表中设置又外键,用以连接两个不同角色的日期(和可能的当天时间(time-of-day))维度表。
  10. 度量类型事实
  11. 步骤维度
  12. 热交换维度
  13. 抽象通用维度
  14. 审计维度
  15. 最后产出的维度

8.特殊目的模式

  1. 异构产品的超类或子类(?)
    金融服务与其他商业通常提供不同业务类型的广泛的产品。例如,零售银行可以提供许多不同类型的账目,从支票账户到抵押贷款到商业贷款,但是所有这些都是账户的实例。试图建立单一的、固定的事实表,将所有可能的事实都包含在内,联系维度表包含所有不同产品的属性,是不会成功的,因为存在大量的不兼容事实和属性。解决方案是建立单一的超类事实表,该事实表遍历所有账户类型的事实表(以及包含公共属性的超类维度表),然后系统化地为不同子类建立不同的事实表(与维度表关联)。超类与子类事实表也被称为核心或自定义事实表。
  2. 实时事实表
  3. 错误事件模式
    数据仓库中数据质量的管理需要一个综合性系统,管理数据质量通过屏幕或过滤器来实现,用于测试从源系统到BI平台的数据。当数据质量屏幕检测到错误时,该事件将被记,求在特殊的维度模式中,该维度模式仅能被ETL后端处理系统处理。这一模式包含错误事件事实表,其粒度为单独错误事件和相关错误事件详细事实表,相关错误事件详细事实表粒度为参与错误事件的每个表中的列。

你可能感兴趣的:(维度建模技术概述)