【问题标题】:Creating an SSAS cube based on single table or view基于单个表或视图创建 SSAS 多维数据集
【发布时间】:2016-05-11 17:22:30
【问题描述】:

我正在尝试基于单个表创建一个 SSAS 多维数据集。不幸的是,在表格模式下运行服务不是一个选项,因为我们已经有实例在分析服务器模式下运行。

我阅读了其他几篇文章,其中人们提到确实可以基于单个表或视图创建多维数据集。

问题是:基于单一来源创建时,我如何以及在哪里指定维度和度量?

我创建了一个数据源视图,但不确定如何指定维度和度量。我想我会在这里寻求帮助。

提前致谢, 蜜蜂

【问题讨论】:

    标签: ssas


    【解决方案1】:

    要使您的维度键唯一,您必须将维度(例如,国家维度)基于

    SELECT DISTINCT Country[,... other things] FROM TheSingleTable
    

    查询。

    这种方法有缺点。维度永远不会在多维数据集本身之外实现,这使得当维度数据似乎错误时分析问题变得非常困难。出于同样的原因,创建一个缓慢变化的维度是不可能的。

    优点是您不必执行任何 ETL 工作来检测新维度成员并在新数据进入时填充维度表。缺点是,除非每个维度仅基于来自表,它会变得不连贯。

    如果一个维度基于多个列,如:

    SELECT DISTINCT CountryCode,CountryName FROM TheSingleTable
    

    那么,如果对单个表或 ETL 过程没有任何约束来保证两列的值范围彼此精确地映射为 1 到 1,那么新数据将扰乱您的维度成员资格。

    例如,您有一个 CountryCode 为“USA”、CountryName 为“United States”的现有成员。如果表中只有一个新的事实行,CountryCode “USA”,CountryName “Uited States”(或 NULL),这将被解释为一个新的维度成员。您可能会遇到维度处理重复键错误(如果幸运的话),或者是虚假的多个维度成员。

    新数据很容易破坏这种设计,因此我建议不要这样做,除非它是一个非常小的、简单的项目,并且您有时间深入分析传入的更新并考虑它们可能暗示的后果。

    【讨论】:

      【解决方案2】:

      就像创建普通尺寸一样创建它们。

      1. 在解决方案资源管理器中右键单击维度,选择“新建维度”,然后选择“使用现有表”。
      2. 选择您的单个表,并选择您的关键列。由于您没有代理键,因此您必须选择任何能使您的维度行唯一的列。因此,如果您有一个包含 Country->State->City 数据的 Location 维度,那么可能 City 是唯一的,可能是 City/State,也许您需要这三个维度。
      3. 选择要包含在维度中的其他属性。
      4. 像往常一样定义属性关系、层次结构等。
      5. 创建新多维数据集时,选择 SingleTable 作为度量值组并选择度量,然后选择您创建的新维度以包含在多维数据集中。

      显然有点难以维护,但肯定是有可能的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-01
        • 1970-01-01
        • 2018-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多