MDX需求:为计算百分比度量添加区间分组属性
解决Cube中计算成员百分比区间分组的问题
我明白你想给现有的Percentage计算成员做区间分组的需求,你的思路是新增多个度量成员完全可行,下面是具体的实现代码(我默认了四个常见区间,你可以根据业务需求调整阈值):
方案一:创建多个区间度量成员
这种方式会给每个区间单独创建一个度量,返回1表示数据落在该区间,返回0则表示不在,方便你统计各区间的数量:
-- 区间1:百分比 < 50% CREATE MEMBER CURRENTCUBE.[Measures].[Percentage <50%] AS IIF( [Measures].[Percentage] < 0.5, 1, 0 ), FORMAT_STRING = "0", VISIBLE = 1; -- 区间2:50% ≤ 百分比 < 80% CREATE MEMBER CURRENTCUBE.[Measures].[50% ≤ Percentage <80%] AS IIF( [Measures].[Percentage] >= 0.5 AND [Measures].[Percentage] < 0.8, 1, 0 ), FORMAT_STRING = "0", VISIBLE = 1; -- 区间3:80% ≤ 百分比 ≤ 100% CREATE MEMBER CURRENTCUBE.[Measures].[80% ≤ Percentage ≤100%] AS IIF( [Measures].[Percentage] >= 0.8 AND [Measures].[Percentage] <= 1, 1, 0 ), FORMAT_STRING = "0", VISIBLE = 1; -- 区间4:百分比 > 100% CREATE MEMBER CURRENTCUBE.[Measures].[Percentage >100%] AS IIF( [Measures].[Percentage] > 1, 1, 0 ), FORMAT_STRING = "0", VISIBLE = 1;
方案二:创建单个返回区间标签的计算成员
如果你想要直接看到每个数据对应的区间分类,用这个方案更灵活,它会返回区间的文本标签,你可以把它当作属性来做分组展示:
CREATE MEMBER CURRENTCUBE.[Measures].[Percentage Interval] AS SWITCH( [Measures].[Percentage] IS NULL, "无数据", [Measures].[Percentage] < 0.5, "<50%", [Measures].[Percentage] >= 0.5 AND [Measures].[Percentage] < 0.8, "50%-80%", [Measures].[Percentage] >= 0.8 AND [Measures].[Percentage] <= 1, "80%-100%", [Measures].[Percentage] > 1, ">100%", "其他" ), VISIBLE = 1;
注意事项
- 你可以完全根据实际业务调整区间的阈值,比如把80%改成90%,或者增加更多细分区间
- 两个方案都处理了
Percentage为null的情况(也就是原度量中Performance GB为0的场景),避免出现计算错误 - 这些计算成员会自动和Cube里的其他维度(比如时间、产品维度)联动,不需要额外配置
内容的提问来源于stack exchange,提问作者NimraF
相关产品推荐
相关产品推荐

