【问题标题】:Creating an OLAP Cube from a flat table in SSAS/SSRS从 SSAS/SSRS 中的平面表创建 OLAP 多维数据集
【发布时间】:2015-08-06 12:53:13
【问题描述】:

我是该主题的新手。我有一个带有平面事实表的数据库,其中包含日期、product group、product subgroup、product actual name 和一些calculations/statistics 等数据。我需要做的就是使用 olap cube 创建一个报告。我有两个想法如何创建它,但不知道哪个草稿更好(如果正确的话)。原始 DAILY_REPORT... 表没有主键。它只是一个数据表。在第一个概念中,我使用ID 创建了每个表(将作为一个维度),并在层次结构中连接了product->family of product->project->building。另一个概念是没有所有 ID 和层次结构。基于名称自动创建的关系。有人可以解释我应该朝哪个方向发展...?

第一个想法: http://imgur.com/iKNfAXF 第二: http://imgur.com/IZjW1W6

提前致谢!

【问题讨论】:

    标签: sql reporting-services ssas cube flat


    【解决方案1】:

    您可以按照以下步骤创建您的多维数据集:

    1. 为您想要的每个维度创建一个单独的视图。在一个视图中对相似类型的数据进行分组,例如产品名称、产品组、产品子组等
    2. 将维度视图中的数据保留为 DISTINCT 数据。例如SELECT DISTINCT [Product Name], [Product Group], [Product Sub-Group] FROM TABLE
    3. 在每个维度视图中保留一个“ID”列,例如产品视图中的产品 ID
    4. 为您的事实创建一个视图。在您的事实视图中包含每个维度的“ID”列。这将帮助您在“ID”列上创建关系,这将比在名称之上创建关系快得多。
    5. 为了在维度属性中创建层次结构,SSAS 提供拖放功能。

    如果您需要更多详细信息,请告诉我。

    【讨论】:

      【解决方案2】:

      您可以通过基于来自源数据的不同查询(即SELECT DISTINCT)的视图构建所需的维度。这些可用于填充维度。 您可以相当轻松地制作合成日期维度。

      然后您可以创建一个 DSV,将视图连接回事实表以填充度量值组。

      如果您需要伪造一个主键,那么您可以使用一个视图,该视图使用从row_number() 或类似方式生成的列来注释事实表。请注意,这在运行期间不一定是稳定的,因此您不能依赖它来进行增量加载。但是,它可以很好地用于完全刷新。

      【讨论】:

      • 我已经使用 distinct 创建了所有这些表,可以肯定的是,没有冗余数据。您是否建议删除所有这些表,只创建新的 DSV,最后创建一个 DSV 来链接所有这些表?
      • 我建议您将它们创建为数据库中的视图 - 至少是事实表的视图。如果需要,这将为您提供可以用作事实表主键的列。维度可以是数据库中的视图或 DSV 中的命名查询。
      • 好的,我只需要为事实表需要的数据创建一个视图。我是否需要使用维度创建所有 ID 键,或者不同的视图将为我做所有事情?但仍然不明白如何在事实表中的数据(我将创建)和其余数据之间创建关系,对不起,但我需要一个更大的解释。你能画出一些战术图吗?
      • 如果您的维度在叶子上有一个唯一代码,那么您无需合成密钥就可以离开,只需加入代码即可。
      猜你喜欢
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多