Переопределение сценария MDX на уровне All в иерархии атрибутов со связанными атрибутами - PullRequest
0 голосов
/ 07 января 2020

Я собрал некоторую документацию для начинающих ie коллег, чтобы рассмотреть как наш собственный куб, так и, в более общем смысле, технологию SSAS MD. При создании примеров для главы из моего сценария MDX я столкнулся с поведением, которое я не понимаю. Возможно, что-то тонкое в авто-существовании объясняет это. Любое понимание приветствуется - это поможет мне завершить эту документацию, не глядя на глупости sh! Здесь он воссоздан в кубе AdventureWorks 2014 EE (который я встроил в VS2017 для сервера 2016 года). Пример является новой мерой сомнительной ценности. Мы хотим, чтобы целые rnet заказы города любой ячейки были пропорциональны количеству всех городов. Мы хотим, чтобы знаменатель всех городов учитывал любую фильтрацию на уровне штата-провинции или страны. Они являются родителями и прародителями города в соответствии с отношениями атрибутов измерения клиента.

Я добавляю этот сценарий MDX ...

create member currentcube.[Measures].[Bruce] 
as 
    ([Measures].[Internet Order Quantity]).value 
    /
    ([Measures].[Internet Order Quantity],[Customer].[City].[All]).value 
, format_string = '0.0%';
create member currentcube.[Measures].[Bruce2] 
as 
    ([Measures].[Internet Order Quantity],[Customer].[Country].CurrentMember).value 
    /
    ([Measures].[Internet Order Quantity],[Customer].[City].[All],[Customer].[Country].CurrentMember).value 
, format_string = '0.0%';
create member currentcube.[Measures].[Bruce3] 
as 
    ([Measures].[Internet Order Quantity]).value 
    /
    ([Measures].[Internet Order Quantity],[Customer].[City].[All],[Customer].[Country].CurrentMember).value 
, format_string = '0.0%';

create member currentcube.[Measures].[Bruce4] 
as 
    ([Measures].[Internet Order Quantity]).value 
    /
    ([Measures].[Internet Order Quantity],[Customer].[City].[All],[Customer].[State-Province].CurrentMember).value 
, format_string = '0.0%';
create member currentcube.[Measures].[Bruce5] 
as 
    ([Measures].[Internet Order Quantity]).value 
    /
    ([Measures].[Internet Order Quantity],[Customer].[City].[All],[Customer].[State-Province].CurrentMember,[Customer].[Country].CurrentMember).value 
, format_string = '0.0%';

... и запускаю эти запросы MDX ...

select 
    {[Measures].[Internet Order Quantity]
    ,[Measures].[Bruce]
    ,[Measures].[Bruce2]
    ,[Measures].[Bruce3]
    ,[Measures].[Bruce4]
    ,[Measures].[Bruce5]
    }
    on columns 
    , 
    {([Customer].[Country].[All],[Customer].[City].[All Customers]) }
    +
    {
        {[Customer].[Country].[Australia]}
        * 
        {[Customer].[City].Members} 
    }
    /* ALTERNATIVELY 
        {([Customer].[State-Province].[All],[Customer].[City].[All Customers]) }
    +
    {
        {[Customer].[State-Province].[Queensland]}
        * 
        {[Customer].[City].Members} 
    }
    */
    on rows 
from    
    [Adventure Works] 

Но ни один из вариантов не дает мне мера, которую я хочу в обоих обстоятельствах. Правильные значения получены от Bruce3 для запроса страны и от Bruce4 и Bruce5 для запроса Штат-провинция. Для обоих запросов знаменатель, который я хочу, - это вторая ячейка первого столбца.

Province query Country query

Я ожидал, что во всех случаях от Брюса будут правильные результаты, если честно.
Что происходит, пожалуйста?

Большое спасибо

...