从 SSAS/SSRS 中的平面 table 创建 OLAP 多维数据集

Creating an OLAP Cube from a flat table in SSAS/SSRS

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

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

提前致谢!

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

然后您可以创建一个 DSV,根据事实 table 将视图连接起来以填充度量值组。

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

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

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

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