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

SSAS MDX Calculate running total but exclude less significant rows

老 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

我的要求是不显示任何低于 15,000 的金额,而是显示包含这些金额的 运行 总数。我不能显示数量或 运行 总数少于 15,000。这是为了确保小数字无法识别到特定城市。

像这样:

                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

感谢您的帮助 马丁

经过几次白板会议后,我的 co-conspirator 想出了一个简单的解决方案:添加一个新度量,计算 运行 总数与城市金额之间的差异。当此差异小于阈值时,这将是包含“其他”城市名称的汇总行,并且还使用 运行 总数而不是城市总数。感谢Tyson

下面是一些示例代码:

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]