Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / olap вычисляемая мера / 8 сообщений из 8, страница 1 из 1
04.05.2019, 10:18
    #39809647
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
olap вычисляемая мера
Здравствуйте!
Прошу помощи с такой задачей:
есть две группы мер: Unique Articles, в которой мера Articles Unique Count с функцией агрегирования DistinctCount и группа мер Unique Companies, в которой есть мера Companies Unique Count также с функцией агрегирования DistinctCount. Необходимо реализовать вычисляемую меру: уникальное количество артикулов, для которых уникальное количество компаний больше двух. Сколько я не пытался реализовать вычисления используя только эти две меры Articles Unique Count и Companies Unique Count, у меня ничего не вышло. Получилось решить задачу только добавлением в источник-запрос поля, в котором для каждого артикула проставлен флаг, существует ли для него две и более уникальных компаний, плюс добавил измерение с двумя элементами 0 и 1, следующее вычисление отображает верный результат:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE MEMBER CURRENTCUBE.[Measures].[Articles PCS Companies gt 2]
AS 
    ([Measures].[Articles Unique Count], [Is Company Count gt 2].[Is Company Count gt 2].&[1]), 
FORMAT_STRING = "#,#0", 
VISIBLE = 1 ,
ASSOCIATED_MEASURE_GROUP = 'Prices';


тут не сложно.
Подскажите пожалуйста, а как можно решить эту задачу более красиво, без использования такого дополнительного служебного измерения?
...
Рейтинг: 0 / 0
06.05.2019, 09:03
    #39810012
PassedBI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
olap вычисляемая мера
можно через измерение товаров посчитать, типа такого
Код: sql
1.
2.
3.
4.
sum
(Articles.ArticleKey.ArticleKey.members
,iif([Measures].[Unique Companies]>2, 1, null)
)


ну и плюс тут всякие финты для оптимизации еще, типа доп.условия not isEmpty, Non empty behaviour, суррогатных ключей на товарах итд.
...
Рейтинг: 0 / 0
06.05.2019, 18:31
    #39810377
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
olap вычисляемая мера
PassedBI, это работает, но когда добавил в код строчку except([Bpg Companies].[Company].[Company].members, [Bpg Companies].[Company].&[0])

запрос начал просто "висеть", пока не знаю почему:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with
member measures.[Articles PCS Companies gt 2] as 
sum(
		(
			except([Bpg Companies].[Company].[Company].members, [Bpg Companies].[Company].&[0]), --запрос висит при наличии этой строчки
			[Product].[Article Number].[Article Number].members
		),
        iif([Measures].[Companies Unique Count] >= 2, 1, null)
	)
SELECT
	{[Calendar].[Y-M-D Hierarchy].[Calendar Date].&[20190506]} on 0,
	measures.[Articles PCS Companies gt 2] on 1
from
	[Prices];
...
Рейтинг: 0 / 0
06.05.2019, 18:40
    #39810381
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
olap вычисляемая мера
точнее так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE MEMBER CURRENTCUBE.[Measures].[Articles PCS Companies gt 1]
AS 
    sum(
        (
            except([Bpg Companies].[Company].[Company].members, [Bpg Companies].[Company].&[0]),
            [Product].[Article Number].[Article Number].members
        ),
        iif([Measures].[Companies Unique Count] >= 1, 1, null)
    ), 
FORMAT_STRING = "#,#0", 
VISIBLE = 1 ,
ASSOCIATED_MEASURE_GROUP = 'Prices';
...
Рейтинг: 0 / 0
06.05.2019, 19:02
    #39810391
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
olap вычисляемая мера
так тоже не работает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE MEMBER CURRENTCUBE.[Measures].[Articles PCS Companies gt 1]
AS 
    (
		sum(
			(
				[Product].[Article Number].[Article Number].members
			),
			iif([Measures].[Companies Unique Count] >= 1, 1, null)
		), 
		except([Bpg Companies].[Company].[Company], [Bpg Companies].[Company].&[0])
	)
FORMAT_STRING = "#,#0", 
VISIBLE = 1 ,
ASSOCIATED_MEASURE_GROUP = 'Prices';
...
Рейтинг: 0 / 0
06.05.2019, 19:30
    #39810396
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
olap вычисляемая мера
пришла идея сделать except([Bpg Companies].[Company].[Company], [Bpg Companies].[Company].&[0]) элементами атрибута у измерения по умолчанию
...
Рейтинг: 0 / 0
07.05.2019, 11:32
    #39810606
PassedBI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
olap вычисляемая мера
Вам надо исключить одну компанию из расчета?
Если это возможно, исключите ее из таблицы фактов.
Если нет, то можно так переписать, но, боюсь, это будет не очень быстро работать
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE MEMBER CURRENTCUBE.[Measures].[Articles PCS Companies gt 1]
AS 
    (
		sum(
			[Product].[Article Number].[Article Number].members
		       ,iif
                         (  aggregate
                               (except([Bpg Companies].[Company].[Company], [Bpg Companies].[Company].&[0])
                               ,[Measures].[Companies Unique Count] >= 1
                               )
                        , 1
                        , null
                        )
		), 		
FORMAT_STRING = "#,#0", 
VISIBLE = 1 ,
NON_EMPTY_BEHAVIOR = { [Measures].[Companies Unique Count] }; 
ASSOCIATED_MEASURE_GROUP = 'Prices';



Еще можно сделать искусственный атрибут в измерении компаний, типа флага Участвует в расчетах (1/0) и переписать условие в формуле через него, так должно быть быстрее.
Код: sql
1.
iif(  ([Measures].[Companies Unique Count], [Участвует в расчетах].&[1]) >= 1, 1, null)
...
Рейтинг: 0 / 0
08.05.2019, 14:49
    #39811344
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
olap вычисляемая мера
PassedBI, спасибо за помощь, буду разбираться, но я пока уже изначально сделал через измерения, кстати такой вариант работает
быстрее чем если делать подобные расчетные меры.
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / olap вычисляемая мера / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]