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')

我现在想在上面的层次结构中选择周和/或月。

[日期维度].[日历年层次结构].[月份] [日期维度].[日历年层次结构].[日历周]

我尝试了几个功能,但运气不佳,例如.ParentDrillupLevel

我可能用错了,或者用错了地方,

感谢您的帮助

【问题讨论】:

【参考方案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中设置的父母的主要内容,如果未能解决你的问题,请参考以下文章

QT如何摆脱小部件与其父母之间的空间

jquery父母选择器 - 多个父母

NSFetchedResultsController - 父母和祖父母作为部分标题

一对多查询为每个父母选择所有父母和单个***孩子

SQL:如何找到父母有给定ID的孩子的所有父母

NLP父母智慧疗愈原生家庭创伤,疗愈父母关系,重塑生命