交易事实表、周期快照事实表和累积快照事实表

在数据仓库领域有一个概念叫Transaction
fact table,中文一般翻译为“事务事实表”。事务事实表是维度建模的数据仓库中三种基本类型事实表中的一种,另外两种分别是周期快照事实表和累积快照事实表。

事务事实表与周期快照事实表、累积快照事实表使用相同的一致性维度,但是它们在描述业务事实方面是有着非常大的差异的。

事务事实表记录的事务层面的事实,保存的是最原子的数据,也称“原子事实表”。事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务一条记录。一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。

事务事实表的日期维度记录的是事务发生的日期,它记录的事实是事务活动的内容。用户可以通过事务事实表对事务行为进行特别详细的分析。

通过事务事实表,还可以建立聚集事实表,为用户提供高性能的分析。

2) 在数据仓库领域有一个概念叫Periodic snapshot fact table,中文一般翻译为“周期快照事实表”。

周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年等等。典型的例子如销售日快照表、库存日快照表等。

周期快照事实表的粒度是每个时间段一条记录,通常比事务事实表的粒度要粗,是在事务事实表之上建立的聚集表。周期快照事实表的维度个数比事务事实表要少,但是记录的事实要比事务事实表多。

周期快照事实表的日期维度通常是记录时间段的终止日,记录的事实是这个时间段内一些聚集事实值。事实表的数据一旦插入即不能更改,其更新方式为增量更新。

3)在数据仓库领域有一个概念叫Accumulating snapshot fact table,中文一般翻译为“累积快照事实表”。

累积快照事实表和周期快照事实表有些相似之处,它们存储的都是事务数据的快照信息。但是它们之间也有着很大的不同,周期快照事实表记录的确定的周期的数据,而累积快照事实表记录的不确定的周期的数据。

累积快照事实表代表的是完全覆盖一个事务或产品的生命周期的时间跨度,它通常具有多个日期字段,用来记录整个生命周期中的关键时间点。另外,它还会有一个用于指示最后更新日期的附加日期字段。由于事实表中许多日期在首次加载时是不知道的,所以必须使用代理关键字来处理未定义的日期,而且这类事实表在数据加载完后,是可以对它进行更新的,来补充随后知道的日期信息。

举例来说,

订货日期

预定交货日期

实际发货日期

实际交货日期

数量

金额

运费


特点


交易事实


周期快照事实


累积快照事实


时间/时期


时间


时期


时间跨度较短的多个时点


粒度


每行代表一个交易事件


每行代表一个时间周期


每行代表一个业务周期


事实表加载


新增


新增


新增和修改


事实表更新


不更新


不更新


新事件产生时更新


时间维


业务日期


时期末


多个业务过程的完成日期


事实


交易活动


时间周期内的绩效


限定多个业务阶段内的绩效

时间: 2024-08-17 05:53:29

交易事实表、周期快照事实表和累积快照事实表的相关文章

HDFS的快照原理和Hbase基于快照的表修复

前一篇文章<HDFS和Hbase误删数据恢复>主要讲了hdfs的回收站机制和Hbase的删除策略.根据hbase的删除策略进行hbase的数据表恢复.本文主要介绍了hdfs的快照原理和根据快照进行的数据恢复. 1.Hdfs的快照原理 1.1 快照原理 Hdfs的快照(snapshot)是在某一时间点对指定文件系统拷贝,快照采用只读模式,可以对重要数据进行恢复.防止用户错误性的操作. 快照分两种:一种是建立文件系统的索引,每次更新文件不会真正的改变文件,而是新开辟一个空间用来保存更改的文件,一种

spool命令、创建一个表,创建并且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站

  1.spool命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创建表的权限,(2):有表空间 SQL> desc t4; 名称                                      是否为空? 类型 ----------------------------------------- -------- ------------------------

(转)数据库表分割技术浅析(水平分割/垂直分割/库表散列)

