OBIEE基于时间维度获取最新维度列值并聚合指标的实现咨询
OBIEE获取当月最新维度值+全月指标汇总实现方案
方案1:前端分析新增计算列实现(无需修改RPD,优先推荐)
- 先在分析的结果列中暂时保留日期最细粒度的Day字段,不要提前移除
- 新增计算列
最新Difficulty,公式设置为:MAX(CASE WHEN "Date"."Day" = MAX("Date"."Day" BY "Date"."Month") THEN "Difficulty" END BY "Date"."Month") - 原有Score列保持聚合规则为
SUM,聚合粒度设置为按Month维度聚合 - 进入选择步骤,移除原始Difficulty列、Day列,仅保留Month、
最新Difficulty、Score三列 - 执行查询后即可得到预期结果:Difficulty取当月最后一天的取值,Score为全月所有数据的汇总值,不会按Difficulty拆分
方案2:编辑分析逻辑SQL实现
如果方案1的计算规则不生效,可以直接修改分析的逻辑SQL:
SELECT "Date"."Month" AS "Month", MAX(CASE WHEN t.month_max_day = "Date"."Day" THEN "Difficulty" END) AS "Difficulty", SUM("Score") AS "Score" FROM 你的业务主题域名称 WHERE "Date"."Month" = 'August' CROSS JOIN ( SELECT MAX("Date"."Day") AS month_max_day FROM 你的业务主题域名称 WHERE "Date"."Month" = 'August' ) t GROUP BY "Date"."Month"
方案3:RPD逻辑层配置实现(需后台修改,适合全局复用场景)
OBIEE默认对非度量的属性列不会触发聚合规则,所以直接给Difficulty设置Last聚合不生效,可通过RPD配置解决:
- 在逻辑层新增
当月最大日期逻辑列,聚合规则设为MAX("Date"."Day") - 新增
当月最新Difficulty逻辑列,公式设置为CASE WHEN "Date"."Day" = "当月最大日期" THEN "Difficulty" END,聚合规则设为MAX - 后续所有分析直接调用
当月最新Difficulty列即可,无需额外配置
提示:如果仅单张报表需要该逻辑,优先用方案1,不需要改动后台配置,调整效率更高。
内容的提问来源于stack exchange,提问作者John Fuentes
相关产品推荐
相关产品推荐

