【发布时间】:2016-05-11 17:22:30
【问题描述】:
我正在尝试基于单个表创建一个 SSAS 多维数据集。不幸的是,在表格模式下运行服务不是一个选项,因为我们已经有实例在分析服务器模式下运行。
我阅读了其他几篇文章,其中人们提到确实可以基于单个表或视图创建多维数据集。
问题是:基于单一来源创建时,我如何以及在哪里指定维度和度量?
我创建了一个数据源视图,但不确定如何指定维度和度量。我想我会在这里寻求帮助。
提前致谢, 蜜蜂
【问题讨论】:
标签: ssas
我正在尝试基于单个表创建一个 SSAS 多维数据集。不幸的是,在表格模式下运行服务不是一个选项,因为我们已经有实例在分析服务器模式下运行。
我阅读了其他几篇文章,其中人们提到确实可以基于单个表或视图创建多维数据集。
问题是:基于单一来源创建时,我如何以及在哪里指定维度和度量?
我创建了一个数据源视图,但不确定如何指定维度和度量。我想我会在这里寻求帮助。
提前致谢, 蜜蜂
【问题讨论】:
标签: ssas
要使您的维度键唯一,您必须将维度(例如,国家维度)基于
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),这将被解释为一个新的维度成员。您可能会遇到维度处理重复键错误(如果幸运的话),或者是虚假的多个维度成员。
新数据很容易破坏这种设计,因此我建议不要这样做,除非它是一个非常小的、简单的项目,并且您有时间深入分析传入的更新并考虑它们可能暗示的后果。
【讨论】:
就像创建普通尺寸一样创建它们。
显然有点难以维护,但肯定是有可能的。
【讨论】: