如何过滤第一个'n'行的MDX输出,然后在下一个'n'行上循环循环,依此类推。
SELECT
{ [Measures1].members, [Measures2].members } ON COLUMNS,
{ [Date].members } ON ROWS
FROM [cube]
我正在尝试此操作,因为我想在MDX输出的每个" N"行上循环并将结果导出到Excel。
原始查询返回大量记录。这就是我打算在记录上循环的原因。
您可以这样做:首先,占据顶部N(假设前5名成员),此后以前五名以外的前10名成员。之后,除了前10名以外的前15名成员,依此类推...
这是[someamount]订购的前5个公式,这是多维数据集的措施之一
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 Cube,则可以在那里尝试此查询:
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]
您也可以在冒险上尝试此操作。
以及评论中的示例:
SELECT EXCEPT(TopCount({dim1.members}*{dim2.members},10),
TopCount({dim1.members}*{dim2.members},5)) on ROWS,
{dim3.members} on COLUMNS
FROM [cube]
希望它有帮助。