powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Отсекать отрицательные значения
10 сообщений из 10, страница 1 из 1
Отсекать отрицательные значения
    #39742379
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Есть MDX-запрос
MDX-запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT
	[Measures].[Реализация шт] ON 0,
NON EMPTY
	[Торговые точки].[Клиент].[Клиент]*
	[Торговые точки].[Код юрлица].[Код юрлица]*
	[Города].[Регион города].[Регион города]*
	[Продукция].[Код продукции].&[55012]
ON 1
FROM
	PROFIT
WHERE
	[Время].[Месяц].&[2018-11-01T00:00:00]


Выдает такой результат:

КлиентКод юрлицаРегион городаКод продукцииРеализация штКлиент1 КодЮрЛица1 Регион города1 55012 -1.0Клиент2 КодЮрЛица1 Регион города1 55012 1.0Клиент3 КодЮрЛица1Регион города2 55012 -5.0Клиент3 КодЮрЛица1 Регион города3 55012 -16.0Клиент3 КодЮрЛица1 Регион города3 55012 5.0Клиент3 КодЮрЛица1 Регион города4 55012 3.0Клиент3 КодЮрЛица1 Регион города4 55012 2.0Клиент3 КодЮрЛица1 Регион города4 55012 1.0

Если запустить такой MDX-запрос
MDX-запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
WITH
MEMBER [Торговые точки].[Клиент].[Сет] AS
	AGGREGATE({[Торговые точки].[Клиент].[Клиент]*
					[Торговые точки].[Код юрлица].[Код юрлица]*
					[Города].[Регион города].[Регион города]]})
MEMBER [Общая реализация продукции в компании Ноябрь 2018] AS 	
	SUM(		
		Filter(
			[Сет],
			([Продукция].[Код продукции].CurrentMember,
				 [Measures].[Реализация шт])<>0
		),		
		([Время].[Месяц].&[2018-11-01T00:00:00],[Measures].[Реализация шт])
	)
	
SELECT
	[Общая реализация продукции в компании Ноябрь 2018]
ON 0,
	[Продукция].[Код продукции].&[55012]
ON 1
FROM
	PROFIT


То выдает такой результат
Код продукцииОбщая реализация продукции в компании Ноябрь 201855012 -10

В сумме нужно не учитывать отрицательную реализацию. Должно быть не "-10", а "12". Если в выделенном месте второго MDX-запроса вместо выражения "<>" написать ">", то результат будет таким же.

Почему так? По логике отрицательные не должны браться? Как правильно написать для второго MDX-запроса?
...
Рейтинг: 0 / 0
Отсекать отрицательные значения
    #39742431
grAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT
	[Measures].[Реализация шт] ON 0,
NON EMPTY
	[Торговые точки].[Клиент].[Клиент]*
	[Торговые точки].[Код юрлица].[Код юрлица]*
	[Города].[Регион города].[Регион города]*
	[Продукция].[Код продукции].&[55012]
        HAVING [Measures].[Реализация шт] > 0
ON 1
FROM
	PROFIT
WHERE
	[Время].[Месяц].&[2018-11-01T00:00:00]
...
Рейтинг: 0 / 0
Отсекать отрицательные значения
    #39742434
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grAlex,

Для первого запроса все понятно, нужно именно для второго запроса.

MDX-запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
WITH
MEMBER [Торговые точки].[Клиент].[Сет] AS
	AGGREGATE({[Торговые точки].[Клиент].[Клиент]*
					[Торговые точки].[Код юрлица].[Код юрлица]*
					[Города].[Регион города].[Регион города]]})
MEMBER [Общая реализация продукции в компании Ноябрь 2018] AS 	
	SUM(		
		Filter(
			[Сет],
			([Продукция].[Код продукции].CurrentMember,
				 [Measures].[Реализация шт])<>0
		),		
		([Время].[Месяц].&[2018-11-01T00:00:00],[Measures].[Реализация шт])
	)
	
SELECT
	[Общая реализация продукции в компании Ноябрь 2018]
ON 0,
	[Продукция].[Код продукции].&[55012]
ON 1
FROM
	PROFIT

...
Рейтинг: 0 / 0
Отсекать отрицательные значения
    #39742462
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkПочему так? По логике отрицательные не должны браться? Как правильно написать для второго MDX-запроса?
...
Рейтинг: 0 / 0
Отсекать отрицательные значения
    #39742606
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот если так написать MDX-запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT
	[Measures].[Реализация шт] ON 0,
NON EMPTY
	FILTER(
		[Торговые точки].[Клиент].[Клиент]*
		[Торговые точки].[Код юрлица].[Код юрлица]*
		[Города].[Регион города].[Регион города]*
		[Продукция].[Код продукции].&[55012]
		,
		[Measures].[Реализация шт] > 0)
ON 1
FROM
	PROFIT
WHERE
	[Время].[Месяц].&[2018-11-01T00:00:00]


