基于每日货币汇率的SSAS总和度量

时间:2014-07-26 13:20:09

标签: sql-server ssas mdx bids

此指标成功将我的指标转换为所选的货币。因此,如果我从月的第一天到本月15日获得数据,那么所选货币的汇率将是该月的第15个。

 CREATE MEMBER CURRENTCUBE.[Measures].[Comp Money In] AS null;    
SCOPE([Dim Time].[Date Key].members);     
[Measures].[Comp Money In]=      [Measures].[_Comp Money In]/[Measures].[Last Currency Rate];  

end scope;    

然而,我想要的是汇总金额,考虑到每日结算汇率。因此,本月1日的汇率与当月1日汇率汇总,第2汇率相同,第3汇率......所以第四次汇率如此。

我确信,在我的货币汇率中,每天有1个汇率,即收盘汇率。

我该怎么做?我使用的是MS SQL 2008 R2标准,因此我无法使用度量表达式或半加性度量。

1 个答案:

答案 0 :(得分:1)

我认为这是一个老问题,但万一你还在寻找...... 您是否可以在事实表中创建一个中间度量以包含每天的转换值,然后在需要时对其进行求和?

或者,创建一个临时文件。在您的mdx中测量,然后将其枚举为所需的日期范围,然后进行聚合?

基于AdventureWorks和此链接写了这个 https://social.technet.microsoft.com/Forums/sqlserver/en-US/e4cd7d8e-a829-45dc-afe1-b98964d2dbc9/weighted-average-calculation-using-mdx

with 
member [Measures].[Daily Sales Amount] as
    sum
    (
        [Date].[Calendar].currentmember 
        , [Measures].[Internet Sales Amount]
    )
member [Measures].[Cumulative Sales] as
sum
(
    [Date].[Calendar].[Month].&[2006]&[1].children
    *
    [Destination Currency].[Destination Currency Code].[Destination Currency Code].allmembers
    , [Measures].[Daily Sales Amount] * [Measures].[End of Day Rate]
)
/ [Measures].[End of Day Rate]
select 
{
    [Measures].[Cumulative Sales]
}
on 0,
non empty 
{
    [Date].[Calendar].[Month].&[2006]&[1]
}
on 1
from [Adventure Works]