Потомки только для избранных - PullRequest
1 голос
/ 16 октября 2019

Иерархия продуктов состоит из 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 (), чтобы оно относилось только к [Выбранным продуктам]?

Как мне переписать?

...