Order (MDX)
Organiza membros de um conjunto especificado, preservando opcionalmente ou quebrando a hierarquia.
Sintaxe
Numeric expression syntax
Order(Set_Expression, Numeric_Expression
[ , { ASC | DESC | BASC | BDESC } ] )
String expression syntax
Order(Set_Expression, String_Expression
[ , { ASC | DESC | BASC | BDESC } ] )
Argumentos
Set_Expression
Uma expressão MDX (Multidimensional Expressions) válida que retorna um conjunto.Numeric_Expression
Uma expressão numérica válida, geralmente uma expressão MDX de coordenadas de célula, que retorna um número.String_Expression
Uma expressão de cadeia de caracteres válida, geralmente uma expressão MDX válida de coordenadas de célula, que retorna um número expresso como uma cadeia de caracteres.
Comentários
A função Order pode ser um sinalizador hierárquico (conforme especificado com o sinalizador ASC ou DESC) ou não hierárquico (conforme especificado com o sinalizador BASC ou BDESC ; B significa “quebra de hierarquia”). Se ASC ou DESC for especificado, a função Order primeiro organizará os membros de acordo com sua posição na hierarquia e, em seguida, ordenará cada nível. Se BASC ou BDESC for especificado, a função Order organizará os membros no conjunto, independentemente da hierarquia. Se nenhum sinalizador for especificado, ASC será o padrão.
Exemplos
O exemplo a seguir retorna, a partir do cubo Adventure Works, o número de pedidos de revendedores para o membro [Sales Territory].[Northwest] e todos os descendentes desse membro. A função Order reordena o conjunto que inclui o membro [Sales Territory].[Northwest] e seus ascendentes para o eixo ROWS. A função Order ordena o conjunto a partir do membro mais alto para o mais baixo, na ordem hierárquica conforme determinado pela hierarquia [Sales Territory].
SELECT
Measures.[Reseller Order Count] ON COLUMNS,
Order(
Ascendants(
[Sales Territory].[Sales Territory].[Northwest]
),
DESC
) ON ROWS
FROM
[Adventure Works]
O exemplo a seguir retorna a medida Valor das Vendas do Revendedor para as cinco subcategorias principais de vendas dos produtos, independentemente da hierarquia, com base no Lucro Bruto do Revendedor. A função Subset é usada para retornar somente as 5 primeiras tuplas no conjunto, após o resultado ser ordenado com a função Order.
SELECT Subset
(Order
([Product].[Product Categories].[SubCategory].members
,[Measures].[Reseller Gross Profit]
,BDESC
)
,0
,5
) ON 0
FROM [Adventure Works]
O exemplo a seguir usa a função Rank para classificar os membros da hierarquia Cidade com base na medida Valor das Vendas do Revendedor e, em seguida, os exibe em ordem de classificação. Usando a função Order para organizar pela primeira vez o conjunto de membros da hierarquia Cidade, a classificação é feita somente uma vez, seguida de uma verificação linear, antes de ser apresentada na ordem de classificação.
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]
O exemplo a seguir retorna o número de produtos no conjunto que são exclusivos, usando a função Order para solicitar as tuplas não vazias antes de utilizar a função Filter. A função CurrentOrdinal é usada para comparar e eliminar associações.
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]