文档章节

Factless Fact Table

我是彩笔
 我是彩笔
发布于 2015/04/15 14:20
字数 1235
阅读 276
收藏 0
点赞 0
评论 0

A factless fact table is a fact table that does not have any measures. It is essentially an intersection of dimensions. On the surface, a factless fact table does not make sense, since a fact table is, after all, about facts. However, there are situations where having this kind of relationship makes sense in data warehousing.

For example, think about a record of student attendance in classes. In this case, the fact table would consist of 3 dimensions: the student dimension, the time dimension, and the class dimension. This factless fact table would look like the following:

Factless Fact Table Example

The only measure that you can possibly attach to each combination is "1" to show the presence of that particular combination. However, adding a fact that always shows 1 is redundant because we can simply use the COUNT function in SQL to answer the same questions.

Factless fact tables offer the most flexibility in data warehouse design. For example, one can easily answer the following questions with this factless fact table:

  • How many students attended a particular class on a particular day?

  • How many classes on average does a student attend on a given day?

Without using a factless fact table, we will need two separate fact tables to answer the above two questions. With the above factless fact table, it becomes the only fact table that's needed.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以下内容转自 http://www.cnblogs.com/lijun4017/archive/2010/08/04/1792293.html

浅析非事实型事实表

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

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

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

以下内容转自 http://www.cnblogs.com/lijun4017/archive/2010/08/04/1792440.html

我们用非事实型事实表来记录维度之间的多对多关系,但是关系上没有数字或者文本的事实。非事实型事实表一般用来记录事件或者范围信息。常见的例子如:标识产品的促销范围;记录学生出席或者注册事件等。

在本TIP中我们用非事实型事实表来补充缓慢变化维的处理策略。

对于一个大型的B2C企业来说,会有上千万的客户。对于这种大型的客户表,需要跟踪客户的变化情况,我们可以采用TYPE 2的缓慢变化维策略来进行应对。例如,一个大的客户表,我们尽量减小TYPE 2生成的记录数,建立了四个微型维度,分别是客户信用属性、客户参数、市场倾向和客户详细地址。这样在交易粒度事实表中我们会保留客户相关信息的五个外键,这些外键关联到客户不同的信息。

同时,我们还应该支持客户的整体信息的访问。为了能方便访问客户的整体信息,我们可以建立另一个周期快照事实表,每天加载客户维度和其相关联的微型维度的关系。但是这样就需要每天保存上千万记录的快照,不是一个好的选择。

这时,我们可以考虑建立非事实型事实表来解决这个问题。我们可以建立一个事实表,其中只有客户维度和其对应微型维度的外键,当客户有TYPE 2变化时或者产生新的微型维度记录时,我们可以在这个事实表中插入一条记录。在这个事实表中还可以加入生效日期和失效日期,可以加一列用来标识是当前客户信息记录,可以加变化原因列


本文转载自:http://www.1keydata.com/datawarehousing/factless-fact-table.html

共有 人打赏支持
我是彩笔
粉丝 7
博文 18
码字总数 1936
作品 0
浦东
运行job 出现下面的错误java.net.SocketExceptionMESSAGE

pentaho data integration 3.2 当运行数据量比较大时出现下面的error,如果数据量较小时,Job是可以成功运行。 出现这种情况是什么原因? 2012/08/07 16:35:56 - Table output FACTR077PARTI...

yuetushen ⋅ 2012/08/07 ⋅ 2

star schema[转帖]

数据仓库这么多年来发展的成果,我认为恐怕最重要的要算star schema了,可以说它是整个数据仓库的基石。 star schema主要的思想在于将我们关心的数据和用于描述数据的属性分隔开来。实际的数...

刘小兵2014 ⋅ 2011/07/29 ⋅ 0

数据仓库设计无需主键外键

之前部署公司BI项目例子,发现数据库表都没有设置主键、外键,一直以为是模拟项目,不严谨要求的原因。今天才知道数据仓库本来就不设计主键和外键。这些约束在ETL编程的时候就该做好,保证在...

wffger ⋅ 2015/09/07 ⋅ 0

What is a Junk Dimension in Datawarehousing

The junk dimension is simply a structure that provides a convenient place to store the junk attributes. It is just a collection of random transactional codes, flags and/or text ......

我是彩笔 ⋅ 2015/04/16 ⋅ 0

InnoDB Infrastructure Cleanup

Here is a more complete answer with regard to InnoDB. It is a bit of a lengthy process, but can be worth the effort. Keep in mind that is the busiest file in the InnoDB infrastr......

perfectspr ⋅ 2014/11/11 ⋅ 0

insert all 语句 用法详解

INSERT ALL语句的一些使用技巧。 首先描述一下需求,其实要进行的操作很简单:从一张表取数据插入到另一张表中,插入的目标表做了一个应用系统级的日志表,也就是说在插入目标表的同时,还需...

underA ⋅ 2013/03/25 ⋅ 0

Birt 整合SSH报错!

Caused by: org.eclipse.birt.report.data.adapter.api.AdapterException: Error happens when create measure. The rows should be distinct in fact table. "LOCAL 147049.52 83352.45 113......

ToLove-Ru ⋅ 2012/10/25 ⋅ 1

oracle命令学习笔记

删除/添加外键约束, ALTER TABLE 表名 ADD CONSTRAINT 约束名 --可以是任意合法标示符 UNIQUE (字段列表) -- 字段列表可以使多个字段,用','分开。 添加唯一约束 alter table t add constr...

asdtiang ⋅ 2010/02/22 ⋅ 0

个人收集一些程序员面试题目(二) 一起分享

ORACLE 面试问题-技术篇 1. 解释冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用...

吕坤 ⋅ 2011/03/22 ⋅ 0

MySQL 5.7.5: GROUP BY respects functional dependencies!

MySQL 5.7.5: GROUP BY respects functional dependencies! Today, Oracle announced the availability of the Development Milestone Release 15 of MySQL 5.7.5 . The tagline for this re......

LeBlancs ⋅ 2016/12/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部