乘以度量的 MDX ORDER

MDX ORDER by multiply measures

假设我有下一个 MDX 查询

select 
{
   [Measures].[Measure1],
   [Measures].[Measure2],
} on columns,
{   
   ORDER([Dim].Children, [Measures].[Measure1], desc)
} on rows
from [Cube]

选择两个度量并按第一个对行进行排序。 如何按两个度量排序,先按Measure1排序,然后按Measure2排序?

试试这个:

select 
{
   [Measures].[Measure1],
   [Measures].[Measure2]
} on columns,
{   
   ORDER(ORDER([Dim].Children, [Measures].[Measure1], desc), [Measures].[Measure2], DESC)
} on rows
from [Cube]

编辑: 它不起作用的原因是因为需要更改措施的顺序。以下是我认为会发生的情况:

控件首先转到内部集合,并按内部度量排序。然后返回的这个集合按外部度量排序。总体效果是外部度量取代了内部度量排序。因此,如果我们想按 m1->m2 排序,则 m1 需要是外部度量,m2 是内部度量。

这对我来说适用于 AdvWrks:

SELECT 
  {
    [Measures].[Reseller Order Quantity]
   ,[Measures].[Reseller Sales Amount]
  } ON 0
 ,Order
  (
    Order
    (
      [Product].[Product].[Product].MEMBERS
     ,[Measures].[Reseller Sales Amount]
     ,BDESC
    )
   ,[Measures].[Reseller Order Quantity]
   ,BDESC
  ) ON 1
FROM [Adventure Works];

也许您需要调换顺序并使用 BDESC:

SELECT 
  {
    [Measures].[Measure1]
   ,[Measures].[Measure2]
  } ON COLUMNS
 ,{
    Order
    (
      Order
      (
        [Dim].Children
       ,[Measures].[Measure2]
       ,BDESC
      )
     ,[Measures].[Measure1]
     ,BDESC
    )
  } ON ROWS
FROM [Cube];