Гость
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MDX пересечение продаж / 7 сообщений из 7, страница 1 из 1
06.08.2021, 21:42
    #40089287
montoya.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX пересечение продаж
приветсвтую.
прошу подсказать.
суть вопроса
посчитать сколько наименований пересекаются по продажам в разрезе хотя бы одной страны.

что бы считалось на уровне страны и товара
и общий итог выводило суммируя

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
with 
	dynamic set [Selected Countries]
	as (
		 [Geography].[Geography].[Country].Members
	   )
	dynamic set [Selected Products]
	as (
		 [Product].[Product].[Product].Members
	   )
	member [Orders By Selected Countries] 
	as (  
			  SUM([Selected Countries]
				 ,[Measures].[Reseller Order Quantity]
				 )
		)
	member [Intersect]
	as (
		IIF([Measures].[Reseller Order Quantity] > 0 
			and [Orders By Selected Countries]  > 0 
			and [Measures].[Reseller Order Quantity]<[Orders By Selected Countries] 
			,1,0)
	   )
SELECT  { [Intersect]
		, [Measures].[Reseller Order Quantity]
		, [Orders By Selected Countries] 
		} 
		* [Geography].[Country].Members
		ON 0
	, NON EMPTY { [Product].[Product].[Cable Lock]
				 ,[Product].[Product].[HL Road Frame - Black, 44]
				 ,[Product].[Product].&[393]
				 } ON 1
FROM [Adventure Works]
WHERE ([Date].[Calendar].[Month].&[2011]&[12]
,{[Geography].[Geography].[Country].&[France]
		   , [Geography].[Geography].[Country].&[Canada]
		   , [Geography].[Geography].[Country].&[United Kingdom]}
	   )



выше скрипт
на уровне товара значение ставит правильное.(1 или 0)
но как сделать, что бы на уровне категории сумировало то, что на уровне товара?
и на уровне общего итога выводило сумму данных еденичек.

спасибо.
...
Рейтинг: 0 / 0
06.08.2021, 21:44
    #40089288
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX пересечение продаж
montoya.,

проставить эти данные в scope на детальном уровне в фиктивную null-меру с sum-агрегацией
...
Рейтинг: 0 / 0
06.08.2021, 21:56
    #40089290
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX пересечение продаж
Вообще, зря вы это делаете. Решение будет неподдерживаемым.
...
Рейтинг: 0 / 0
06.08.2021, 22:10
    #40089292
montoya.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX пересечение продаж
Критик
Вообще, зря вы это делаете. Решение будет неподдерживаемым.

а как не зря решить задачу?)
...
Рейтинг: 0 / 0
06.08.2021, 22:20
    #40089296
montoya.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX пересечение продаж
Критик
montoya.,

проставить эти данные в scope на детальном уровне в фиктивную null-меру с sum-агрегацией


не получилось...

вот такое прописал, но на уровне категорий всё равно результат не тот что нужен.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
create dynamic set [Selected Countries]
	as (
		 [Geography].[Geography].[Country].Members
	   );

create dynamic set [Selected Products]
	as (
		 [Product].[Product].[Product].Members
	   );

create member CurrentCube.[Measures].[Orders By Selected Countries] 
	as (  
			  SUM([Selected Countries]
				 ,[Measures].[Reseller Order Quantity]
				 )
		);

create member CurrentCube.[Measures].[hidden Intersect]
	as (
		IIF([Measures].[Reseller Order Quantity] > 0 
			and [Orders By Selected Countries]  > 0 
			and [Measures].[Reseller Order Quantity]<[Orders By Selected Countries] 
			,1,0)
	   );

create member CurrentCube.[Measures].[Intersect]
as null;

scope ([Measures].[Intersect]);
    scope([Product].[Product].Members);
        this = [Measures].[hidden Intersect];
    end scope;

    scope([Product].[Category].Members);
        this = sum([Measures].[hidden Intersect]);
    end scope;
end scope;




...
Рейтинг: 0 / 0
06.08.2021, 23:03
    #40089299
montoya.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX пересечение продаж
Критик
montoya.,

проставить эти данные в scope на детальном уровне в фиктивную null-меру с sum-агрегацией


спасибо, вроде получил, что хотел.
при таком варианте


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
create dynamic set [Selected Countries]
	as (
		 [Geography].[Geography].[Country].Members
	   );

create dynamic set [Selected Products]
	as (
		 [Product].[Product].[Product].Members
	   );

create member CurrentCube.[Measures].[Orders By Selected Countries] 
	as (  
			  SUM([Selected Countries]
				 ,[Measures].[Reseller Order Quantity]
				 )
		);

create member CurrentCube.[Measures].[hidden Intersect]
	as (
		IIF([Measures].[Reseller Order Quantity] > 0 
			and [Orders By Selected Countries]  > 0 
			and [Measures].[Reseller Order Quantity]<[Orders By Selected Countries] 
			,1,0)
	   );

create member CurrentCube.[Measures].[Intersect]
as null;

scope ([Measures].[Intersect]);
    scope([Product].[Product].Members);
        this = [Measures].[hidden Intersect];
    end scope;

    scope([Product].[Product].[All]);
        this = SUM(([Selected Products],[Product].[Product Categories].CurrentMember),[Measures].[hidden Intersect]
                    );
    end scope;
end scope;
...
Рейтинг: 0 / 0
07.08.2021, 07:05
    #40089312
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX пересечение продаж
montoya.
Критик
Вообще, зря вы это делаете. Решение будет неподдерживаемым.

а как не зря решить задачу?)


Имхо конечно, но на уровне хранилища такое нужно решать - банально больше народа сможет разобраться в SQL-коде, чем в MDX
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MDX пересечение продаж / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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