我是MDX的新手,但已被要求提高货币兑换率 多维数据集中的功能。问题本身似乎很简单。
对于任何给定的选定时间段,获取最后一个日期,并将其用作外汇货币转换的报告日期。
例如,用户选择时间范围为2018年1月至2018年10月。最后日期为2018年10月31日。
货币汇率转换为一种报告货币,因此我们将采用2018年10月31日的汇率。
我尝试了多种方法来使用:
如果用户选择一个期间并且计算仅针对该期间,则这些方法可以正常工作。
但是问题是,在多个期间(请考虑YTD或LTD的计算)中,则从每个月获取结束率。
例如,对应月份中的每个订单项将使用该月的期间值(1月7.285)而不是2018年10月的值7.027进行转换。
期间|期间费率| LastDate | LastDateExisting
2018年1月| 7.285 | 20191231 | 20180131
2018年2月| 7.273 | 20191231 | 20180228
2018年3月| 7.275 | 20191231 | 20180331
2018年4月| 7.201 | 20191231 | 20180430
2018年5月| 7.146 | 20191231 | 20180531
2018年6月| 7.118 | 20191231 | 20180630
2018年7月| 7.116 | 20191231 | 20180731
2018年9月| 7.102 | 20191231 | 20180930
2018年10月| 7.027 | 20191231 | 20181031
这是我在各种MDX食谱中找到的获取最后日期的MAX方法的示例。我假设由于CurrentMember,我正在每个时期获得结果。我意识到这是正常的MDX行为,但是由于要求,您需要打破这一点。
不存在的MAX示例是最接近的示例,因为它返回相同的日期,但是我不确定是否可以轻松地将其过滤为实际结束时间?
WITH
MEMBER Measures.[LastDate] AS
MAX( [Accounting Date].[Year – Quarter – Month – Date].[Date].MEMBERS,
IIF( [Measures].[Rate at Period] = 0,
NULL,
[Accounting Date].[Year – Quarter – Month – Date].CurrentMember.Member_Key
)
)
MEMBER Measures.[LastDateExisting] AS
MAX( EXISTING [Accounting Date].[Year – Quarter – Month – Date].[Date].MEMBERS,
IIF( [Measures].[Rate at Period] = 0,
NULL,
[Accounting Date].[Year – Quarter – Month – Date].CurrentMember.Member_Key
)
)
我希望看到最后一个日期列为所有“ 20181031”,如下所示。
期间|期间费率(已覆盖)| LastDate
2018年1月| 7.027 | 20181031
2018年2月| 7.027 | 20181031
2018年3月| 7.027 | 20181031
2018年4月| 7.027 | 20181031
2018年5月| 7.027 | 20181031
2018年6月| 7.027 | 20181031
2018年7月| 7.027 | 20181031
2018年9月| 7.027 | 20181031
2018年10月| 7.027 | 20181031
任何需要帮助的人都非常乐意为您提供更多信息。
答案 0 :(得分:0)
看起来您已经知道了这一点:
WITH
MEMBER Measures.[LastDate] AS
MAX(
[Accounting Date].[Year – Quarter – Month – Date].[Date].MEMBERS,
IIF(
[Measures].[Rate at Period] = 0,
NULL,
[Accounting Date].[Year – Quarter – Month – Date].CURRENTMEMBER.MEMBER_KEY
)
)
因此,要获取Rate at Period (overridden)
,您只需使用找到的日期并使用元组进行度量-只需稍作更改,便需要将LastDate
成员添加到层次结构中除了“度量”之外-您可以选择:在我们的多维数据集中,我通常选择Langauges层次结构,因为它几乎从未使用过:
WITH
MEMBER <OtherHierarchy>.[LastDate] AS
MAX(
[Accounting Date].[Year – Quarter – Month – Date].[Date].MEMBERS,
IIF(
[Measures].[Rate at Period] = 0,
NULL,
[Accounting Date].[Year – Quarter – Month – Date].CURRENTMEMBER.MEMBER_KEY
)
)
MEMBER Measures.[Rate at Period (overridden)] AS
(
<OtherHierarchy>.[LastDate],
[Measures].[Rate at Period]
)