基于单个表或视图

时间:2016-05-10 21:17:28

标签: ssas

我正在尝试基于单个表创建一个SSAS多维数据集。遗憾的是,以表格模式运行服务不是一种选择,因为我们已经在Analysis服务器模式下运行实例。

我读了几篇其他帖子,人们提到它确实可以根据单个表或视图创建一个多维数据集。

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

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

提前致谢, 蜂

2 个答案:

答案 0 :(得分:1)

要使维度键具有唯一性,您必须将维度(例如,国家/地区维度)基于

SELECT Sum(gross_motor + visual_motor_skills 
       + draws_a_person + prints_personal_data) 
FROM   brigance_screening_term0 AS T0 
WHERE  year = 2011 
   AND Str_to_date(date, '%Y-%m-%d') = 2016 - 05 - 11 
LIMIT  1 

查询。

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

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

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

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

然后,如果单个表或ETL过程没有约束来保证两列值的范围彼此正好1到1,那么新数据将扰乱您的维度成员资格。

例如,您有一个现有成员,CountryCode为“USA”,CountryName为“United States”。如果只有一个新的事实行进入表中,使用CountryCode“USA”,CountryName“Uited States”(或NULL),则这将被解释为新的维度成员。您将获得维度处理重复键错误(如果您很幸运)或虚假多维度成员。

新数据很容易打乱这种设计,除非它是一个非常小的简单项目,否则我建议不要使用它,并且你有时间深入分析传入的更新并思考它们可能带来的后果。

答案 1 :(得分:0)

只需像创建正常尺寸一样创建它们。

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