MDX Scope, чтобы получить знаменатель - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть многомерный куб SSAS, и я пытаюсь вычислить знаменатель для запроса с помощью оператора области действия.

Я пытаюсь присвоить показателю Total SalesCumulative общее значение всех продаж для всех магазинов. Я хочу, чтобы это оставалось общим значением и не разрезалось в сводной таблице. Мера под названием Total Sales суммирует все продажи для каждого магазина. Я дошел до нижеприведенного, но это просто возвращает значение для каждого магазина и показывает то же значение, что и общий объем продаж.

 SCOPE ([Measures].[Total SalesCumulative],[Dim Store].[Store Name].members);
 THIS = ([Dim Store].[Store Name].[All],[Measures].[Total Sales]);
 END SCOPE;

Кто-нибудь получил какие-либо предложения, как я могу изменить это?

1 Ответ

1 голос
/ 13 апреля 2020

Я проверил вашу формулу в базе данных Adventure Works, и она кажется верной. Просто чтобы быть уверенным, вы можете проверить, что вы получите с помощью запроса, подобного приведенному ниже, в SSMS (без назначения области действия):

with member measures.[All Order Count] as
([Measures].[Internet Order Count],[Product].[Model Name].[All Products] ) 

select {[Measures].[Internet Order Count] ,measures.[All Order Count] } on 0,
[Product].[Model Name].members on 1
from [Adventure Works]

enter image description here

  1. Вы пытались очистить ca sh перед выполнением запроса после внесения изменения?

  2. Во-вторых, возможно, в сценарии есть какое-то другое назначение области действия , который влияет на ту же меру и измерение и переопределяет вашу формулу, потому что выигрывает последнее назначение области.

Попробуйте добавить FREEZE (THIS) к вашему выражению области действия, просто чтобы проверить, изменится ли оно. цифры:

SCOPE ([Measures].[Internet Order Count],[Product].[Model Name].members);
 THIS = ([Product].[Model Name].[All Products] , [Measures].[Internet Order Count]) ;
FREEZE(THIS);
 END SCOPE;  
...