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

Best way to change granularity of fact table?

我们有一个多年前创建的立方体,我们有一个更改粒度的请求。为了简化我的场景,事实包含日期维度(每日)、市场维度(拉丁美洲、北美等)和访问次数度量。

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

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

如果所有报告都来自多维数据集,而事实 table 只是为了支持这一点,我会提倡添加一个新事实 table 并将它们在下游拼接在一起。该方法取决于您的要求。

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

在这种情况下,对此建模的自然方法是将额外的粒度添加到市场的现有维度中。您可以通过几个步骤完成此操作:如果没记错,请像这样:

  1. 您的市场数据应作为视图呈现给多维数据集。如果它不是创建一个并且在 DSV 中将 table 替换为 "another table" 并将其指向新视图。增强此视图,以便它提供您的组合地理信息 - 每个 state/country/market 一行。

  2. 确保有我们可以关联旧谷物事实的记录。论文的市场价值也将反映为州和国家的价值。 (也就是说,将参差不齐的层次结构级联到关键值)。

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

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

  5. 将其 key/name 从市场的 key/name 字段更改为 [州] 的字段 再次为 Country 添加属性层次结构,为 Market 添加新的属性层次结构,确保它与以前相同,以避免破坏旧报告。

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

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

这旨在让您最顺畅地适应针对旧数据编写的任何 MDX。您的维度将保留其名称,该名称可能看起来已过时。如果您准备打破使用多维数据集的旧报告,您当然可以重新设计事物以给维度一个新名称。

您的国家和州独立于该属性,并且(例如)数据可能出现在拉丁美洲市场和美国国家/地区。

那么您只需要添加一个更容易的新维度。

  1. 创建一个行集来构建新的维度,并确保它有一个行用于 Country = "UNKNON" 和 State = "UNKNOWN"。最好用整数作为维度的键,假设我们给这个 Record [GeoId]=0。

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

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

对于来自您的多维数据集数据的几乎所有消费者来说,这是一项非破坏性更改。