【问题标题】:Issue ordering MDX query result发出排序 MDX 查询结果
【发布时间】:2017-08-17 19:23:45
【问题描述】:

亲爱的:

我有以下 MDX 查询。

    WITH
    MEMBER [Measures].[Member Full Path] AS
        [Revenuedim_Client].CurrentMember.UniqueName
    MEMBER [Measures].[Member Ordinal] AS
        [Revenuedim_Client].CurrentMember.Ordinal

    SELECT 
    NON EMPTY 
    Hierarchize(
    Union(
            Crossjoin( [Measures].[BeaconAmount_USD]  ,     
             LastPeriods(12,[Date.YQM].lastChild.lastChild.lastChild)  
            )
        ,
        Crossjoin({[Measures].[Member Ordinal], [Measures].[Member Full Path]},[Date.YQM].[2018])
    )   
    ,POST) ON COLUMNS,
        TOGGLEDRILLSTATE(
            TOGGLEDRILLSTATE(
                TOGGLEDRILLSTATE(
                    TOGGLEDRILLSTATE(
                      {[Revenuedim_Client].[All Clients] } , 
                         {[Revenuedim_Client].[All Clients] }
                    ) 
                , {[Revenuedim_Client].[Group Client - Altria Group Inc.] }
                ), {}
            ), {}
        ) ON ROWS from [Revenue_Client]

这给了我如下输出:

在行上:客户(有 4 个级别可以向下钻取到项目级别) 在列上:12 个月 + 具有完整成员路径的列 在单元格中:收入

查询如何或在哪里可以添加 ORDER 语句,以便根据 12 个月的总收入和大多数收入太少的收入对行进行排序,这适用于 Revenuedim_client 层次结构中的每 4 个级别?

【问题讨论】:

  • 订单定义在这里:docs.microsoft.com/en-us/sql/mdx/order-mdx ...您尝试应用了吗?
  • 确实,就这么简单:ORDER( TOGGLEDRILLSTATE( TOGGLEDRILLSTATE( TOGGLEDRILLSTATE( TOGGLEDRILLSTATE( {[Revenuedim_Client].[All Clients]}, {${param_level1_m}} ) , {${param_level2_m}} ), {${param_level3_m}} ), {${param_level4_m}} ) ,[Measures]. ${MarketOrBeacon}, DESC)

标签: mdx


【解决方案1】:

我认为为了让事情更清楚一点,将 12mths 集移到 WITH 子句中 - 然后添加一个聚合它的成员 - 然后使用由这个新成员组成的元组以及收入作为 ORDER 函数的数字参数。

WITH 
  MEMBER [Measures].[Member Full Path] AS 
    [Revenuedim_Client].CurrentMember.UniqueName 
  MEMBER [Measures].[Member Ordinal] AS 
    [Revenuedim_Client].CurrentMember.Ordinal 
  SET [12mth] AS 
    LastPeriods
    (12
     ,[Date.YQM].LastChild.LastChild.LastChild
    ) 
  MEMBER [Date.YQM].[All].[12mth_Agg] AS 
    Aggregate([12mth]) 
SELECT 
  NON EMPTY 
    Hierarchize
    (
      Union
      (
        CrossJoin
        (
          [Measures].[BeaconAmount_USD]
         ,[12mth]
        )
       ,CrossJoin
        (
          {
            [Measures].[Member Ordinal]
           ,[Measures].[Member Full Path]
          }
         ,[Date.YQM].[2018]
        )
      )
     ,POST
    ) ON COLUMNS
 ,Order
  (
    ToggleDrillState
    (
      ToggleDrillState
      (
        ToggleDrillState
        (
          ToggleDrillState
          (
            {[Revenuedim_Client].[All Clients]}
           ,{[Revenuedim_Client].[All Clients]}
          )
         ,{[Revenuedim_Client].[Group Client - Altria Group Inc.]}
        )
       ,{}
      )
     ,{}
    )
   ,[Date.YQM].[All].[12mth_Agg]  //<<think I prefer to explicitly add what I'm ordering by
   ,DESC
  ) ON ROWS
FROM [Revenue_Client];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 2023-03-14
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多