我有一个过滤器,用于选择日期维度中的特定日期。这将作为参数传入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
我可能错误地使用它们或在错误的位置使用它们,
感谢您的帮助
答案 0 :(得分:2)
您可以使用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]
答案 1 :(得分:1)
如果您知道要查找的级别,可以使用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直接在字符串生成器的帮助下创建语句?
答案 2 :(得分:0)
所以我现在的答案是
过滤器([日期维度]。[日历年度层次结构]。[实际 日期]。成员,[日期维度]。[实际 Date] .CurrentMember.Properties(“Name”)='2011-09-01 00:00:00.000') .item(0).parent
使用.item[0]
获取集合中的项目
和.parent
得到那些项目的父项(在我的情况下,我实际上称它为3次)
如果有任何更好的想法会喜欢他们。
答案 3 :(得分:0)
您可以使用STRTOSET
,并为每个输入参数将]
替换为].Parent
,这样您就可以拥有一组父母。