Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Упорядочивает элементы указанного набора, по выбору сохраняя или нарушая иерархию.
Синтаксис
Numeric expression syntax
Order(Set_Expression, Numeric_Expression
[ , { ASC | DESC | BASC | BDESC } ] )
String expression syntax
Order(Set_Expression, String_Expression
[ , { ASC | DESC | BASC | BDESC } ] )
Аргументы
Set_Expression
Допустимое многомерное выражение, возвращающее набор.
Numeric_Expression
Допустимое числовое выражение (обычно многомерное выражение координат ячейки), возвращающее число.
String_Expression
Допустимое строковое выражение (обычно многомерное выражение над координатами ячейки), возвращающее число, представленное в виде строки.
Замечания
Функция Order может быть иерархической (как указано с помощью флага ASC или DESC) или неархархической (как указано с помощью флага BASC или BDESC; B обозначает "иерархию разрывов"). Если указан ASC или DESC , функция Order сначала упорядочивает элементы в соответствии с их положением в иерархии, а затем упорядочивает каждый уровень. Если указан BASC или BDESC , функция Order упорядочивает элементы в наборе без учета иерархии. Без указания флага ASC является значением по умолчанию.
Если функция Order используется с набором, где два или более иерархий пересекаются, а флаг DESC используется, упорядочены только члены последней иерархии в наборе. В этом заключается отличие от версии служб Analysis Services 2000, где сортировались все иерархии в наборе.
Примеры
В следующем примере возвращается из куба Adventure Works количество заказов торгового посредника для всех кварталов календаря из иерархии календаря в измерении даты. Функция Order переупорядочение набора для оси ROWS. Функция Order упорядочивает набор [Reseller Order Count] по убыванию иерархического порядка, определяемого [Calendar] иерархией.
SELECT
Measures.[Reseller Order Count] ON COLUMNS,
Order(
[Date].[Calendar].[Calendar Quarter].MEMBERS,
Measures.[Reseller Order Count],
DESC
) ON ROWS
FROM [Adventure Works]
Обратите внимание, как в этом примере при изменении флага DESC на BDESC иерархия нарушается, а список кварталов календаря возвращается без учета иерархии:
SELECT
Measures.[Reseller Order Count] ON COLUMNS,
Order (
[Date].[Calendar].[Calendar Quarter].MEMBERS,
Measures.[Reseller Order Count],
BDESC
) ON ROWS
FROM [Adventure Works]
В следующем примере возвращается мера Reseller Sales для пяти наиболее продаваемых подкатегорий товаров вне зависимости от иерархии, основываясь на значении меры Reseller Gross Profit. Функция подмножества используется для возврата только первых 5 кортежей в наборе после того, как результат упорядочен с помощью функции Order .
SELECT Subset
(
Order
(
[Product].[Product Categories].[SubCategory].members,
[Measures].[Reseller Gross Profit],
BDESC
), 0, 5
) ON 0
FROM [Adventure Works]
В следующем примере функция ранжирования используется для ранжирования членов иерархии "Город" на основе меры "Объем продаж торговых посредников", а затем отображает их в порядке ранжирования. Используя функцию Order для первого порядка набора элементов иерархии "Город", сортировка выполняется только один раз, а затем выполняется линейная проверка перед отображением в отсортированном порядке.
WITH
SET OrderedCities AS Order
([Geography].[City].[City].members
, [Measures].[Reseller Sales Amount], BDESC
)
MEMBER [Measures].[City Rank] AS Rank
([Geography].[City].CurrentMember, OrderedCities)
SELECT {[Measures].[City Rank],[Measures].[Reseller Sales Amount]} ON 0
,Order
([Geography].[City].[City].MEMBERS
,[City Rank], ASC)
ON 1
FROM [Adventure Works]
В следующем примере возвращается количество продуктов в наборе уникальных, используя функцию Order для упорядочивания непустых кортежей перед использованием функции фильтра . Функция CurrentOrdinal используется для сравнения и устранения связей.
WITH MEMBER [Measures].[PrdTies] AS Count
(Filter
(Order
(NonEmpty
([Product].[Product].[Product].Members
, {[Measures].[Reseller Order Quantity]}
)
, [Measures].[Reseller Order Quantity]
, BDESC
) AS OrdPrds
, (OrdPrds.CurrentOrdinal < OrdPrds.Count
AND [Measures].[Reseller Order Quantity] =
( [Measures].[Reseller Order Quantity]
, OrdPrds.Item
(OrdPrds.CurrentOrdinal
)
)
)
OR (OrdPrds.CurrentOrdinal > 1
AND [Measures].[Reseller Order Quantity] =
([Measures].[Reseller Order Quantity]
, OrdPrds.Item
(OrdPrds.CurrentOrdinal-2)
)
)
)
)
SELECT {[Measures].[PrdTies]} ON 0
FROM [Adventure Works]
Чтобы понять, как флаг DESC работает с наборами кортежей, сначала рассмотрим результаты следующего запроса:
SELECT
{[Measures].[Tax Amount]} ON 0,
ORDER(
[Sales Territory].[Sales Territory].[Group].MEMBERS
,[Measures].[Tax Amount], DESC)
ON 1
FROM [Adventure Works]
На оси строк можно увидеть, что группы территории продаж заказаны в порядке убывания по сумме налога, как показано ниже: Северная Америка, Европа, Тихоокеанский регион, NA. Теперь посмотрим, что произойдет, если мы пересекаем набор групп территорий продаж с набором подкатегорий продуктов и применяем функцию Order таким же образом, как показано ниже.
SELECT
{[Measures].[Tax Amount]} ON 0,
ORDER(
[Sales Territory].[Sales Territory].[Group].MEMBERS
*
{[Product].[Product Categories].[subCategory].Members}
,[Measures].[Tax Amount], DESC)
ON 1
FROM [Adventure Works]
Хотя набор подкатегорий продуктов был упорядочен по убыванию, иерархический порядок, группы территории продаж теперь не отсортированы и отображаются в порядке, который они отображаются в иерархии: Европа, NA, Северная Америка и Тихоокеанский регион. Это связано с тем, что сортируется только последняя иерархия в наборе кортежей, подкатегории продукции. Чтобы воспроизвести поведение служб Analysis Services 2000, используйте ряд вложенных функций Generate для сортировки каждого набора перед перекрестным соединением, например:
SELECT
{[Measures].[Tax Amount]} ON 0,
GENERATE(
ORDER(
[Sales Territory].[Sales Territory].[Group].MEMBERS
,[Measures].[Tax Amount], DESC)
,
ORDER(
[Sales Territory].[Sales Territory].CURRENTMEMBER
*
{[Product].[Product Categories].[subCategory].Members}
,[Measures].[Tax Amount], DESC))
ON 1
FROM [Adventure Works]
См. также
Справочник по функции многомерных выражений (многомерные выражения)