首页 > 解决方案 > 在维度的不同粒度级别链接事实表

问题描述

数据仓库设计的新手。我有一个表示地理(例如郊区、城市、州)的非规范化维度表。这是一个缓慢变化的维度。

还有多个事实表,每个都在不同的粒度级别。

是否可以对此进行建模,以便事实表使用代理键,同时维护非规范化维度表?

数据模型

标签: data-modelingdata-warehouse

解决方案


如果您实际上拥有相同的维度数据但粒度不同,那么您可以通过创建“聚合”维度来处理这个问题。在您的示例中,复制 dim_geo 表定义(而不是数据),将 dim 命名为 dim_geo_city 之类的名称,并以低于城市的粒度删除所有列(例如,郊区 ID、郊区)。如果您在州级别有事实,那么您将以相同的方式创建 dim_geo_state - 以此类推,以用于任何进一步的聚合级别。

Fact_population 将继续引用 dim_geo,但 fact_housing 应引用 dim_geo_city。

填充聚合昏暗的最简单方法是在基本昏暗 (dim_geo) 上运行 SELECT DISTINCT 并仅包含目标昏暗 (dim_geo_city) 中存在的列 - 然后获取结果数据并应用适当的 SCD 逻辑插入/将其更新为目标暗淡。

在此处输入图像描述


推荐阅读