SSAS MDX计算运行总计,但排除不太重要的行

SSAS MDX计算运行总计,但排除不太重要的行,ssas,mdx,cumulative-sum,Ssas,Mdx,Cumulative Sum,老SQL开发人员,MDX新手:需要帮助,要求在运行总计中包含小总计,但不显示这些小总计的贡献行 以这些数据为例 Amount Running Total Denver 6,321 6,321 Portland 8,426 14,747 Boise 19,222 33,969 Helena 23,257 57,226 Bozeman 31,225 8

老SQL开发人员,MDX新手:需要帮助,要求在运行总计中包含小总计,但不显示这些小总计的贡献行

以这些数据为例

                Amount    Running Total
     Denver     6,321     6,321
     Portland   8,426    14,747
     Boise     19,222    33,969
     Helena    23,257    57,226
     Bozeman   31,225    88,451
     Seattle   36,894   125,345
我的要求是不显示15000以下的任何金额,而是显示包含这些金额的总金额。我不能显示少于15000的金额或运行总数。这是为了确保小数字不能被识别到特定的城市

像这样:

                Amount    Running Total
     Other     19,222    33,969
     Helena    23,257    57,226
     Bozeman   31,225    88,451
     Seattle   36,894   125,345
或者,理想情况下,需要什么:

                Amount
     Other     33,969
     Helena    23,257
     Bozeman   31,225
     Seattle   36,894
谢谢你的帮助
玛蒂娜

在几次白板会议之后,我的同谋想出了一个简单的解决方案:添加一个新的度量,计算总运行量和城市数量之间的差额。当此差值小于阈值时,这将是包含城市名称“Other”的汇总行,并使用运行总计而不是城市总计。荣誉

下面是一些示例代码:

WITH 
SET [OrderedSet] AS
Nonempty
    (
    ORDER
        ([Age].[Age Group B].[Age Group B].Members,
         [Measures].[Emergency Room Visits per 1,000 Member Months],
         BASC
        )
    )
MEMBER [Measures].[RowNumber] AS
    Rank([Age].[Age Group B].CURRENTMEMBER,
         [OrderedSet]
        )
MEMBER [Measures].[Running Total] as 
    Sum(
        Head
            ([OrderedSet], 
             ([Measures].[RowNumber],[Age].[Age Group B].CurrentMember)
            ),
            [Measures].[Emergency Room Visits per 1,000 Member Months]
        )
MEMBER [Measures].[Ttl_RunTtl_Diff] AS
    [Measures].[Running Total] - [Measures].[Emergency Room Visits per 1,000 Member Months]
MEMBER MEASURES.NewAge AS 
    IIF([Measures].[Ttl_RunTtl_Diff] = 0 OR [Measures].[Ttl_RunTtl_Diff]>15000 
        , [Age].[Age Group B].CURRENTMEMBER.Name, "Other") 
MEMBER MEASURES.NewTotal AS 
    IIF([Measures].[Ttl_RunTtl_Diff] = 0 OR [Measures].[Ttl_RunTtl_Diff]>15000 
        , [Measures].[Emergency Room Visits per 1,000 Member Months], [Measures].[Running Total]) 
SELECT NON EMPTY 
  { 
  [Measures].[Emergency Room Visits per 1,000 Member Months],
  [Measures].[Member Months],
  [Measures].[Emergency Room Visits],
  [Measures].[Running Total],
  [Measures].[Ttl_RunTtl_Diff],
  [Measures].[NewAge],
  [Measures].[NewTotal]
  } 
 ON COLUMNS, 
  NON EMPTY 
    FILTER({[OrderedSet]} 
            , [Measures].[Running Total] > 15000 )
 ON ROWS FROM [Model] 

您可以显示一些您尝试过的代码吗?好的,这里有一些代码提供了运行总数和一个过滤器,以排除少于15000的金额。毫无疑问不雅观。集合[OrderedSet]为非空(ORDER([Geo].[City].[City]。成员[Measures].[Amount],BASC])成员[Measures].[RowNumber]为秩([Geo].[City]。CURRENTMEMBER,[OrderedSet])成员[Measures].[RowNumber]。[Geo].[City].CurrentMember)),[Measures].[Amount])在0上选择{[Measures].[Amount],[Measures].[Running Total]},在1上从[TheCube]中筛选({[OrderedSet]},[Measures].[Running Total]>15000),这样您就已经有了一个有效的解决方案了?它已部分解决。剩下的一点是,合并行的行标签需要重写为“其他”。在我的例子中,丹佛、波特兰和博伊西得到整合,但标签是“博伊西”。为了让这个解决方案对我有效,我需要一种方法将标签改写为“Other”。