非事实型事实表――factless fact table

在维度建模的数据仓库中,有一种事实表叫Factless Fact Table,中文一般翻译为“非事实型事实表”。在事实表中,通常会保存十个左右的维度外键和多个度量事实,度量事实是事实表的关键所在。在非事实型事实表中没有这些度量事实,只有多个维度外键。非事实型事实表通常用来跟踪一些事件或者说明某些活动的范围。下面举例来进行说明。

第一类非事实型事实表是用来跟踪事件的事实表。例如:学生注册事件,学校需要对学生按学期进行跟踪。维度表包括学期维度、课程维度、系维度、学生维度、注册专业维度和取得学分维度,而事实表是由这些维度的主键组成,事实只有注册数,并且恒为1。这样的事实表可以回答大量关于大学开课注册方面的问题,主要是回答各种情况下的注册数。

第二类非事实型事实表是用来说明某些活动范围的事实表。例如:促销范围事实表。通常销售事实表可以回答如促销商品的销售情况,但是对于那些没有销售出去的促销商品没法回答。这时,通过建立促销范围事实表,将商场需要促销的商品单独建立事实表保存。然后,通过这个促销范围事实表和销售事实表即可得出哪些促销商品没有销售出去。这样的促销范围事实表只是用来说明促销活动的范围,其中没有任何事实度量。

事实表――fact table

在维度建模的数据仓库中,事实表是指其中保存了大量业务度量数据的表。事实表中的度量值一般称为事实。在事实表中最有用的事实就是数字类型的事实和可加类型的事实。事实表的粒度决定了数据仓库中数据的详细程度。

一般来说,以粒度作为化分依据,主要有三种事实表,分别是事务粒度事实表(Transaction Grain Fact Table),周期快照粒度事实表(Periodic Snapshot Grain Fact Table)和累积快照粒度事实表(Accumulating Snapshot Grain Fact Table)。

事务粒度事实表中的一条记录代表了业务系统中的一个事件。事务出现以后,就会在事实中出现一条记录。事务粒度事实表也称为原子粒度。典型的例子是销售单分列项事实表。

周期快照粒度事实表用来记录有规律的,可预见时间间隔的业务累计数据。通常的时间间隔可以是每天、每周或者每月。典型的例子是库存日快照事实表。

累积快照事实表一般用来涵盖一个事务的生命周期内的不确定的时间跨度。典型的例子是KDT#2中描述的具有多个日期字段的发货事实表。

通常来说,事务和快照是建模中的两个非常重要的特点,将两者相结合可以使模型建立的更完整。

从用途的不同来说,事实表可以分为三类,分别是原子事实表,聚集事实表和合并事实表。

