更改事实表粒度的最佳方法?

时间:2018-12-17 16:53:21

标签: ssas data-warehouse dimensional-modeling

我们有一个在几年前创建的多维数据集,并且有更改晶粒的请求。为了简化我的情况,事实包含日期(每天),市场(拉美,北美等)的维度和访问次数的度量。

有一个新请求,要求包含国家和州。这就是我的想法:

  • 添加带有国家/地区,州(可能还包括邮政编码)的新地理暗号?
  • 更新未知的历史记录(在我们更新历史数据的过程中)
  • 更新ETL中的逻辑以通过国家/州加载

我应该考虑的其他事情或陷阱吗?

1 个答案:

答案 0 :(得分:2)

如果所有报告都来自多维数据集,并且事实表仅是为了支持我主张添加新的事实表并将它们缝在下游。该方法取决于您的要求。

您的国家和州与驱动市场的事实数据具有相同的属性。

在这种情况下,建模的自然方法是将多余的谷物添加到Market的现有维度中。您可以按照以下步骤进行操作:如果有存储空间,则可以这样:

  1. 您的市场数据应作为视图呈现给多维数据集。如果不是,请在DSV中创建一个表,并用“另一个表”替换该表,然后将其指向新视图。增强此视图,以便它提供您组合的地理信息-每个州/国家/地区的行。

  2. 确保存在可以与旧事实相关的记录。这些市场价值也将反映为州和国家的价值。 (也就是说,将衣衫agged的层次结构向下层叠到键值)。

  3. 为旧的和新的谷物事实数据创建行源。我认为这些来自不同的来源。这可以是将两者结合在一起的所有视图,其中旧的[Market]反映为旧的事实数据的[State]。或者,您可以具有视图的视图,以便在多维数据集中将它们实现为单独的分区。

  4. 将键属性层次结构的名称从[市场]更改为[州](假设州->国家和州->市场)。

  5. 将其键/名称从市场的键/名称字段更改为[州]的键/名称字段 再次为“国家/地区”添加属性层次结构,为“市场”添加新属性层次结构,以确保其属性与以前相同,以避免破坏旧的报表。

  6. 在县和市场之间添加属性关系(仅当它是所有事实记录的严格父级时)

  7. 在多维数据集设计器的“度量值组/维度”用法窗格中,删除并重新添加事实与维度之间的直接关系。

此功能旨在使您最顺畅地使用针对旧数据编写的任何MDX。您的维度将保留其名称,该名称可能看起来已过时。如果您准备破坏多维数据集使用的旧报表,那么您当然可以重新设计事物以给维度赋予新名称。

您的国家/地区和州/省与该属性无关,并且(例如)数据可能会在LATAM市场和美国所在国家/地区出现。

然后,您只需要添加一个更简单的新尺寸即可。

  1. 创建一个行集以构建新维度,并确保该行具有Country =“ UNKNON”和State =“ UNKNOWN”的行。始终最好用整数键标注尺寸,假设我们给此Record [GeoId] = 0。

  2. 使用新维度的键将新颗粒数据提供给多维数据集。您的旧事实数据应作为视图提供给多维数据集,并且该视图的字面值可以为0,用于所有记录上的新列[GeoId]。

  3. 将所有这些都结合在一起,或者将它们用于度量组的单独分区。
    将度量关系/度量用法中的关系添加到新维度。

对于您的多维数据集数据,几乎所有消费者来说都是不间断的更改。