Fact表和Dimension表之间的区别?

75 database data-warehouse fact-table business-intelligence

在阅读业务对象的书籍时,我遇到了术语 - 事实表和维度表.

我想了解Dimension表和Fact表之间有什么不同?

我在互联网上阅读了几篇文章,但我无法理解.

任何简单的例子都会帮助我更好地理解?

Pre*_*raj 135

在数据仓库建模中,星型模式雪花模式FactDimension表组成.

事实表:

  • 它包含维度的所有主键以及相关的事实或度量(可以进行计算的属性),如销售数量,销售量和平均销售额.

尺寸表:

  • 尺寸表为事实表中记录的所有测量值提供描述性信息.
  • 与事实表相比,尺寸相对非常小.
  • 常用的尺寸是人,产品,地点和时间.

在此输入图像描述

图像源

  • 这比接受的答案更有帮助 (22认同)
  • 好吧,一张图片值得一千个字。在阅读其他答案时,我什么都不懂,但是这个救了我。 (4认同)
  • @Blue Clouds:您必​​须意识到事实表对于暗淡的每种可能的组合都包含一个条目(至少如果有数据的话)。虽然位置维度最多包含每个可能位置(例如 50 个销售点)的一个条目,并且增长很少,但当添加新位置时,事实表每天可能会按位置 x 项目 x 分支机构增长。因此,事实的记录数量会很快增加。 (2认同)

Aey*_*Jey 90

对于如何区分事实和维度表,这似乎是一个非常简单的答案!

将维度视为事物或对象可能有所帮助.诸如产品之类的东西可以存在而不会涉及商业活动.维度是你的名词.它可以独立于商业活动而存在,例如销售.产品,员工,设备都是存在的东西.维度可以做某事,也可以做一些事情.

员工出售,顾客购买.员工和客户就是维度的例子.

产品销售,它们也是尺寸,因为他们已经做了一些事情.

事实,是动词.事实表中的条目标记了维度表中发生的事件的离散事件.产品销售将记录在事实表中.销售事件将通过销售什么产品,哪个员工销售产品以及哪个客户购买产品来注明.产品,员工和客户都是描述事件和销售的维度.

此外,事实表通常还具有某种定量数据.销售数量,每件商品的价格,总价格等.

资料来源:http: //arcanecode.com/2007/07/23/dimensions-versus-facts-in-data-warehousing/

  • 出色的写作,仅需5分钟即可理解该概念。 (2认同)
  • 是的,这就是我记得他们的方式。这与您的想法相反。您会认为事实是固定不变的,而维度是动态的,基于单词本身。但是,情况恰恰相反:基本的暗表是一个相当静态的查找列表,而基本的事实表是正在输入的实时数据。 (2认同)

NoC*_*nce 40

这是为了回答这个部分:

我试图了解维度表是否也可以是事实表?

简答(INMO)是No.这是因为出于不同的原因创建了两种类型的表.但是,从数据库设计的角度来看,维度表可以将父表作为事实表的情况,该事实表始终具有维度表(或更多)作为父表.此外,可以聚合事实表,而不聚合维度表.另一个原因是事实表不应该在适当的位置更新,而维度表可以在某些情况下更新到位.

更多细节:

事实和维度表出现在通常称为星型模式的内容中.星型模式的主要目的是简化复杂的规范化表集,并将数据(可能来自不同系统)合并到一个可以非常有效的方式查询的数据库结构中.

在其最简单的形式上,它包含一个事实表(例如:StoreSales)和一个或多个维度表.每个Dimension条目都有0,1个或更多与之关联的事实表(维度表示例:地理,项目,供应商,客户,时间等).具有父级的维度也是有效的,在这种情况下,模型的类型为"Snow Flake".但是,设计人员试图避免这种设计,因为它会导致更多连接,从而降低性能.在StoreSales的示例中,地理维度可以由列(GeoID,ContenentName,CountryName,StateProvName,CityName,StartDate,EndDate)组成.

在Snow Flakes模型中,您可以为地理信息设置2个标准化表,即:内容表,国家/地区表.

您可以在Star Schema上找到大量示例.另外,请查看此内容以查看星型模式模型Inmon与Kimball的替代视图.Kimbal有一个很好的论坛,您可能还想看看:Kimball Forum.

编辑:回答有关4NF示例的评论:

  • 违反4NF的事实表示例:

销售事实(ID,BranchID,SalesPersonID,ItemID,金额,TimeID)

  • 不违反4NF的事实表示例:

AggregatedSales(BranchID,TotalAmount)

这里的关系是4NF

最后一个例子相当不常见.


dz9*_*902 10

  • 事实=行动:销售、交易、访问
  • 维度=对象:卖家、客户、日期、价格

然后...

  • 事实参考维度:何时、何地、何事、何人、如何

真正有趣的是决定一个属性应该是维度还是事实。例如,订单中每件商品的价格,或者合同中记录的保险最高金额。没有普遍正确的方法来处理这些问题,只有在上下文中有意义的方法。

PS:如果我要创建这些术语,我会更喜欢Log tableObject table


aa8*_*a8y 9

我发现从一个对DB/DW术语知之甚少的人的角度来看,这个答案更容易理解.

http://databases.about.com/od/datamining/a/Facts-Vs-Dimensions.htm

我建议首先完成这个,然后通过Emmad Kareem的答案获得更多粒度.希望它有用.


小智 9

超级简单的解释:

事实表:将查找 ID 映射到一起的数据表。通常是应用程序中心的主要表之一。

维度表:用于存储事实表中频繁重复的值(例如城市名称或州)的查找表。


小智 6

维度表 维度表是一个包含存储在事实表中的度量属性的表。该表由可用于在节点中遍历的层次结构、类别和逻辑组成。

事实表包含业务流程的度量,它包含维度表的外键。

示例 – 如果业务流程是制造砖块

一个人/一台机器生产的平均砖块数——业务流程的衡量标准


小智 5

从我的观点,

  • 维度表:主数据
  • 事实表:交易数据