SSAS MDX计算运行总计,但排除不太重要的行
老SQL开发人员,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
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”。