#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)))
)
}
);