Отображение разных размеров в столбцах и строках с помощью SSAS и MDX - PullRequest
1 голос
/ 14 апреля 2011

Привет, я новичок в SSAS и MDX, и мне нужно создать отчет ssrs на основе куба OLAP. Я не могу понять, как отображать различные элементы измерения в столбцах и строках. Измерения - это рейтинг и время в столбцах и клиентах, а также статусы в строках:

              | a rated | b rated  | c rated | Year-3 | Year-2 | Year-1 | Year* | Total|
good clients  |
medium clients|
bad clients   |
total clients |
status 1      |
status 2      |
status 3      |
total status  |
----------------------------------------------------------------------------------------

Год соответствует текущему году.

Как мне этого добиться с помощью MDX?

Ответы [ 4 ]

0 голосов
/ 26 ноября 2018

Запрос ниже может работать для вас. Вы упомянули, что в вашем кубе нет «всех» элементов, поэтому вам нужно заменить «все» в запросе соответствующими элементами по умолчанию. Я попытался сделать подобный senario в Приключенческих работах. Ячейки имеют количество интернет-продаж

               | topSeller | Bottom Seller  | 2011| 2012 | 
Topcustomers   |
Bottomcustomers|
North America  |
Europe         |

//create 
//SET [Adventure Works].[TopCustomers] AS TopCount(([Customer].[Customer].Members,[Sales Territory].[Sales Territory Country].[All]), 3,[Measures].[Internet Sales Amount])
//SET [Adventure Works].[BottomCustomers] AS bottomCount(([Customer].[Customer].Members,[Sales Territory].[Sales Territory Country].[All]), 3,[Measures].[Internet Sales Amount])
//SET [Adventure Works].[NorthAmerica] AS ([Customer].[Customer].[All],{[Sales Territory].[Sales Territory Country].&[United States],[Sales Territory].[Sales Territory Country].&[Canada]})
//SET [Adventure Works].[Europe] AS ([Customer].[Customer].[All],{[Sales Territory].[Sales Territory Country].&[France],[Sales Territory].[Sales Territory Country].&[Germany],[Sales Territory].[Sales Territory Country].&[United Kingdom]})
//
//SET [Adventure Works].[TopSellers] AS TopCount(([Product].[Model Name].Members,[Date].[Calendar Year].[All]), 3,[Measures].[Internet Sales Amount])
//SET [Adventure Works].[BottomSellers] AS BottomCount(([Product].[Model Name].Members,[Date].[Calendar Year].[All]), 3,[Measures].[Internet Sales Amount])
//SET [Adventure Works].[2011] AS ([Product].[Model Name].[All],[Date].[Calendar Year].&[2011])
//SET [Adventure Works].[2012] AS ([Product].[Model Name].[All],[Date].[Calendar Year].&[2012])
//

select 
{
([Measures].[Internet Sales Amount],[TopSellers]),
([Measures].[Internet Sales Amount],[BottomSellers]),
([Measures].[Internet Sales Amount],[2011]),
([Measures].[Internet Sales Amount],[2012])
}
on columns,

{
([TopCustomers]),
([BottomCustomers]),
([NorthAmerica]),
([Europe])
}
on rows
from [Adventure Works]

Результат выглядит ниже Result

0 голосов
/ 15 апреля 2011

Ось оператора MDX SELECT - это набор кортежей с одинаковой «размерностью». Это означает, что все кортежи должны содержать элементы одинакового размера. Таким образом, вы не можете иметь набор MDX, состоящий из элементов (член является кортежем) разных измерений, как вы запрашиваете.

При этом я не понимаю: «рейтинги и временные столбцы независимы». Что это значит точно?

0 голосов
/ 11 июля 2012

MDX-запрос может поддерживать до 128 указанных осей, но очень немногие MDX-запросы будут использовать более 5 осей.Вместо первых 5 осей можно использовать псевдонимы COLUMNS, ROWS, PAGES, SECTIONS и CHAPTERS.

Попробуйте использовать вышеуказанные оси, чтобы достичь того, что вы ожидаете, например, запросить два разных измерения.

0 голосов
/ 14 апреля 2011

в MDX вы можете поместить элементы разных измерений в кортеж, если вы хотите отобразить их на одной оси.Что-то вроде:

select  ([Time].[Calendar].[Year], [Rate].[rating].children) on columns,
select  ( ... , ... ) on rows
from [cube]

может помочь решить вашу проблему.

...