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

Mez*_*Mez 5 sql-server ssas mdx bids

此度量成功将我的度量转换为所选的货币.因此,如果我从月的第1天到本月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;    
Run Code Online (Sandbox Code Playgroud)

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

我相信,在我的货币汇率中,每天有1个汇率,即最后一个汇率.

我怎样才能做到这一点?我使用的是MS SQL 2008 R2标准,因此我无法使用度量表达式或半加性度量.

Shr*_*i I 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]
Run Code Online (Sandbox Code Playgroud)