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

Необходимо получить такой результат, чтобы были строки: отгрузки по каждому городу, по региону и все.
Регион Город Отгрузки штВсе регионыВсе города6500Регион1Все города в регионе12500Регион1Город11000Регион1Город21500Регион2Все города в регионе24000Регион2Город34000

Такой запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT
	[Measures].[Отгрузки шт]  ON 0,
NON EMPTY 
	{[Регионы].[Регион].ALLMembers *
	[Города].[Город].ALLMembers}
ON 1 
FROM 
	(SELECT
		([Время].[Месяц].&[2016-12-01T00:00:00],
		{[Города].[Город].&[1],
		[Города].[Город].&[2],
                [Города].[Город].&[3]})
	 ON 0
	 FROM
		Profit)


Выдает такой результат:
Регион Город Отгрузки штAllAll6500AllГород11000AllГород21500AllГород34000Регион1All2500Регион1Город11000Регион1Город21500Регион2All4000Регион2Город34000
Получается строки дублируются


Дорабатываю запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT
	[Measures].[Отгрузки шт]  ON 0,
NON EMPTY 
	{[Регионы].[Регион].ALLMembers *
	[Города].[Город].ALLMembers}
        -
        {[Регионы].[Регион].[ALL] *
	[Города].[Город].ALLMembers}
ON 1 
FROM 
	(SELECT
		([Время].[Месяц].&[2016-12-01T00:00:00],
		{[Города].[Город].&[1],
		[Города].[Город].&[2],
                [Города].[Город].&[3]})
	 ON 0
	 FROM
		Profit)


Выдает такой результат:
Регион Город Отгрузки штРегион1All2500Регион1Город11000Регион1Город21500Регион2All4000Регион2Город34000
Как видно без строки Общего.


Дорабатываю еще
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SELECT
	[Measures].[Отгрузки шт]  ON 0,
NON EMPTY 
	{[Регионы].[Регион].ALLMembers *
	[Города].[Город].ALLMembers}
        -
        {[Регионы].[Регион].[ALL] *
	[Города].[Город].ALLMembers}
        +
        {[Регионы].[Регион].[ALL] *
	[Города].[Город].[ALL]}
ON 1 
FROM 
	(SELECT
		([Время].[Месяц].&[2016-12-01T00:00:00],
		{[Города].[Город].&[1],
		[Города].[Город].&[2],
                [Города].[Город].&[3]})
	 ON 0
	 FROM
		Profit)


Пишет, что "Функция ожидает для аргумента 1 выражение набора кортежей. Было использовано строчное или числовое выражение.". Похоже, что нельзя писать так.
Код: sql
1.
2.
{[Регионы].[Регион].[ALL] *
[Города].[Город].[ALL]}


Как правильно скорректировать запрос, чтобы получить нужный результат? Учитывая, что атрибуты "Регион" и "Город" не иерархичны.
...
Рейтинг: 0 / 0
Добавить промежуточный и общий итог
    #39389431
SkyTod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ferzmikk,

Зачем так усложнять и отнимать сеты?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SELECT
	[Measures].[Отгрузки шт]  ON 0,
NON EMPTY 
	NonEmptyCrossJoin(
		[Регионы].[Регион].[Регион].Members,
		[Города].[Город].ALLMembers,
                2
	)
	+
	{[Регионы].[Регион].[All] *
	[Города].[Город].[All]}
ON 1 
FROM 
	(SELECT
		([Время].[Месяц].&[2016-12-01T00:00:00],
		{[Города].[Город].&[1],
		[Города].[Город].&[2],
                [Города].[Город].&[3]})
	 ON 0
	 FROM
		Profit)



PS. NonEmptyCrossJoin нужен, чтобы большие сеты формировались быстрее, потому что они сначала физически джойняться все элементы двух иерархий, а затем пускается через группу мер. С помощью NonEmptyCrossJoin, оно сразу джойнит только непустые элементы.
...
Рейтинг: 0 / 0
Добавить промежуточный и общий итог
    #39389447
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyTod,

Если запускать такой запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT
	[Measures].[Отгрузки шт]  ON 0,
NON EMPTY 
	{[Регионы].[Регион].[All] *
	[Города].[Город].[All]}