原子事实表(Atom Fact Table是保存最细粒度数据的事实表,也是数据仓库中保存原子信息的场所。

聚集事实表(Aggregated Fact Table是原子事实表上的汇总数据,也称为汇总事实表。即新建立一个事实表,它的维度表是比原维度表要少,或者某些维度表是原维度表的子集,如用月份维度表代替日期维度表;事实数据是相应事实的汇总,即求和或求平均值等。在做数据迁移时,当相关的维度数据和事实数据发生变化时,聚集事实表需要做相应的刷新。物化视图是实现聚集事实表的一种有效方式,可以设定刷新方式,具体功能由DBMS来实现。

退化维度――degenerate dimension

在维度建模的数据仓库中,有一种维度叫Degenerate Dimension,中文一般翻译为“退化维度”。这种退化维度一般都是事务的编号,如订单编号、发票编号等。这类编号需要保存到事实表中,但是不需要对应的维度表,所以称为退化维度。

退化维度是维度建模领域中的一个非常重要的概念,它对理解维度建模有着非常重要的作用,尤其是对维度建模的入门者。

退化维度经常会和其他一些维度一起组合成事实表的主键。在Kimball提出的维度建模中,事实表应该保存最细粒度的数据。所以对于象销售单这样的事实表来说,需要销售单编号和产品来共同作为主键,而不能用销售日期、商场、产品等用来分析的维度共同作为主键。

退化维度在分析中可以用来做分组使用。它可以将同一个事务中销售的产品集中在一起。

微型维度――minidimension

维度建模的数据仓库中,有一种维度叫minidimension,中文一般翻译成“微型维度”。微型维度的提出主要是为了解决快变超大维度(rapidly changing monster dimension)。

以客户维度举例来说,如果维度表中有数百万行记录或者还要多,而且这些记录中的字段又经常变化,这样的维度表一般称之为快变超大维度。对于快变超大维度,设计人员一般不会使用TYPE 2的缓慢变化维处理方法,因为大家都不愿意向本来就有几百万行的维度表中添加更多的行。

这时,有一项技术可以解决这个问题。解决的方法是,将分析频率比较高或者变化频率比较大的字段提取出来,建立一个单独的维度表。这个单独的维度表就是微型维度表。

微型维度表有自己的关键字,这个关键字和原客户维度表的关键字一起进入事实表。有时为了分析的方便,可以把微型维度的关键字的最新值作为外关键字进入客户维度表。这时一定要注意,这个外关键字必须做TYPE 1型处理。

在微型维度表中如果有像收入这样分布范围较广的属性时,应该将它分段处理。比如,存储¥31257.98这样过于分散的数值就不如存储¥30000-¥34999这样的范围。这样可以极大的减少微型维度中的记录数目,也给分析带来方便。

杂项维度――junk dimension

在维度建模的数据仓库中,有一种维度叫Junk Dimension,中文一般翻译为“杂项维度”。杂项维度是由操作系统中的指示符或者标志字段组合而成,一般不在一致性维度之列。

在操作系统中,我们定义好各种维度后,通常还会剩下一些在小范围内取离散值的指示符或者标志字段。例如:支付类型字段,包括现金和信用卡两种类型,在源系统中它们可能是维护在类型表中,也可能直接保存在交易表中。

一张事实表中可能会存在好几个类似的字段,如果作为事实存放在事实表中,会导致事实表占用空间过大;如果单独建立维度表,外键关联到事实表,会出现维度过多的情况;如果将这些字段删除,会有人不同意。

这时,我们通常的解决方案就是建立杂项维度,将这些字段建立到一个维度表中,在事实表中只需保存一个外键。几个字段的不同取值组成一条记录,生成代理键,存入维度表,并将该代理键保存入相应的事实表字段。建议不要直接使用所有的组合生成完整的杂项维度表,在抽取时遇到新的组合时生成相应记录即可。杂项维度的ETL过程比一般的维度略为复杂。

EDW DWM CONCEPT相关推荐

  1. 数据仓库中的ODS、EDW、DM等分层是什么?

    参考:数据仓库中的ODS.EDW.和DM层是什么?(系列3) (pmcaff.com) 数据仓库各层说明: 一.数据加载层:ETL(Extract-Transform-Load) 二.数据运营层:OD ...

  2. 概念艺术绘画学习教程 Schoolism – Foolproof Concept Painting with Airi Pan

    Schoolism--万无一失的概念绘画潘 大小解压后:3.19G 含课程素材文件 1920X1080 .mp4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 信息: 万无一失的概念绘画潘 本课 ...

  3. 【译文】 C#面向对象的基本概念 (Basic C# OOP Concept) 第一部分(类,对象,变量,方法,访问修饰符)...

    译文出处:http://www.codeproject.com/Articles/838365/Basic-Csharp-OOP-Concept 相关文档:http://files.cnblogs.c ...

  4. 机器学习应用方向(二)~概念漂移(concept drift)

    1. 概念漂移(concept drift) 背景:概念漂移指的是数据流中的潜在数据分布随时间发生不可预测的变化,使原有的分类器分类不准确或决策系统无法正确决策,常见于推荐系统.金融领域.决策等 Co ...

  5. CDS – One Concept, Two Flavors

    If you search the web or SCN for CDS, SAP's Core Data Services, you can easily find statements like& ...

  6. ​KDD 2019 | 用户视角看世界:腾讯提出ConcepT概念挖掘系统,助力推荐搜索

    来自腾讯PCG移动浏览器产品部和阿尔伯塔大学的研究者构建了ConcepT概念挖掘标记系统,其利用query搜索点击日志从用户视角提取不同的概念,以便提高对短文本(query)和长文章(document ...

  7. pyautogui 打包 运行 窗口_试试动态窗口管理器 dwm 吧

    以不到 2000 标准行的代码写就的 dwm,是一个速度极快而功能强大,且可高度定制的窗口管理器. -- Adam Šamalík(作者) 如果你崇尚效率和极简主义,并且正在为你的 Linux 桌面寻 ...

  8. Start DWM manually on Windows 7 and vista

    方法一: 1. 检查两处注册表项及键值是否与下列数值一致 HKEY-Current-User\Software\Microsoft\Windows\DWM\Composition 键值改为 1 HKE ...

  9. 机器学习之概念漂移-concept drift

    1. 概念漂移(concept drift) 背景:概念漂移指的是数据流中的潜在数据分布随时间发生不可预测的变化,使原有的分类器分类不准确或决策系统无法正确决策,常见于推荐系统.金融领域.决策等 Co ...

最新文章

  1. javaFX中解决填充(拉伸)问题
  2. 科大星云诗社动态20201215
  3. 温控窗帘系统制作文档
  4. 管道半双工通信程序linux,Linux进程间通信的几种方法-半双工管道,命名管道,消息队列...
  5. PHP--TP开发模式
  6. 基于Matlab的循环码实验报告,基于MATLAB的循环码实验报告
  7. 计算日期时间间隔,可计算情侣计算在一起的。精确到,天,时,分,秒(输入的日期距离现在有:819天19670小时1180221分钟70813262秒)
  8. Java中装箱与拆箱
  9. C# 使用Microsoft.Office.Interop将Excel、Word转换成PDF遇到的问题总结
  10. oledb vc访问mdb数据库_一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、postgres、SQLITE...
  11. Eclipse中,控制每行最大长度的提示线。
  12. 海量数据处理:经典实例分析
  13. 如何解决电脑时间同步出错?
  14. 用python对《三国演义》的人物出场进行统计
  15. uos系统桌面怎么没有计算机图标,UOS系统体验:启动、桌面和开始菜单
  16. 图像匹配—NCC算法,即归一化互相关匹配
  17. 轨道六根数的含义汇总
  18. Nat. Commun. | 可多层次预测多肽-蛋白质相互作用的深度学习框架
  19. Samsara v2.0 MIS数据流脚本编程 Demo
  20. McObject新版eXtremeDB v.8.0在E8存储上运行STAC基准测试创造了多个记录

热门文章

  1. 全网最全Linux学习路线!十一张原创思维导图涵盖日常全部命令(干货)
  2. 视频教程-AR增强现实_AR小精灵视频课程-Unity3D
  3. [SpringBoot教程] 上传文件大小超出默认限制
  4. 传感器 宽动态范围介绍
  5. Mybatis使用foreach批量插入Oracle提示命令未正确结束
  6. CAD螺纹lisp程序_CAD-LISP-程序
  7. 《大数据机器学习实践探索》 ---- 总目录
  8. 1. 大数据 机器学习 深度学习 推荐系统 学习路线
  9. 工作中,我们应该走捷径吗?
  10. 移动端和web端测试有什么区别