Вернуть 'n' строк из вывода MDX - PullRequest
1 голос
/ 11 марта 2019

Как отфильтровать вывод MDX для первых 'n' строк, а затем выполнить цикл по следующим 'n' строкам и т. Д., Используя следующий пример.

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

Я пытаюсь это сделать, потому что я хотел бы перебрать все 'n' строки вывода MDX и экспортировать результат в Excel.

Исходный запрос возвращает очень большое количество записей. Вот почему я планирую просмотреть записи.

1 Ответ

1 голос
/ 11 марта 2019

Вы можете сделать это так: во-первых, просто возьмите топ N (скажем, топ-5 участников), после этого возьмите топ-10 участников, кроме топ-5.После этого возьмите 15 лучших членов, кроме 10 лучших, и так далее ...

Вот формула для первых 5, упорядоченная [SomeAmount], которая является одной из мер из куба

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]

Надеюсь, это поможет.

...