У меня есть иерархия в измерении в моем кубе и таблица фактов, которая ссылается на это измерение.Давайте назовем, что иерархия отделов и таблица фактов содержат целевые показатели выставления счетов, установленные для каждого отдела (на уровне записей в день, если это представляет интерес).Данные агрегируются как в обычной иерархии в многомерном кубе.
Проблема заключается в том, что данные в таблице фактов не ограничиваются только «конечными» отделами в дереве иерархии, и поэтому каждый узел /Отдел может иметь или не иметь фактическое значение для цели выставления счета.
Мне нужно, чтобы моя мера возвращала фактическое значение для любого узла, если есть значение, или сумму значений его потомков (еслиони сами имеют действительные значения, тогда игнорируют их потомков).Я могу вернуть значение в любом данном узле с помощью свойства .DATAMEMBER
и добавить условие для замены нуля (если это так) суммой потомков следующим образом:
with member DirectD as (iif(([Department].[Departments].currentmember.datamember, [Measures].[Department Billing Target]) = null,
([Measures].[Department Billing Target]),
([Department].[Departments].currentmember.datamember, [Measures].[Department Billing Target])))
Проблема в том, что я не могу гарантировать, что одна и та же логика применяется к каждому узлу "вниз" иерархии.Параметр MembersWithData
установлен на NonLeafDataHidden
в измерении.[Measures].[Department Billing Target]
является вычисляемым элементом, поэтому, похоже, Aggregate
не является опцией.
В качестве примера, я хотел бы получить значение 3000, если я запрашиваю цель выставления счета для отдела A (изображение 1):
Для отдела C на рисунке 2 мне нужно получить 1400 (E, имея потомков, имеет фактическое значение, которое имеет приоритет над суммой его детей).
Любая помощь будет принята с благодарностью.