То выдает нужный результат
КлиентКод юрлицаРегион городаКод продукцииРеализация штКлиент2 КодЮрЛица1 Регион города1 55012 1.0Клиент3 КодЮрЛица1 Регион города3 55012 5.0Клиент3 КодЮрЛица1 Регион города4 55012 3.0Клиент3 КодЮрЛица1 Регион города4 55012 2.0Клиент3 КодЮрЛица1 Регион города4 55012 1.0
Сумма отгрузок составляет 12.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
WITH
MEMBER [Торговые точки].[Клиент].[Сет] AS
	AGGREGATE({[Торговые точки].[Клиент].[Клиент]*
					[Торговые точки].[Код юрлица].[Код юрлица]*
					[Города].[Регион города].[Регион города]]})
MEMBER [Общая реализация продукции в компании Ноябрь 2018] AS 	
	SUM(		
		Filter(
			[Сет],
			([Продукция].[Код продукции].CurrentMember,
				 [Measures].[Реализация шт])>0
		),		
		([Время].[Месяц].&[2018-11-01T00:00:00],[Measures].[Реализация шт])
	)
	
SELECT
	[Общая реализация продукции в компании Ноябрь 2018]
ON 0,
	[Продукция].[Код продукции].&[55012]
ON 1
FROM
	PROFIT


То выдает такой результат
Код продукцииОбщая реализация продукции в компании Ноябрь 201855012 -10
Возвращает "-10", учитывает отрицательные отгрузки. А должен возвращать "12", без учета отрицательных отгрузок.

Как правильно MDX-запрос написать?
...
Рейтинг: 0 / 0
Отсекать отрицательные значения
    #39742608
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я даже так писал, попроще, чтобы исключить влияние MEMBER [Торговые точки].[Клиент].[Сет]
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
WITH
MEMBER [Общая реализация продукции в компании Ноябрь 2018] AS 	
	SUM(		
		Filter(
			[Торговые точки].[Клиент].[Клиент],
			([Продукция].[Код продукции].CurrentMember,
				 [Measures].[Реализация шт])>0
		),		
		([Время].[Месяц].&[2018-11-01T00:00:00],[Measures].[Реализация шт])
	)
	
SELECT
	[Общая реализация продукции в компании Ноябрь 2018]
ON 0,
	[Продукция].[Код продукции].&[55012]
ON 1
FROM
	PROFIT


То все равно возвращает "-10", а не "12".
...
Рейтинг: 0 / 0
Отсекать отрицательные значения
    #39742609
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему функция Filter не фильтрует отрицательные значения?
...
Рейтинг: 0 / 0
Отсекать отрицательные значения
    #39742768
grAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkВ сумме нужно не учитывать отрицательную реализацию

помогите написать простой calculated member пжст

"детализация измерений вашего куба доходит до каждой отгрузки, т.е. есть ли в нем какие-либо уникальные для каждой отгрузки значения?
если нет, то с помощью calculated member задачу не решить, потребуется правка источника данных"
...
Рейтинг: 0 / 0
Отсекать отрицательные значения
    #39742779
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grAlex"детализация измерений вашего куба доходит до каждой отгрузки, т.е. есть ли в нем какие-либо уникальные для каждой отгрузки значения ?"
Что значит уникальные для каждой отгрузки значения? Детальнее будет, если выгружать еще и по ТТ+SKU+Дата.
...
Рейтинг: 0 / 0
Отсекать отрицательные значения
    #39743178
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось.
Так не правильно
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
WITH
MEMBER [Торговые точки].[Клиент].[Сет] AS
	AGGREGATE({[Торговые точки].[Клиент].[Клиент]*
					[Торговые точки].[Код юрлица].[Код юрлица]*
					[Города].[Регион города].[Регион города]})
MEMBER [Общая реализация продукции в компании Ноябрь 2018] AS 	
	SUM(		
		Filter(
			[Сет],
			([Продукция].[Код продукции].CurrentMember,
				 [Measures].[Реализация шт])<>0
		),		
		([Время].[Месяц].&[2018-11-01T00:00:00],[Measures].[Реализация шт])
	)
	
SELECT
	[Общая реализация продукции в компании Ноябрь 2018]
ON 0,
	[Продукция].[Код продукции].&[55012]
ON 1
FROM
	PROFIT

Так правильно
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
WITH
MEMBER [Торговые точки].[Клиент].[Сет] AS
	AGGREGATE({[Торговые точки].[Клиент].[Клиент]*
					[Торговые точки].[Код юрлица].[Код юрлица]})
MEMBER [Общая реализация продукции в компании Ноябрь 2018] AS 	
	SUM(		
		Filter(
			[Сет] * [Города].[Регион города].[Регион города] * [Время].[Дата].[Дата],
			([Продукция].[Код продукции].CurrentMember,
				 [Measures].[Реализация шт])<>0
		),		
		([Время].[Месяц].&[2018-11-01T00:00:00],[Measures].[Реализация шт])
	)
	
SELECT
	[Общая реализация продукции в компании Ноябрь 2018]
ON 0,
	[Продукция].[Код продукции].&[55012]
ON 1
FROM
	PROFIT


1. Получается в [Торговые точки].[Клиент].[Сет] надо толкать атрибуты только одного текущего измерения. Верно?

2. В первый аргумент фильтра перенес [Города].[Регион города].[Регион города ] и добавил [Время].[Дата].[Дата] .

3. В результате запрос намного быстрее стал формироваться.

4. Тут есть что еще не учел?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Отсекать отрицательные значения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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