精华内容
下载资源
问答
  • 事实表和维度表的定义

    万次阅读 2018-08-26 23:29:46
    也就是说事实表是多个维度表的一个交点。而维度表是分析事实的一个窗口。   首先介绍下数据库结构中的星型结构,该结构在位于结构中心的单个事实数据中维护数据,其它维度数据存储在维度表中。每个维度表事实...

     一个典型的例子是,把逻辑业务比作一个立方体,产品维、时间维、地点维分别作为不同的坐标轴,而坐标轴的交点就是一个具体的事实。也就是说事实表是多个维度表的一个交点。而维度表是分析事实的一个窗口。 

           首先介绍下数据库结构中的星型结构,该结构在位于结构中心的单个事实数据表中维护数据,其它维度数据存储在维度表中。每个维度表与事实数据表直接相关,且通常通过一个键联接到事实数据表中。星型架构是数据仓库比较流向的一种架构。

            事实表是数据仓库结构中的中央表,它包含联系事实与维度表的数字度量值和键。事实数据表包含描述业务(例如产品销售)内特定事件的数据。

            维度表是维度属性的集合。是分析问题的一个窗口。是人们观察数据的特定角度,是考虑问题时的一类属性,属性的集合构成一个维。

    展开全文
  • 刚开始系统地接触数据仓库,关于事实表维度表概念和关系,找了CSDN和博客园很多文章,都讲得太抽象、术语多,越看越懵,一直在想它们的从属关系或对应关系。反而知乎上的一篇让我豁然开朗: 事实表维度表 最后...

    2021/7/21 周三

    刚开始系统地接触数据仓库,关于事实表与维度表的概念和关系,找了CSDN和博客园很多文章,都讲得太抽象、术语多,越看越懵,一直在想它们的从属关系或对应关系。

    反而知乎上的一篇文章让我豁然开朗:

    https://zhuanlan.zhihu.com/p/145224432

    最后我的理解是:

    事实表记录了具体业务产生的一些数据,而维度表就是相当于 给事实表里重复值比较多的字段 做个目录,在事实表里就可以只用代码来表示。

    如果需要,可以给事实表里的很多个字段都做维表,一个维表也可能在多张事实表里都用到了。所以没有什么从属关系,关系应该算多对多吧。

    展开全文
  • 理解维度数据仓库——事实表维度表、聚合

    万次阅读 多人点赞 2019-05-23 21:16:22
    一个按照州、产品月份划分的销售量销售额存储的事实表有5个列,概念上与下面的示例类似。 Sate Product Mouth Units Dollars W...

    理解维度数据仓库——事实表、维度表、聚合表

    一、事实表

    在多维数据仓库中,保存度量值的详细值或事实的表称为“事实表”。一个按照州、产品和月份划分的销售量和销售额存储的事实表有5个列,概念上与下面的示例类似。 

    Sate

    Product

    Mouth

    Units

    Dollars

    WA

    Mountain-100

    January

    3

    7.95

    WA

    Cable Lock

    January

    4

    7.32

    OR

    Mountain-100

    January

    3

    7.95

    OR

    Cable Lock

    January

    4

    7.32

    WA

    Mountain-100

    February

    16

    42.40

    在这些事实表的示例数据行中,前3个列——州、产品和月份——为键值列。剩下的两个列——销售额和销售量——为度量值。事实表中的每个列通常要么是键值列,要么是度量值列,但也可能包含其他参考目的的列——例如采购订单号或者发票号。

    事实表中,每个度量值都有一个列。不同事实表将有不同的度量值。一个销售数据仓库可能含有这两个度量值列:销售额和销售量。一个现场信息数据仓库可能包含3个度量值列:总量、分钟数和瑕疵数。创建报表时,可以认为度量值形成了一个额外的维度。即可以把销售额和销售量作为并列的列标题,或者也可以把它们作为行标题。然而在事实表中,每个度量值都作为一个单独的列显示。

    事实表数据行中包含了您想从中获取度量值信息的最底层级别的明细。换句话说,事实表中对每个维度的最详细的项目成员都有数据行。如果有使用其他维度的度量,只要为那些度量和维度创建另一个事实表即可。数据仓库中可能包含拥有不同度量值和维度的不同事实表。

    前面表格中的示例数据行显示了事实表的概念布局。事实是事实表几乎总会使用一个整数值来表示(维度)成员,而不使用描述性的名称。因为事实表往往会包含数量多得无法想象的数据行——在一个中等大小的数据仓库中,事实表动辄包含上百万行数据——使用整数键值可以有效地减小事实表的大小。事实表真正的布局如下所示。

    STATE_ID

    PROD_ID

    Month

    Sales_Units

    Sales_Dollars

    1

    347

    1

    3

    7.95

    1

    447

    1

    4

    7.32

    2

    347

    1

    3

    7.95

    2

    447

    1

    4

    7.32

    1

    347

    2

    16

    42.40

    在事实表中使用整数键值时,维度成员的名称需要放到另一种表中——也就是维度表。通常,事实表中的每个维度都有一个维度表。

    事实表前缀为Fact。

    归纳:

    每个数据仓库都包含一个或者多个事实数据表。事实数据表可能包含业务销售数据,如现金登记事务。

    所产生的数据,事实数据表通常包含大量的行。事实数据表的主要特点是包含数字数据(事实),并且这些数字信息可以汇总,以提供有关单位作为历史的数据,每个事实数据表包含一个由多个部分组成的索引,该索引包含作为外键的相关性纬度表的主键,而维度表包含事实记录的特性。事实数据表不应该包含描述性的信息,也不应该包含除数字度量字段及使事实与纬度表中对应项的相关索引字段之外的任何数据。

    包含在事实数据表中的“度量值”有两中:一种是可以累计的度量值,另一种是非累计的度量值。最有用的度量值是可累计的度量值,其累计起来的数字是非常有意义的。用户可以通过累计度量值获得汇总信息,例如。可以汇总具体时间段内一组商店的特定商品的销售情况。非累计的度量值也可以用于事实数据表,单汇总结果一般是没有意义的,例如,在一座大厦的不同位置测量温度时,如果将大厦中所有不同位置的温度累加是没有意义的,但是求平均值是有意义的。

    一般来说,一个事实数据表都要和一个或多个纬度表相关联,用户在利用事实数据表创建多维数据集时,可以使用一个或多个维度表。

    二、维度表

    维度表包含了维度的每个成员的特定名称。维度成员的名称称为“属性”(Attribute)。假设Product维度中有3种产品,那么维度表将如下所示。

    PROD_ID

    Product_Name

    347

    Mountain-100

    339

    Road-650

    447

    Cable Lock

    产品名称是产品成员的一个属性。因为维度表中的Product ID与事实表中的Product ID相匹配,称为“键属性”。因为每个Product ID只有一个Product Name,显示时用名称来替代整数值,所以它仍然被认为是键属性的一部分。

    在数据仓库中,维度表中的键属性必须为维度的每个成员包含一个对应的唯一值。用关系型数据库术语描述就是,键属性称为主键列。每个维度表中的主键值都与任何相关的事实表中的键值相关。在维度表中出现一次的每个键值都会在事实表中出现多次。例如Mountain-100的Product ID 347只在一个维度表数据行中出现,但它会出现在多个事实表数据行中。这称为一对多关系。在事实表中,键值列(它是一对多关系的“多”的一方)称为外键列。关系型数据库使用匹配的主键列(在维度表中)和外键列(在事实表中)值来联接维度表到事实表。

    把维度信息移动到一个单独的表中,除了使得事实表更小外,还有额外的优点——可以为每个维度成员添加额外的信息。例如,维度表可能为每个产品添加种类(Category)信息,如下所示。

    PROD_ID

    Product_Name

    Category

    347

    Mountain-100

    Bikes

    339

    Road-650

    Bikes

    447

    Cable Lock

    Accessories

    现在种类是产品的另一个属性。如果知道Product ID,不但可以推断出Product Name,而且可以推断出Category。键属性的名称可能是唯一的——因为每个键只有一个名称,但其他属性不需要是唯一的,例如Category属性可能会出现好几次。这样一来,便可以创建按照产品和类别对事实表信息进行分组的报表。

    除了名称外,维度表可以包含许多其他的属性。本质上,每个属性都对应于维度表中的一个列。下面是带有其他额外属性的只有3个成员的Product维度表的示例。

    PROD_ID

    Product_Name

    Category

    Color

    Size

    Price

    347

    Mountain-100

    Bikes

    Black

    44

    782.99

    339

    Road-650

    Bikes

    Silver

    48

    3399.99

    447

    Cable Lock

    Accessories

    NA

    NA

    25.00

    维度属性可以是可分组的,也可以是不可分组的。换句话就是,您是否见过按照哪个属性来分组度量值的报表?在我们的示例中,Category、Size和Color全都是可分组的属性。由此自然会联想到可能在某个报表中按照颜色、大小或种类来分组销售额。但Price看起来不像是可分组的属性——至少它本身不是。在报表中可能会有一个更有意义的其他属性——例如Price Group,但价格本身变化太大,导致在报表上分组意义不大。同样地,按照Product Description属性在报表上进行分组意义也不大。在一个Customer维度中,City、Country、Gender和Marital Status都是可以在报表上按照它们进行有意义分组的属性,但Street Address或Nickname都应当是不可分组的。不可分组的属性通常称为成员属性(member property)。

    某些可分组的属性可以组合起来创建一个自然层次结构(natural hierarchy)。例如假设Product有Category和Subcategory属性,在多数情况下,单个产品只会属于单个Subcategory,并且单个Subcategory只会属于单个Category。这将形成一个自然层次结构。在报表中,可能会显示Categories,然后允许用户从某个Category钻取到Subcategories,以及最终钻取到Products。

    层次结构——或者说钻取路径——不一定要是自然的(例如,每个低层次的成员会决定下一个高层次的成员)。例如,您可能会创建一个按照Color分组产品的报表,但允许用户根据每个Color钻取到每个不同的Size。因为报表的钻取能力,Color和Size形成了一个层次结构,但是根据Size却没有任何信息可以用来断定产品的Color将是什么。这是一个层次结构,但不是一个自然层次结构——但也不是说它是个非自然层次结构。Color和Size形成一个层次结构并没有什么不对,它只是这样一个简单的事实:相同的Size可以出现在多个Color中。

    维度表前缀为Dim。

    归纳:

    维度表可以看作是用户来分析数据的窗口,纬度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。例如,包含产品信息的维度表通常包含将产品分为食品、饮料、非消费品等若干类的层次结构,这些产品中的每一类进一步多次细分,直到各产品达到最低级别。

    在维度表中,每个表都包含独立于其他维度表的事实 特性,例如,客户维度表包含有关客户的数据。维度表中的列字段可以将信息分为不同层次的结构级。

    结论:

    1、事实表就是你要关注的内容;

    2、维度表就是你观察该事务的角度,是从哪个角度去观察这个内容的。

    例如,某地区商品的销量,是从地区这个角度观察商品销量的。事实表就是销量表,维度表就是地区表。

    三、聚合表

    数据是按照最详细的格式存储在事实表中,各种报表可以充分利用这些数据。一般的查询语句在查询事实表时,一次操作经常涉及成千上万条记录,但是通过使用汇总、平均、极值等聚合技术可以大大降低数据的查询数量。因此,来自事实表中的底层数据应该事先经过聚合存储在中间表中。中间表存储了聚合信息,所以被称为聚合表,这种处理过程被称为聚合过程。

    参考:https://blog.csdn.net/u010670689/article/details/79989826

    展开全文
  • 数据仓库--事实表和维度表

    千次阅读 2018-07-31 23:06:08
    1.数据仓库与操作型数据库的区别 ...最明显的区别是:操作型数据库主要是用来支撑即时操作,对数据库的性能质量要求都比较高,为了防止“garbage in,garbage out”,通常设计操作型数据库的...

    文章参考:https://blog.csdn.net/davidwang9527/article/details/25553117

    1.数据仓库与操作型数据库的区别

    数据仓库的物理模型与常见的操作型数据库的物理模型有很大不同。最明显的区别是:操作型数据库主要是用来支撑即时操作,对数据库的性能和质量要求都比较高,为了防止“garbage in,garbage out”,通常设计操作型数据库的都要遵循几个范式的约束,除非少数情况下为了性能进行妥协,才可能出现冗余;而数据仓库的数据是来源于即时操作产生的数据,而不是直接来源于即时操作,所以它的数据质量是由操作型系统来保证的,而不是由几个范式来保证的。而且为了更好的跟踪历史信息,以及更快的产生报表,数据仓库的物理模型中存在着大量冗余字段。

    2.事实表与维度表的基本概念

    简单的说维度表就是你观察该事物的角度(维度);事实表就是你要关注的内容。
    比如要分析产品销售情况, 你可以选择按产品类别来进行分析,或按时间来分析,这样的按…分析就构成一个维度。这样就有两个维度:产品类别和时间。
    下面是两个维度表结构:
    产品维度表:Prod_id, Product_Name, Category, Color, Size, Price
    时间维度表:TimeKey, Season, Year, Month, Date

    而事实表是数据聚合后依据某个维度生成的结果表,例如:

    销售事实表:Prod_id(引用产品维度表), TimeKey(引用时间维度表), SalesAmount(销售总量,以货币计), Unit(销售量)

    事实数据和维度数据的识别必须依据具体的主题问题而定。“事实表”,用来存储事实的度量(measure)及指向各个维的外键值。维表用来保存该维的元数据,即维的描述信息,包括维的层次及成员类别等

    所产生的数据,事实数据表通常包含大量的行。事实数据表的主要特点是包含数字数据(事实),并且这些数字信息可以汇总,以提供有关单位作为历史的数据,每个事实数据表包含一个由多个部分组成的索引,该索引包含作为外键的相关性纬度表的主键,而维度表包含事实记录的特性。事实数据表不应该包含描述性的信息,也不应该包含除数字度量字段及使事实与纬度表中对应项的相关索引字段之外的任何数据。
    包含在事实数据表中的“度量值”有两种:一种是可以累计的度量值,另一种是非累计的度量值。最有用的度量值是可累计的度量值,其累计起来的数字是非常有意义的。用户可以通过累计度量值获得汇总信息,例如可以汇总具体时间段内一组商店的特定商品的销售情况。非累计的度量值也可以用于事实数据表,单汇总结果一般是没有意义的,例如,在一座大厦的不同位置测量温度时,如果将大厦中所有不同位置的温度累加是没有意义的,但是求平均值是有意义的。
    一般来说,一个事实数据表都要和一个或多个纬度表相关联,用户在利用事实数据表创建多维数据集时,可以使用一个或多个维度表。
    维度表可以看作是用户来分析数据的窗口,纬度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。例如,包含产品信息的维度表通常包含将产品分为食品、饮料、非消费品等若干类的层次结构,这些产品中的每一类进一步多次细分,直到各产品达到最低级别。
    在维度表中,每个表都包含独立于其他维度表的事实特性,例如,客户维度表包含有关客户的数据。维度表中的列字段可以将信息分为不同层次的结构级。

    3.事实表和维度表的设计原则

    事实表是用来存储主题的主干内容的。以日常的工作量为例,工作量可能具有如下属性:工作日期,人员,上班时长,加班时长,工作性质,是否外勤,工作内容,审核人。那么什么才是主干内容?很容易看出上班时长,加班时长是主干,也就是工作量主题的基本内容,那么工作日期,人员,工作性质,是否外勤,工作内容是否为主干信息呢?认真分析特征会发现,日期,人员,性质,是否外勤都是可以被分类的,例如日期有年-月-日的层次,人员也有上下级关系,外勤和正常上班也是两类上班考勤记录,而上班时长和加班时长则不具有此类意义。所以一般把能够分类的属性单独列出来,成为维度表,在事实表中维护事实与维度的引用关系。

    总的来看,和其他建立主外键关系的表也都一样。但是维度表的建立是需要有层次的(虽然不是必须,但是也是典型特征),而事实表的建立是针对已经发生的事实的,是历史数据的存档,也就是说是不应该修改的。以测试部测试软件的Bug为例。每个Bug都是一个事实。这个Bug的状态在数据字典里可能设计成新建,转派,修复,拒绝等等。那么在事实表中Bug表中有一个字段为Status。当测试员或者开发人员改变了这个状态的值,事实表中该如何更新呢?是直接更新Status还是什么其他的方式?显然,为了能够追踪这个Bug的历史信息,应该是重新插入一条新的记录。那么这和以往的数据库设计有什么区别呢?可以看出对于原始记录和新插入的记录,其他字段全部是相同的,也就是全部冗余的。如果以BugID作为主键,这时候会发现主键都是冗余的(当然,插入之前只能删除主键)。所以可以看出,事实表一般是没有主键的。数据的质量完全由业务系统来把握。

    维度表一般是有主键的,代表该类物质的一个单一个体,其他的字段一般都是有层次关系的。例如2009年2月19日是主键,那么它会有年–月--日这样的层次,为了方便统计,年月日不会在做聚合的时候才计算出来,而是在维护记录时已经计算出来。那么这些字段的冗余是否值得呢?可以这样解释:维度表的数据一般是比较少的,这个少是指相对事实表来讲的。因为事实表是与日俱增,而维度表则增长缓慢,所以绝对数字也不会太大。假如要做一个group by Year(TimeKey),那么在事实表和维度表做连接查询的时候,会产生与事实表一样大的数据量;如果没有这些维度表的分层,那么其一是会增加计算(需要根据时间字段去取出年份),其二是由于引入了计算,索引会失效。这个代价比引入冗余字段要大的多。

    维度表的主键一般都取整型值的标志列类型,这样也是为了节省事实表的存储空间.

    我的GitHub
    QQ:2541692705
    邮箱:loyalwilliams@163.com
    微信扫一扫关注我,没事可以玩玩小游戏



    我想去流浪,我想去读书,若有机会,江湖再见
    扫一扫,领取红包,就当奖励你我付出的努力

    展开全文
  • 事实表 维度表 概念

    千次阅读 2014-04-17 16:18:15
    前面的示例就可以有两个维度:类型区域。另外每个维度还可以有子维度(称为属性),例如类别可以有子类型,产品名等属性。下面是两个常见的维度表结构: 产品维度表:Prod_id, Product_Name, Category, Color, ...
  • 事实表维度表基本解释
  • 文章目录1 数仓分层1.1 基本分层模型1.2 数据集市数据仓库2 数仓理论2.1 范式理论2.2 关系建模和维度建模2.2.1 关系建模2.2.2 维度建模2.2.2.1 维度建模的三种模型2.3 维度表和事实表2.3.1 维度表2.3.2 事实表 ...
  • 维度表和事实表

    千次阅读 2021-01-04 21:29:58
    维度表和事实表 一、维度表 维度表:一般是对事实的描述信息。每一张维对应现实世界中的一个对象或者概念。 例如:用户、商品、日期、地区等。 维的特征: 维的范围很宽(具有多个属性、列比较多) 跟事实...
  • 事实数据可能包含业务销售数据,如销售商品所产生的数据,与软件中实际表概念一样维度:说明数据,维度是指可指定不同值的对象的描述性属性或特征。例如,地理位置的维度可以包括“纬度”、“经度”或“城市名称”...
  • 前面的一篇文章——数据仓库的多维数据模型中已经简单介绍过多维模型的定义结构,以及事实表(Fact Table)(Dimension Table)的概念。多维数据模型作为一种新的逻辑模型赋予了数据新的组织存储形式,而...
  • Hive_维度表和事实表

    2021-08-19 17:58:28
    维度表:一般是对事实的描述信息。每一张维对应现实世界中的一个对象或者概念。 例如:用户、商品、日期、地区等。 维的特征: 维的范围很宽(具有多个属性、列比较多) 跟事实表相比,行数相对较小:通常&...
  • 维度表事实表

    千次阅读 2013-10-21 13:53:41
    以前一直对维度表, 事实表, 数据分析, BI等概念等有一些模糊. 这几天的学习终于让这些有了一些眉目了: 维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进行分析,或按区域...
  • 维度表,实体事实表之间的关系

    万次阅读 多人点赞 2018-07-02 10:30:15
    这段时间在慢慢学习有关维度建模的一些东西,其中有个问题当时被老大挖了个坑就跳了进去几天都没爬出来,这个坑主要在于我对维度表,实体事实表这三种之间的关系和概念认知比较模糊,当时老大要我去设计一个...
  • 数据仓库之维度表和事实表

    千次阅读 2020-05-30 20:03:57
    维度表:一般是对事实的 描述信息。每一张维对应现实世界中的一个对象或者概念。 例如:用户、商品、日期、地区等。 维的特征:  维的范围很宽(具有多个属性、列比较多)  跟事实表相比,行数相对较小:...
  • 事实表事实表其实质就是通过各种维度和一些指标值得组合来确定一个事实的, 比如通过时间维度,地域组织维度,指标值可以去确定在某时某地的一些指标值怎么样的事实事实表的每一条数据都是几条维度表的数据...
  • SQL Server数据仓库相关概念-维度表和事实表概述 收藏 开始研究BI,初学。会记录一些概念性的文章。 基本概念: 1.多维数据集:多维数据集是联机分析处理 (OLAP) 中的主要对象,是一项可对数据仓库中的数据...
  • 个人博客:https://renwula.github.io/,本系列基于互联网公司数仓,使用hive搭建数仓事实表,发生在现实世界中操作型时间,其产生的可度量数值,存储在事实表中,例如交易订单。一般有以下几种事实特性:1.可加、...
  • ER建模 维度表和事实表 维度建模三种模式 如何维度建模 什么是缓慢变化的维度 最常见的三种数据仓库建模体系 联机分析处理 OLAP 元数据(Metadata)
  • 前面的示例就可以有两个维度:类型区域。另外每个维度还可以有子维度(称为属性),例如类别可以有子类型,产品名等属性。 下面是两个常见的维度表结构: 产品维度表:Prod_id, Product_Name, Category, Color, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,492
精华内容 12,196
关键字:

事实表和维度表的概念