У нас есть таблица с одной Мерой [Сумма скидки] на COLUMNS и CROSSJOIN [Product]. [Категории продуктов] и [География]. [География] на оси ROWS.Проблема с функцией заказа и кроссонами в MDX
Мы используем функцию ORDER для сортировки объектов по [Сумме скидок] с опцией «BDESC».
MDX:
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:
Как вы можете видеть все ребенок [Одежда] организация теряет свою иерархию и была показана в отдельные объекты в таблице.
Но мы хотим, чтобы эти элементы находились под [Всеми географиями] [Одежда].
Если попытаться изменить тип сортировки «DESC» (иерархическая), то дети отображаются правильно, но заказав в таблице не работает:
Таким образом, мы ищем решение, как сделать работу упорядочивание и расширение в таких таблицах.
спасибо.
Если вы не привязаны к MDX только использовать OPENQUERY в SQL для извлечения сырого набора с помощью MDX и сортировать его по SQL ORDER BY – George
@George - похоже, что они должны быть привязаны к некоторому инструменту MDX, так как, безусловно, никто не будет сознательно выбрасывать все эти «иерархизации»?! – whytheq