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

Разбираюсь с MDX. Возникло несколько трудностей. Работаю с AS, FoodMart 2000.

За основу беру работающий запрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
              {[Measures].[Unit Sales], [Measures].[Store Cost]}     on columns, 
                        { 
                           { [Product].[Product Department].members }
                           *
                           { [Promotion Media].[Media Type].members }
                           *
                           { [Store].[Store Country].members }
                       }  on rows
from Sales 

1) Хочу чтобы выводились даные только по USA.

Пробовал в конец запроса добавить:

Код: plaintext
where ([Store].[Store Country].[USA]) 

Не работает :( Как правильно ?

2) Как сделать так, чтобы выводились только [Unit Sales] > 150 ?

Пробовал так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select 
     filter (
                {[Measures].[Unit Sales], [Measures].[Store Cost]} 
                , ([Measures].[Unit Sales] >  150 ))
   on columns, 
                        { 
                           { [Product].[Product Department].members }
                           *
                           { [Promotion Media].[Media Type].members }
                           *
                           { [Store].[Store Country].members }
                       }  on rows
from Sales


Не ругается, но и не фильтрует. :(

Заранее спасибо за помощь.
...
Рейтинг: 0 / 0
MDX - нужна помощь
    #32649752
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select 
              {[Measures].[Unit Sales], [Measures].[Store Cost]}     on columns, 
                        { 
                           { [Product].[Product Department].members }
                           *
                           { [Promotion Media].[Media Type].members }
                       }  on rows
from Sales 
where ([Store].[Store Country].[USA]) 

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
              {[Measures].[Unit Sales], [Measures].[Store Cost]}     on columns, 
               filter( { 
                           { [Product].[Product Department].members }
                           *
                           { [Promotion Media].[Media Type].members }
                           *
                           { [Store].[Store Country].members }
                       },([Measures].[Unit Sales] >  150 ))  on rows
from Sales 
...
Рейтинг: 0 / 0
MDX - нужна помощь
    #32649761
Road Runner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну как раз у меня чуть свободного времени и желание, поэтому слушай :) :
1)
В where ты должен определить срез куба по которому показывать данные, но страна у тебя уже включена в измерение on rows. Поэтому МСАС и ругается. Если ты хочешь непременно использовать для этого where, то тогда надо убрать страну с оси строк (ведь ты и так берешь срез только где USA):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
[FIXED]
select 
{
     [Measures].[Unit Sales], [Measures].[Store Cost]
} on columns, 
{ 
     {[Product].[Product Department].members}
     *
     {[Promotion Media].[Media Type].members}
}  on rows
from
     Sales 
where 
     [Store].[Store Country].[USA]
[/FIXED]

А вот вариант с использованием фильтра:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
[FIXED]
select 
{
	[Measures].[Unit Sales],[Measures].[Store Cost]
} on columns,                         
filter 
(
	{
		{[Product].[Product Department].members}
		*
		{[Promotion Media].[Media Type].members}
		*
		{[Store].[Store Country].members}
	},
	[Store].CurrentMember = [Store].[All Stores].[USA]
)  on rows
from
	Sales
[/FIXED]

Кстати, если мы выводим данные только по USA, то зачем нам в каждой строке об этом писать?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
[FIXED]
select
{
	[Measures].[Unit Sales], [Measures].[Store Cost]
} on columns,                         
filter 
(
	{
	{[Product].[Product Department].members}
	*
	{[Promotion Media].[Media Type].members}
	}, 
	[Store].CurrentMember = [Store].[Store Country].[USA]
)  on rows
from 
	Sales 
[/FIXED]

Ну и наконец, можно вообще не писать срезы или условия, а просто определить нужным образом ось строк:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
[FIXED]
select 
{
	[Measures].[Unit Sales], [Measures].[Store Cost]
} on columns,                         
{
	{[Product].[Product Department].members }
	*
	{[Promotion Media].[Media Type].members }
	*
	{[Store].[Store Country].[USA] }
}  on rows
from 
	Sales
[/FIXED]

2)
Что касается второго, то не совсем понятно, что ты хотел достичь фильтром на столбцы - тебе же нужно не показывать строки , в которых цена не больше заданной. Значит и решение будет примерно таким:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
[FIXED]
select 
{
	[Measures].[Unit Sales], 
	[Measures].[Store Cost]
} on columns,                         
filter 
(
	{
		{[Product].[Product Department].members}
		*
		{[Promotion Media].[Media Type].members}
	},
	[Store].CurrentMember = [Store].[Store Country].[USA] and [Measures].[Unit Sales] >  100 
)  on rows
from 
	Sales 
[/FIXED]

Ну вот, вроде бы так.
...
Рейтинг: 0 / 0
MDX - нужна помощь
    #32651466
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Road Runner - спасибо за такое подробное объяснение :)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MDX - нужна помощь
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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