Атрибут измерения SSAS на основе рассчитанной меры SSAS - PullRequest
0 голосов
/ 27 ноября 2018

В настоящее время я борюсь с проблемой, и я надеюсь, что вы поможете с этим.

Мне нужно динамически связать атрибут измерения в моем кубе SSAS (многомерный) на основе вычисления, выполненного для кубаСам.

Упрощение, основанное на дате, выбранной пользователем, у меня есть расчет (уже сделано), который возвращает количество дней, в течение которых тип материала находится на складе.С этим значением я хочу вернуть атрибут, основанный на диапазоне значений.

например:

Nr_Days_Calculated = 80 

РАЗМЕР:

ID  INI  END        DSC

1     0  90         TextA

2    91  180        TextB

3   181  99999      TextC

Результат: 1 - TextA

Может кто-нибудь помочь мне?Спасибо за внимание.

1 Ответ

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

Это выполнимо, если ваше измерение также имеет динамические вычисления.Позвольте мне показать вам другой пример, но идея та же.

У меня есть измерение [Повторные клиенты], если клиент (идентифицированный по электронной почте) подписался во второй, третий, четвертый раз - переместить этого клиента всоответствующий элемент этого измерения.

Во-первых, создайте измерение с одним элементом по умолчанию.

Во-вторых, добавьте несколько пустых элементов:

(вы можете пропустить его, поскольку dim-элементыматериализовано в вашем случае)

CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[One] as NULL;      
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Two] as NULL;      
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Three] as NULL;      
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Four] as NULL;      
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Five] as NULL;      
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[6+] as NULL;      
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[N/A] as NULL; 

В-третьих, добавьте свои расчеты:

SCOPE([Repeat Customers].[Repeat Customers].[All].[One],[Measures].[Count]);      
THIS=Count(Filter([Email].[Email].Members,([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])=1));      
END SCOPE;      

SCOPE([Repeat Customers].[Repeat Customers].[All].[Two],[Measures].[Count]);      
THIS=Count(Filter([Email].[Email].Members,([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])=2));      
END SCOPE;      

...     

SCOPE([Repeat Customers].[Repeat Customers].[All].[6+],[Measures].[Count]);      
THIS=Count(Filter([Email].[Email].Members,([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])>=6));      
END SCOPE;

SCOPE([Repeat Customers].[Repeat Customers].[All].[N/A],[Measures].[Count]);      
THIS=([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])
-SUM({
 [Repeat Customers].[Repeat Customers].[All].[One]
,[Repeat Customers].[Repeat Customers].[All].[Two]
,[Repeat Customers].[Repeat Customers].[All].[Three]
,[Repeat Customers].[Repeat Customers].[All].[Four]
,[Repeat Customers].[Repeat Customers].[All].[Five]
,[Repeat Customers].[Repeat Customers].[All].[6+]
},[Measures].[Count]);      
END SCOPE;

Вывод:

DynamicDim

Я думаю, что ваш фильтр должен использовать> = и <= Nr_Days_Calculated.Но не уверен, какую меру вы пытаетесь показать.<code>1 - TextA связано с [Measures].[Nr_Days_Calculated]?Если да, у нас все хорошо, просто используйте вашу меру и SUM или в качестве агрегата вместо Count () в моем случае.

Это не лучшее решение по производительности (из-за динамического расчета), но все же оно работает,Надеюсь, это поможет.

...