此指标成功将我的指标转换为所选的货币。因此,如果我从月的第一天到本月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标准,因此我无法使用度量表达式或半加性度量。
答案 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]