数据库表分割技术包含以下内容:水平分割/垂直分割/库表散列.接下来将对以上分割进行详细介绍,感兴趣的朋友可以了解下,对你日后维护数据库是很有帮助的 一.水平分割 什么是水平分割?打个比较形象的比喻,在食堂吃饭的时候,只有一个窗口,排队打饭的队伍太长了,都排成S型了,这时容易让排队的人产生焦虑情绪,容易产生混乱,这时一个管理者站出来,增加多个打饭窗口,把那条长长的队伍拦腰截断成几队.更形象一点的理解,你拿一把“手术刀”,把一个大表猛的切了几刀,结果这个大表,变成了几个小表. 水平分割根据某些条件将

報表開發常識普及之java報表工具的採購成本

一般情況下,java報表開發工具在一個開發項目中占的比例大概是 10% 左右,最近又有上升的趨勢,在總體統計項目中報表的開發量大的能佔到20%.下面的計算還是以10%為標準,每人月的成本按2.5萬計算. 以一個100萬的軟體開發項目為例,java報表開發工具的工作量佔總工作量的10% ,即開發成本為 10萬元.以2.5萬/人 來計算,這個項目需要用4個人月 來完成報表開發工作.在實際的項目中,這 10 萬元有以下幾種方式分攤: 集成商的代碼積累+程序員按項目定製 即純手工編寫代碼.這裡又分兩種情

利用反射处理多个表结构相同的数据的查询和数据库表的关联

最近做一个项目,需要对人口数据进行查询,但是人口数据分布在不同的街道表中,首先进行了数据表结构的统一,每个数据表以街道名开头,然后其他的名字都一样 前期将各个表中的字段也进行了统一 抽象出一张字典表 将街道编号和街道的名字的首字母连接起来,因为查询的时候是利用街道编号来的,这样可以根据街道标号拼出相对于的街道表的名字,(每个人口相关的表不止一张,因此需要统一):在查询过程中,将查询到的结构返回一个LIST,(不同的表在dao中当然对于不同的类啊,返回来再判断是哪一类),然后利用反射Field[]

oracle表连接——处理连接过程中另外一张表没有相关数据不显示问题

一个数据表基本上很难满足我们的查询要求,同时,将所有的数据都保存在一个表格中显然也不是一种好的数据库设计,为了避免数据的冗余,删除.更新异常,我们通常需要建立一张外键表,通过表连接,来获取我们自己想要得到的数据,所以在数据查找中,表连接是一个经常使用到的操作,下面我们来看看两个或者几个表有哪些方式是可以连接的. 经常遇到的问题:我们或许在表连接的过程中用于连接的另外一张表数据为空,导致某些数据得不到.我们要怎么解决呢????? 我们就先从介绍表连接的方式开始,在介绍的过程中,就会得到解决. 假如

LSQL,第一次执行表的select操作的时候,提示&quot;动态执行表不可访问,本会话的自动统计被禁止&quot;

使用PLSQL,第一次执行表的select操作的时候,提示"动态执行表不可访问,本会话的自动统计被禁止" 这种问题,一看就是当前连接用户没有对sys用户下的表v$session,v$sesstat,v$statname的select权限 解决此问题的方式就是授权: 以sysdba身份登录 grant select on v_$statname to username;grant select on v_$sesstat to username;grant select on v_$se

mysql修改表名,列名,列类型,添加表列,删除表列

alter table test rename test1; --修改表名 alter table test add column name varchar(10); --添加表列 alter table test drop column name; --删除表列 alter table test modify address char(10) --修改表列类型 ||alter table test change address address char(40) alter table test

TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。

TRUNCATE 删除表,无法回退.默认选择为整个表的内容,所以不能加条件.DELETE 删除表,可以回退.可以带where 条件.建议使用delete.但是TRUNCATE 删除表数据比delete要快. 使用TRUNCATE TABLE语句 TRUNCATE TABLE语句提供了一种删除表中所有记录的快速方法.因为TRUNCATE TABLE语句不记录日志,只记录整个数据页的释放操作,而DELETE语句对每一行修改都记录日志,所以使用TRUNCATE TABLE语句进行删除操作总是比没有指定