从MDX输出返回'n'行

问题描述 投票:1回答:1

如何过滤第一个'n'行的MDX输出,然后循环接下来的'n'行,依此类推如下。

SELECT  
{ [Measures1].members,  [Measures2].members } ON COLUMNS,  
{ [Date].members } ON ROWS  
FROM [cube]

我正在尝试这个,因为我想遍历MDX输出的每个'n'行并将结果导出到excel。

原始查询返回非常多的记录。这就是我计划循环记录的原因。

mdx olap mdx-query
1个回答
1
投票

你可以这样做:首先,只需要取得前N名(比如前5名成员),然后排在前五位,除了前五名。除此之外,前15名成员除了前10名,依此类推......

这是前5个的公式,按[Some Amount]排序,这是多维数据集中的一个度量

SELECT  
{ [Measures].[SomeAmount] } ON COLUMNS,  
EXCEPT(TopCount([Date].members, 5,[Measures].[SomeAmount] ),TopCount([Date].members, 0,[Measures].[SomeAmount] ))  ON ROWS  
FROM [cube]

并为接下来的五个(前五个被跳过):

SELECT  
{ [Measures].[SomeAmount] } ON COLUMNS,  
EXCEPT(TopCount([Date].members, 10,[Measures].[SomeAmount]  ),TopCount([Date].members, 5,[Measures].[SomeAmount]  ))  ON ROWS  
FROM [cube]

等等...

如果您有AdventureWorks多维数据集,可以在那里尝试此查询:

SELECT  
{ [Measures].[Internet Order Count] } ON COLUMNS,  
EXCEPT(TopCount([Date].[Calendar].members, 10, [Measures].[Internet Order Count]),
TopCount([Date].[Calendar].members, 5,[Measures].[Internet Order Count] ))  ON ROWS  
FROM [Adventure Works]

此外,对于您的评论中您已交叉加入的示例:

SELECT 
{Department.members}  on COLUMNS,
EXCEPT(TopCount({[Product].[Status].members}*{Date.[Calendar].members}, 10), 
TopCount({[Product].[Status].members}*{Date.[Calendar].members}, 5)) on ROWS
FROM [Adventure Works]

你也可以在Adventure Works上试试这个。

还有你的例子来自评论:

SELECT EXCEPT(TopCount({dim1.members}*{dim2.members},10), 
TopCount({dim1.members}*{dim2.members},5)) on ROWS, 
{dim3.members} on COLUMNS 
FROM [cube]

希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.