У нас есть таблица с одной мерой [Размер скидки] в столбцах и CROSSJOIN [Продукт]. [Категории продуктов] и [География]. [География] на оси ROWS.
Мы используем функцию ORDER для сортировки объектов по [Размер скидки] с опцией «BDESC».
Многомерные выражения:
SELECT
NON EMPTY
{[Measures].[Discount Amount]} ON COLUMNS
,NON EMPTY
Order
(
{
Hierarchize
(
{
CrossJoin
(
{
Hierarchize
(
{
[Product].[Product Categories].[All Products]
,[Product].[Product Categories].[All Products].Children
}
)
}
,{Hierarchize({[Geography].[Geography].[All Geographies]})}
)
}
)
}
,[Measures].[Discount Amount]
,BDESC
) ON ROWS
FROM [Adventure Works];
Таблица выглядит хорошо и отображает информацию так, как мы этого хотим.
Затем мы хотим развернуть элемент [Все категории] для сущности [Одежда]. Для этого нам нужно внести несколько изменений:
- изменить существующий Crossjoin (как и раньше, но без одежды);
- добавить новое перекрестное соединение для сущности [Одежда] с расширением выбранного элемента [Все категории];
новый MDX:
SELECT
NON EMPTY
{[Measures].[Discount Amount]} ON COLUMNS
,NON EMPTY
{
Order
(
{
Hierarchize
(
{
CrossJoin
(
{
Except
(
{
Hierarchize
(
{
[Product].[Product Categories].[All Products]
,[Product].[Product Categories].[All Products].Children
}
)
}
,{[Product].[Product Categories].[Category].&[3]}
)
}
,{Hierarchize({[Geography].[Geography].[All Geographies]})}
)
}
)
,CrossJoin
(
{[Product].[Product Categories].[Category].&[3]}
,{
Hierarchize
(
{
[Geography].[Geography].[All Geographies]
,[Geography].[Geography].[All Geographies].Children
}
)
}
)
}
,[Measures].[Discount Amount]
,BDESC
)
} ON ROWS
FROM [Adventure Works];
и таблица результатов в SQL Server Management Studio:
Как вы можете видеть, все дочерние элементы сущности [Clothing] теряют свою иерархию и отображаются как отдельные сущности в таблице.
Но мы хотим, чтобы эти элементы находились в разделе [Все регионы] [Одежда].
Если мы попытаемся изменить тип сортировки на «DESC» (иерархический), дочерние элементы будут отображаться правильно, но упорядочение в таблице не работает:
Поэтому мы ищем решение, как в таких таблицах делать упорядочивание и разворачивание работ.
Спасибо.
hierarchize
?! - person whytheq   schedule 20.02.2015