MDX: различное число членов, суммированных по другому измерению - PullRequest
0 голосов
/ 29 ноября 2018

Из моего куба я пытаюсь получить различное количество всех непустых [ID].[FullID] с, но суммируется [Underlying].

Я знаю, что, например, есть два идентификатора для [Underlying].[Underlying1] в этом конкретном срезе WHERE, и я могу увидеть это, выполнив приведенный ниже запрос MDX, который ясно дает мне строку для каждого (но нулевое число?):

Результаты:

Underlying  | FullID | CountOf
------------------------------
Underlying1 | ID1    | 0
Underlying1 | ID2    | 0
...

Код:

WITH 
    MEMBER CountOf AS
    DistinctCount([ID].[FullID].Children)
SELECT
    NON EMPTY {[Underlying].Children * [ID].[FullID].Children
    } ON ROWS,
    NON EMPTY {CountOf
    } ON COLUMNS
FROM [MyCube]
WHERE ([Time].&[2018-11-27T00:00:00],
       [Factor].[FactorName].[FACTOR1],
       [Factor].[FactorType].[FACTORTYPE1]
       [Location].[Location1]
       )

Однако, когда я удаляю * [ID].[FullID].Children, я не получаю то, что хотел бы:

Что я хочу:

Underlying  | CountOf
---------------------
Underlying1 | 2
...

ЧтоЯ получаю:

Underlying  | CountOf
---------------------
Underlying1 | 24
...

Здесь явно происходит что-то еще, чтобы дать мне счет 24, но я не могу понять ...

1 Ответ

0 голосов
/ 29 ноября 2018

Вы получаете 24, потому что вы измеряете, подсчитывает членов в [ID]. [FullID] .Children.Что я понимаю, так это то, что вы хотите посчитать количество [ID]. [FullID], у которых есть значение факта, доступное для них для [Базового] ​​.Дети.Таким образом, ваш код должен выглядеть следующим образом

WITH 
MEMBER CountOf AS
Count(
nonempty(([Underlying].currentmember,[ID].[FullID].Children),
[Measures].[ConnectingMeasure])
)
SELECT NON EMPTY {[Underlying].Children } ON ROWS,
NON EMPTY {CountOf} ON COLUMNS
FROM [MyCube]
WHERE ([Time].&[2018-11-27T00:00:00],[Factor].[FactorName].[FACTOR1],
[Factor].[FactorType].[FACTORTYPE1],[Location].[Location1]
)

Вот пример того, что вы хотите делать в adventureworks.Я пытаюсь сосчитать все акции, которые присутствуют для продукта, на основе данных интернет-продаж.

WITH 
MEMBER CountOf AS
count(nonempty( ([Product].[Product].currentmember, [Promotion].[Promotion].children) ,[Measures].[Internet Sales Amount]))
SELECT
NON EMPTY {CountOf} ON COLUMNS,
NON EMPTY {
([Product].[Product].Children )
} ON ROWS
FROM [Adventure Works]

// Базовый запрос, чтобы понять, что считается

WITH 
MEMBER CountOf AS
Count(nonempty( ([Product].[Product].currentmember, [Promotion].[Promotion].children) ,[Measures].[Internet Sales Amount]))
SELECT
NON EMPTY [Measures].[Internet Sales Amount] ON COLUMNS,
NON EMPTY {
([Product].[Product].Children,[Promotion].[Promotion].children )
} ON ROWS
FROM [Adventure Works]
...