MDX: как получить значение MAX и час, когда значение MAX происходит для каждого дня - PullRequest
1 голос
/ 24 марта 2019

У меня есть куб с определенным измерением в часах и столбцом в таблице фактов с именем numberofoccurresces. Как я могу получить максимальное количество случаев и час, когда значение произошло для каждого дня. Я пробовал следующее

SELECT [Measures].[numberofoccurrances] ON 0,
TOPCOUNT([Hour].[Hour].MEMBERS, 1, [Measures].[numberofoccurrances])
ON 1
FROM [all_measurements]

, который находит час, когда произошло максимальное значение, но суммирует все значения за этот час и возвращает неправильное значение.

Есть ли способ получить каждый час с максимальным значением для дня в двух столбцах?

1 Ответ

0 голосов
/ 25 марта 2019

Вам нужно использовать rank () и функцию фильтра. Посмотрите на пример ниже.

В приведенном ниже запросе перечислены интернет-продажи за год -месяцы

SELECT 
{[Measures].[Internet Sales Amount]} ON COLUMNS,
non empty ({[Date].[Calendar Year].[CY 2011],[Date].[Calendar Year].[CY 2012],[Date].[Calendar Year].[CY 2013]},[Date].[Month of Year].[Month of Year])
ON ROWS 
FROM
[Adventure Works]

Результаты enter image description here

Теперь оцените месяцы по годам и отфильтруйте их первым рандом

WITH 
MEMBER [Measures].[Monthly_Ranking_InternetSales] AS
RANK( [Date].[Month of Year].CurrentMember,
ORDER( [Date].[Month of Year].[Month of Year].Members , [Measures].[Internet Sales Amount], BDESC)
) 
SELECT 
{[Measures].[Internet Sales Amount]} ON COLUMNS,
non empty
filter( ({[Date].[Calendar Year].[CY 2011],[Date].[Calendar Year].[CY 2012],[Date].[Calendar Year].[CY 2013]},
ORDER  ([Date].[Month of Year].[Month of Year], [Measures].[Monthly_Ranking_InternetSales] , BASC ) 
),[Measures].[Monthly_Ranking_InternetSales] <2)
ON ROWS 
FROM
[Adventure Works]

Результат

enter image description here

...