2012-07-31 52 views
1

我正试图设计一个多维数据集,让我查看过去几年使用SSAS的月收入。SSAS中缓慢更改维度

Account Number  MonthlyPayment  Start Date  End Date 
102939    115    01/01/2001  03/31/2001 
102939    75    04/01/2001  NULL 
102940    107    02/01/2001  NULL 

现在,我试图找出我每月的收入就是每个月例如:我使用Type 2 SCD导致下表中建立了收入事实表

01/01: 115 
02/01: 222 
05/01: 182 

我已经构建了一个多维数据集,但它只报告特定月份的收入,因为它在开始日期已关联,例如,

01/01: 115 
02/01: 107 
02/01: 0 
04/01: 75 

显然我失去了一些东西,因为所有的环节我已经能够找到SSIS建立事实表后停下来,似乎暗示着这是一块蛋糕,一旦数据格式正确无误。我是否需要编写MDX计算度量值?如果是这样的话?或者我应该看到更简单的东西。

任何意见将不胜感激!

回答

0

添加包含所有日期的时间维度,即使它们未被事实表使用。包含您可以在MDX查询中使用的月份列的SSAS allows you to generate a Time dimension

对不起,我没有完全理解你定义的问题。 我想你将不得不表denormalise成类似

Account Number  PaymentAmount  Payment Date  
102939    115    01/01/2001  
102939    115    02/01/2001  
102939    115    03/01/2001  
102939    75    04/01/2001  
102940    107    02/01/2001  

这将最终简化计算即在表大小的成本。

+0

我已经添加了Time维度,但是我很难将它绑定到EndDate列,并且我不确定如何构造MDX查询,因为日期在度量中不可用,而且我很不熟悉MDX,所以我甚至确定从哪里开始。 – nickrobison 2012-08-01 12:34:10

1

这不是一个简单的电话。

您正在寻找在单元级别(又名行级别)上定义的新类型,即付款(金额,开始,结束),当汇总时采用日期来计算金额。

由于OLAP立方体只聚合基本类型(double,int,booleans ...),因此不能解决开箱即用的这类问题。我不知道有任何供应商在这个时候做这件事。

的标准方法是添加每个月的量:

Account Number  MonthlyPayment  Date  
102939    115    01/01/2001 
102939    115    02/01/2001 
102939    115    03/01/2001 
102939    75    04/01/2001 
... 
102940    107    02/01/2001 
102940    107    03/01/2001 
102940    107    04/01/2001 
... 

这种解决方案的问题是原来的行,而不是新行(内存),以及如何产生的“新”表的数量。

另一个问题是,如果SSAS不是必须的,那么可以找到一家可以与您合作的供应商,以更好地解决该解决方案。

+0

由于项目的限制,SSAS是必须的,我可能会根据您的建议复制行,但帐户数量和具有相似结构的不同度量的数量意味着我希望找到更简单的解决方案,如果可能的话。 – nickrobison 2012-08-01 12:39:25

+0

我你不想在多个月内得到这笔钱,你可以尝试一个很多2人,但这条路是危险的。例如。 2001年全年的月付款总额为115 + 75 + 107(行不算两次)。你仍然必须做开始/结束分解。 – ic3 2012-08-01 12:56:32