ON 1 
FROM 
	(SELECT
		([Время].[Месяц].&[2016-12-01T00:00:00],
		{[Города].[Город].&[1],
		[Города].[Город].&[2],
                [Города].[Город].&[3]})
	 ON 0
	 FROM
		Profit)


Пишет ошибку "Функция ожидает для аргумента 1 выражение набора кортежей. Было использовано строчное или числовое выражение.".

Как правильно писать?
...
Рейтинг: 0 / 0
Добавить промежуточный и общий итог
    #39389498
SkyTod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ferzmikk,

CroosJoin не умеет объединять тюплы, нужно указать, что это сеты с одним элементом:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT
	[Measures].[Отгрузки шт]  ON 0,
NON EMPTY 
	{[Регионы].[Регион].[All]} *
	{[Города].[Город].[All]}
ON 1 
FROM 
	(SELECT
		([Время].[Месяц].&[2016-12-01T00:00:00],
		{[Города].[Город].&[1],
		[Города].[Город].&[2],
                [Города].[Город].&[3]})
	 ON 0
	 FROM
		Profit)
...
Рейтинг: 0 / 0
Добавить промежуточный и общий итог
    #39389529
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyTodferzmikk,

CroosJoin не умеет объединять тюплы, нужно указать, что это сеты с одним элементом:
Код: sql
1.
2.
{[Регионы].[Регион].[All]} *
{[Города].[Город].[All]}


Теперь заработало!
...
Рейтинг: 0 / 0
Добавить промежуточный и общий итог
    #39389554
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Экспериментирую писать через функцию EXISTS.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT
	[Measures].[Отгрузки шт]  ON 0,
NON EMPTY 
	EXISTS{[Регионы].[Регион].ALLMembers *
	                [Города].[Город].ALLMembers},
                   {Регионы].[Регион].[ALL] *
	                [Города].[Город].Members})
ON 1 
FROM 
	(SELECT
		([Время].[Месяц].&[2016-12-01T00:00:00],
		{[Города].[Город].&[1],
		[Города].[Город].&[2],
                [Города].[Город].&[3]})
	 ON 0
	 FROM
		Profit)


Выдает такой результат
Регион Город Отгрузки штAllAll6500AllГород11000AllГород21500AllГород34000Регион1All2500Регион1Город11000Регион1Город21500Регион2All4000Регион2Город34000

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT
	[Measures].[Отгрузки шт]  ON 0,

NON EMPTY HIERARCHIZE(
  {[Регионы].[Регион].Members,[Регионы].[Регион].Children}
  *{[Города].[Город].Members} - {[Регионы].[Регион].[All]}*{[Города].[Город].[Город]}
  ) ON 1

FROM 
	(SELECT
		([Время].[Месяц].&[2016-12-01T00:00:00],
		{[Города].[Город].&[1],
		[Города].[Город].&[2],
                [Города].[Город].&[3]})
	 ON 0
	 FROM
		Profit)
...
Рейтинг: 0 / 0
Добавить промежуточный и общий итог
    #39389996
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grAlex,

Получилось, спасибо!
...
Рейтинг: 0 / 0
Добавить промежуточный и общий итог
    #39400704
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyTodferzmikk,

CroosJoin не умеет объединять тюплы, нужно указать, что это сеты с одним элементом:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
	[Measures].[Отгрузки шт]  ON 0,
NON EMPTY 
	{[Регионы].[Регион].[All]} *
	{[Города].[Город].[All]}
ON 1 
FROM 
	...


Как быть, если нужно отсеить один город?
Код: sql
1.
2.
	{[Регионы].[Регион].[All]} *
	{[Города].[Город].[All] - [Города].[Город].&[1]}


Пишет ошибку "Функция ожидает для аргумента 1 выражение набора кортежей. Было использовано строчное или числовое выражение".
...
Рейтинг: 0 / 0
Добавить промежуточный и общий итог
    #39400796
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

если вы указываете в MDX set из одного члена, он должен быть обрамлен фигурными скобками
{{[Города].[Город].[All]} - {[Города].[Город].&[1]}}
...
Рейтинг: 0 / 0
Добавить промежуточный и общий итог
    #39400811
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgorferzmikk,

если вы указываете в MDX set из одного члена, он должен быть обрамлен фигурными скобками
{{[Города].[Город].[All]} - {[Города].[Город].&[1]}}
Получилось, спасибо!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Добавить промежуточный и общий итог
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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