MDX中设置的父母
Posted
技术标签:
【中文标题】MDX中设置的父母【英文标题】:Parents of set in MDX 【发布时间】:2011-10-17 22:15:57 【问题描述】:我有一个过滤器,可以在我的日期维度中选择特定日期,这将作为参数传递到 MDX 查询中。
Filter([Date Dimension].[Calendar Year Hierarchy].[Actual Date].members,
[Date Dimension].[Actual Date].CurrentMember.Properties( "Name" ) = '2011-09-01 00:00:00.000')
我现在想在上面的层次结构中选择周和/或月。
[日期维度].[日历年层次结构].[月份] [日期维度].[日历年层次结构].[日历周]
我尝试了几个功能,但运气不佳,例如.Parent
和DrillupLevel
我可能用错了,或者用错了地方,
感谢您的帮助
【问题讨论】:
【参考方案1】:你可以使用 GENERATE 函数来获取所有的祖先:
Generate
(
Filter([Date Dimension].[Calendar Year Hierarchy].[Actual Date].members,
[Date Dimension].[Actual Date].CurrentMember.Properties( "Name" ) =
'2011-09-01 00:00:00.000'),
Ascendants([Date Dimension].[Calendar Year Hierarchy].CurrentMember)
)
使用 Adventure Works 查询:
Select
[Measures].[Internet Sales Amount] On Columns,
Generate(
Filter([Date].[Calendar].[Date].members,[Date].[Calendar].CurrentMember.Properties("Name") = 'April 1, 2004'),
Ascendants([Date].[Calendar].CurrentMember)) On Rows
From [Adventure Works]
【讨论】:
【参考方案2】:如果您知道要查找的级别,则可以使用MDX Ancestor function 而不是父级:
Ancestor([Date Dimension].[Calendar Year Hierarchy].currentmember,
[Date Dimension].[Calendar Year Hierarchy].[Month])
如果不是,可以使用父函数。请注意,使用属性并不是最快的过滤方法(对于非常大的集合)。
为什么不使用StrToMember MDX function?
StrToMember( ... here build your member with a string ... )
或者如果您可以直接在字符串生成器的帮助下直接编辑 mdx 创建语句?
【讨论】:
【参考方案3】:所以我现在的答案是
Filter([Date Dimension].[Calendar Year Hierarchy].[Actual 日期].members,[日期维度].[实际 日期].CurrentMember.Properties("名称") = '2011-09-01 00:00:00.000') .item(0).parent
使用.item[0]
获取集合中的项目
和 .parent
获取该项目的父项(在我的情况下,我实际上调用了 3 次)
如果有人有更好的想法会很乐意在这里提出。
【讨论】:
【参考方案4】:您可以使用STRTOSET
并将每个输入参数替换为]
与].Parent
,这样您将拥有一组父母。
【讨论】:
以上是关于MDX中设置的父母的主要内容,如果未能解决你的问题,请参考以下文章