TopCount фильтруется по значению измерения даты

#ssas #mdx

#ssas #многомерные выражения

Вопрос:

Я пытаюсь получить 10 лучших стран по значению из любых показателей, где ставка дисконтирования равна -20, и на определенную дату. Я создал простой динамический набор, определенный как:

 CREATE DYNAMIC SET CURRENTCUBE.[Top10CountryBy20Disc]
 AS 

TopCount
        ( [Customer].[Country].members, 
                10,   [Discount].[Discount].amp;[-20%])
      ;
 

Это дает мне 10 лучших клиентов, суммируемых по общему значению показателя, но мне нужно отфильтровать по определенной дате. Общая топ-10 не будет совпадать с топ-10 на определенную дату, поэтому мне нужно включить некоторый контекст даты. В настоящее время цифры, которые я получаю для каждой страны, верны, но неверен список стран (список 10 лучших).

Я использую набор [Latest], указанный ниже, во многих других отчетах, и это работает просто отлично, но я изо всех сил пытаюсь объединить это при использовании вышеуказанного набора.

 CREATE DYNAMIC SET CURRENTCUBE.[Latest]
 AS FILTER( 
            [Date].[Date Key].[Date Key].members, IsDate([Date].[Date Key].currentmember.membervalue) 
AND (

            DateDiff("d", [Date].[Date Key].currentmember.membervalue,  IIF(Weekday(Now()) = 2, 3, 1)
            
    );
 

Логически я пытаюсь сделать что-то вроде приведенного ниже, что является недопустимым синтаксисом:

 TopCount
        ( [Customer].[Country].members, 
                10,   ([Discount].[Discount].amp;[-20%], [Latest]))
      ;
 

Был бы признателен за некоторые предложения / указания по этому поводу.

Ответ №1:

Этот подход решил мою проблему:

 GENERATE ( [Latest],
             {TopCount
                ( descendants([Customer].[Country],,AFTER), 
                    10,   
                    VBA!Abs(([Discount].[Discount].amp;[-20%], ([Measures].[MeasureName],[Date].[Date Key].currentmember)))
                )
            }
         );