MDX Расчетный элемент с фильтром - PullRequest
0 голосов
/ 17 мая 2018

Быть довольно новым для MDX, так что это может быть новичком. Но не удалось «перевести» какие-либо ответы на решение!

У меня есть мера, которая подсчитывает количество строк, которое называется [Меры]. [Количество фактов]

У меня также есть измерение под названием [Документ], в котором есть поле под названием [Завершено].

[Документ]. [Завершено] может иметь одно из двух значений: [Да] или [Нет].

Измерение [Документ] имеет несколько других полей, например [Тип документа]

Что я хотел бы задать, например: «Какой процент моих документов разных типов заполнен».

Я пытался создать [Завершенный счет], например:

([Measures].[Fact Count],
[Document].[Is Completed].&[Yes])

, а затем использовать его как:

[Measures].[Completed Count]/[Measures].[Fact Count]*100

Но (конечно) [Законченный счет] затем берет все мои заполненные документы, а не только те, что, например, на. [Тип документа]

Надеюсь, это имеет смысл для кого-то!

Ответы [ 3 ]

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

Ах, есть решение!

Поскольку мое измерение содержит значения «Да» или «Нет», я могу преобразовать их в 1 и 0 и добавить их в свои [Меры] как [Меры]. [Сумма завершена]. И как следует из названия: я сложу значения.

Тогда расчет будет прямым:

[Measures].[Is Completed Sum]/
[Measures].[Fact Count]*100

или если я сделаю все возможное, чтобы не делить на 0:

iif(
[Measures].[Fact Count] = 0,
null,
[Measures].[Is Completed Sum]/
[Measures].[Fact Count]*100
)

Я по-прежнему буду хранить свои Да / Нет в Измерении, так как я могу использовать их в качестве фильтров при необходимости.

whytheq, большое спасибо за ваш вклад! Это было очень ценно и заставило мой мозг вращаться в правильном направлении: -)

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

Может быть ОБЛАСТЬ ПРИМЕНЕНИЯ это.(украл код у Whytheq, я думаю, он получил правильный ответ)

SCOPE ([Document].[Is Completed].&[Yes])
THIS = (
 ([Measures].[Fact Count],
  [Document].[Is Completed].&[Yes])
/
 ([Measures].[Fact Count],
  [Document].[Is Completed].[All])
)
*100
END SCOPE

Относительно

Поскольку в моем измерении содержатся значения "Да" или "Нет", я могу преобразоватьих к 1 и 0 Вы можете улучшить свою модель и добавить новое значение столбца в ваше измерение.

И фактически получить 1 и 0 с помощью только . VALUE

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

Может быть, это другая сторона, которая должна быть более явной?

(
 ([Measures].[Fact Count],
  [Document].[Is Completed].&[Yes])
/
 ([Measures].[Fact Count],
  [Document].[Is Completed].[All])
)
*100

Если у вас есть иерархия атрибутов для Завершено, попробуйте использовать это - возможно, вот так ...

(
 ([Measures].[Fact Count],
  [Is Completed].[Is Completed].[Is Completed].&[Yes])
/
 ([Measures].[Fact Count],
  [Is Completed].[Is Completed].[All])
)
*100

или это

(
 ([Measures].[Fact Count],
  [Is Completed].[Is Completed].&[Yes])
/
 ([Measures].[Fact Count],
  [Is Completed].[All])
)
*100

Если вы измените меру на следующую и поставите Да |Нет НА КОЛОННАХ Вы начинаете получать правильные результаты?

(
 ([Measures].[Fact Count])
/
 ([Measures].[Fact Count],
  [Document].[Is Completed].[All])
)
*100
...