我正在尝试弄清楚如何获得用户定义的层次结构中某个级别的总计。例如,如果我这样做(在这里使用 Adventure 有效):
SELECT [Measures].[Internet Sales Amount] ON 0,
([Date].[Calendar Year].ALLMEMBERS * [Date].[Month of Year].ALLMEMBERS) ON 1
FROM [Adventure Works]
我得到每对年/月值的总计。
如何使用日期维度中的日历用户层次结构重写此查询?例如:
SELECT [Measures].[Internet Sales Amount] ON 0,
([Date].[Calendar].[Year] * [Date].[Calendar].[Month]) ON 1
FROM [Adventure Works]
最佳答案
你可以使用
SELECT [Measures].[Internet Sales Amount] ON 0,
Hierarchize([Date].[Calendar].[Calendar Year] + [Date].[Calendar].[Month]) ON 1
FROM [Adventure Works]
这将向您显示每年包含月份之前的值(即其中包含的月份的总和)。
+
是 MDX 中 Union
的缩写形式,Hierarchize
按层次顺序对集合进行排序,这意味着父项在子项之前。
如果您想要与第一个结果类似的结果,我能想象的最接近的结果是通过如下计算的测量:
WITH Member Measures.Year AS
IIf([Date].[Calendar].CurrentMember.Level IS [Date].[Calendar].[Calendar Year],
[Date].[Calendar].CurrentMember.Name,
Ancestor([Date].[Calendar].CurrentMember, [Date].[Calendar].[Calendar Year]).Name
)
Member Measures.Month AS
IIf([Date].[Calendar].CurrentMember.Level IS [Date].[Calendar].[Month],
[Date].[Calendar].CurrentMember.Name,
'All Months'
)
SELECT {
Measures.Year,
Measures.Month,
[Measures].[Internet Sales Amount]
}
ON 0,
Hierarchize([Date].[Calendar].[Calendar Year] + [Date].[Calendar].[Month]) ON 1
FROM [Adventure Works]
请注意,计算成员不需要返回数字,它们也可以返回字符串。
关于ssas - 如何获取 SSAS/MDX 中用户定义层次结构中级别的 "(all)"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21675051/