MDX: сделать значение измерения 0 основанным на флаге - PullRequest
0 голосов
/ 29 мая 2018

Буду очень признателен за любую помощь по этому вопросу.

У меня есть мера под названием «Продажи», заполненная значениями, однако я пытаюсь установить значение «Продажи» в 0, когда «Флаг продаж» имеет значениеустановите на 0.

Важное примечание: Флаг продаж основан на дате (самый низкий уровень детализации).

enter image description here

Сложностьчто я действительно испытываю и не могу понять, как я пытаюсь отобразить результат MDX.

Как объяснено выше, я хотел бы установить значение «Продажи» равным 0, когда у нас есть 0 в«Флаг продаж» (который основан на дате), но когда я запускаю сценарий MDX, я бы не хотел отображать дату в строках, а вместо этого указывал только неделю (более высокий уровень до даты), как показано ниже.:

enter image description here

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

Лаз

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Рад слышать, если ответ Веселина работает для вас, но если нет ...

Также возможно несколько подходов.

  1. Использование Measure expression для показателя продаж:

Measure Expression

Используйте команду SCOPE для уровня дня (если это ключевой уровень измерения даты).Если это не ключевой уровень, вам нужно агрегировать на КАЖДОМ уровне (неделю, год и т. Д.) Для эмуляции показателя AggregateFunction of Sales, но с обновленным поведением для одного флага:

SCOPE ([Date]. [Ваша иерархия дат]]. [день] .members, [Measures] [Продажи]).THIS = IIF ([Флаг продаж] .CurrentMember = 1, [Показатели]. [Продажи], 0);END SCOPE;

Обновить логику в DSV, чтобы умножить столбец Sales на SalesFlag.Это самый простой способ с точки зрения T-SQL.

0 голосов
/ 30 мая 2018

Вам нужно определить элемент в MDX перед выбором.Примерно так:

WITH MEMBER [Measures].[Fixed Sales] as IIF([Sales Flag].currentMember=1,[Sales], 0)

SELECT [Measures].[Fixed Sales] on 0, [Sales Flag] on 1 from [Cube]

Я пишу здесь код без SSAS, так что это может быть неправильный синтаксис на 100%, но вы можете получить общее представление;)

Вы можете добавитьiif в части SELECT, но я считаю создание элемента более чистым решением.

SELECT IIF([Sales Flag].currentMember=1,[Sales], 0) on 0, [Sales Flag] on 1 from [Cube]

Если у вас есть контроль над кубом в SSAS, вы можете создать вычисляемый элемент и получить к нему более легкий доступ.

...