当我们有一个加载的事实表时维度表的使用

Posted

技术标签:

【中文标题】当我们有一个加载的事实表时维度表的使用【英文标题】:Dimension Table Usage when we have a loaded fact table 【发布时间】:2018-07-09 09:01:05 【问题描述】:

我是数据仓库的新手,我想问一下,在将所有外键数据复制到事实表时,为什么我们仍然使用维度,因为事实表中存在所有数据,请指导我。

【问题讨论】:

【参考方案1】:

简答:一个典型的维度有额外的属性,而不仅仅是一个键。您的事实表有一个维度的外键,可以提供额外的信息,甚至可以进行分组。

推荐阅读:Ralph Kimball 的“数据仓库工具包”

【讨论】:

因此,如果最终用户只需要更多信息,则必须使用维度表,其他明智的事实表就足够了。我做对了吗? 最终用户总是希望获得比维度 ID 更多的维度信息,尤其是在您使用 Kimball 推荐的维度“代理键”方法时。【参考方案2】:

事实表应该只存储 1) 它建模的业务指标(例如,销售订单/交易,或您正在衡量的其他一些业务交易); 2) 相关维度的外键。

维度表应该只存储理解您的业务交易(您的事实)所必需的上下文/定性数据。

例如,假设您正在为零售店的销售建模;一个非常简化的维度模型类似于:

店铺维度:名称、街道地址、城市、县等 产品维度:名称、品牌、描述、sku 等 日期维度:年、月、日等 Sales Fact 表:fkStore、fkProduct、fkDate、unitsSold、salesAmmount

因此,事实表只保存指标/度量和外键,但业务用户需要使用存储在维度中的信息才能探索事实。这就是您使他们能够根据特定产品、特定商店/位置或特定日期探索 unitsSold 或 salesAmmount 的方式。

事实表本身仅提供定量数据(“销售量”),而维度提供业务用户解释该指标所需的上下文(“2017 年 Y 商店销售的产品 X 的数量”)。

【讨论】:

【参考方案3】:

在许多情况下,关于什么属于维度或事实数据的决定并不明确。通常可重用的数据(相对于其他事实数据有意义)可以被视为维度数据。 很多时候,事实数据随着时间的推移变化最大。事实表包含这些记录随时间变化的历史 像每日销售数字、每晚 EndOfDay 结果等。 这些通常是数字类型,即定量测量。然后,数据仓库分析包括对这些数字进行分桶(求和/分组),以便它们以不同的粒度级别随着时间的推移呈现趋势的叙述。 维度数据更具有“静态”性质,例如 Trade 、 Customer 、 Product details。 我推荐阅读: https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/

【讨论】:

以上是关于当我们有一个加载的事实表时维度表的使用的主要内容,如果未能解决你的问题,请参考以下文章

维度的计算成员

星型模式中作为事实表的客户维度

将维度链接到事实表的表是事实的维度吗?

BIEE04_当维度表中的维不存在事实表中,需要展示所有维度并且数据类展示为0

结合事实表和维度表的SQL语句?

在 PDI 中检索事实表的技术密钥