我在尝试设置多维数据集计算。我目前的职责是收到汇率,并在月初发送。有时他们会在这个月内改变,我会收到一个用于该货币的汇率。递归日级计算的汇总
最初的问题是LastNonEmpty使用被质疑的粒度,这意味着当我查询大部分日子时没有汇率,所以计算失败。我取代了汇率的措施,初步形成了具有递归计算,但后来有以下几点:
WITH
MEMBER [Measures].[EOD]
AS
Aggregate({NULL:[Date].[Calendar Y M D].CurrentMember}, [Measures].[End Of Day Rate])
因此,在日期维度看时,它会得到最新的汇率。这使得每天的计算如下:
MEMBER [Measures].[Converted]
AS
SUM
(
{[Currency].[Currency].[Currency] * [Date].[Calendar Y M D].CurrentMember},
(
(
[Measures].[Sales]
)
/[Measures].[EOD]
)
)
最后我用这个在查询:
SELECT
{
[Measures].[Converted]
}
ON COLUMNS,
NON EMPTY
{
[Date].[Calendar Y M D].[Calendar Day].&[2010-Q3-08-01] :
[Date].[Calendar Y M D].[Calendar Day].&[2010-Q3-08-31]
}
ON ROWS
FROM [Cube]
这一切工作正常,但最好我宁愿由年/月来查询,因为这些是月末报告。我可以在代码层中总结所有这些,但我宁愿让MDX自己做。
问题是计算几乎在日期级递归完成,那么我希望他们卷到月份(甚至年份)级别。
我也尝试了货币转换向导,交换汇率上面的时间聚集之一,但尝试浏览多维数据集在SSMS锁定了服务器,因为它试图做聚合整个日历:(
有什么建议最好采用什么方法?
一个有趣的方法,但我认为它不会奏效 - 每天都会有数据需要转换,但每天不会有汇率 - 我需要使用数据的最新汇率,在一天的水平,回顾该货币的最新汇率。我想知道现在是否可以通过递归CTE视图来生成汇率... – Meff 2010-07-27 07:50:18
OK,所以递归CTE的工作,我开始用我随后沿着日期向上走的汇率,使用我遇到的下一个汇率货币。最后4个CTE,1是递归的:o – Meff 2010-07-27 09:50:28