Иерархия продуктов состоит из 3 уровней: Категория, Подкатегория и Продукт
Сначала я создал динамический набор [Выбранные продукты] :
CREATE DYNAMIC SET [Selected Products] as (
EXISTING [Product].[Product].members - [Product].[Product].[All]
);
У меня есть measure_ , который рассчитывается следующим образом:
CREATE MEMBER CURRENTCUBE.[MEASURES].[MyMeasure(%)_]
AS IIF([Measures].[Total] <> 0, [Measures].[SomeMeasure]/[Measures].[Total], NULL)
и используется для вычисления следующей меры :
CREATE MEMBER CURRENTCUBE.[MEASURES].[MyMeasure(%)]
AS
(
IIF(
[Product].[Product Hierarchy].CurrentMember IS [Product].[Product Hierarchy].[All]
,AVG([Selected Products],[MEASURES].[MyMeasure(%)_]),
AVG(Descendants([Product].[Product Hierarchy].currentmember,[Product].[Product Hierarchy].Levels('Product'),SELF)
, [MEASURES].[MyMeasure(%)_])
)
)
Общий общий расчет в порядке, так как он занимает все [Выбранные продукты] Расчет на уровне продукта также в порядке.
Проблема в том, когда онрассчитывается на уровне Категория или Подкатегория , если не все принадлежащие продукты выбраны. Возвращенные значения фактически являются вычислениями для всех принадлежащих потомков, а не , выбранных только .
Можно ли изменить вышеприведенное выражение Descendants (), чтобы оно относилось только к [Выбранным продуктам]?
Как мне переписать?