我正在尝试使用where子句在我的多维数据集中创建一个计算成员,但无法确定如何获得正确的结果。
我使用以下代码创建了一个计算成员“Outlook”,仅显示预测值。
CREATE MEMBER CURRENTCUBE.[Measures].[Outlook]
AS SUM(([Source Profile].[Source Profile Hierarchy].CurrentMember,
[Source Profile].[Profile Level01].&[Outlook]),
[Measures].[USD Amount]),
FORMAT_STRING = "#,##0;(#,##0)",
VISIBLE = 1 , DISPLAY_FOLDER = 'USD' , ASSOCIATED_MEASURE_GROUP = 'CARS';
现在我想基于另一个隐藏维度“Current_Month”动态过滤结果。此维度始终具有当前财务期间值以及相应的展望概要
Year_Month Outlook_Profile
2015010 10 + 2
预期结果应为“Outlook”度量,显示基于Current_Month维度的值,即“10 + 2”,其余值应为0
为了解释SQL术语中的要求,我想在MDX中实现以下目标
Where Fact.Source_Profile=Dimension.Source_Profile
而不是
Where Fact.Source_Profile='10 + 2'
我不确定如何在Where子句中或通过其他方式实现此目的。我可以看到硬编码值的例子,比如年份。& [2015],但没有看到使用动态值。
答案 0 :(得分:0)
我自己找到了一个解决方案,并考虑分享相同的解决方案。使用StrToMember函数将隐藏维度的成员作为变量传递给此处。
CREATE MEMBER CURRENTCUBE.[Measures].[Outlook]
AS (
Sum
(
(
[Source Profile].[Source Profile Hierarchy].CurrentMember,
strtomember("[Source Profile].[Source Name].&[" + [Outlook Profile].[Outlook Profile].&[1].Member_Caption + "]")
)
,[Measures].[USD Amount]
)
),
FORMAT_STRING = "#,##0;(#,##0)",
VISIBLE = 1 , DISPLAY_FOLDER = 'USD' , ASSOCIATED_MEASURE_GROUP = 'CARS' ;