\nSAP HANA分析视图查询结果异常\n


您没有提供您试图实现的目标的完整细节。请参考SAP OSS 笔记 1993033 分析视图查询结果错误

在激活分析视图时,会生成列视图。但是,某些工件无法在此列视图中计算。在这种情况下,会在其顶部生成一个额外的计算视图。如果在分析视图中定义了以下元素,则必须执行计算视图的生成

  • 输入参数
  • 计算属性
  • 单位或货币转换

如果在分析视图中定义了至少一个这些元素,则激活会创建一个OLAP视图和一个计算视图。运行时的查询始终指向计算视图,计算视图本身从OLAP视图检索数据。计算视图获取已聚合的数据,并且根据计算度量的公式和复杂性,对计算度量的查询可能会返回意外的结果。

关于计算度量的放置,有三种可能性

  • OLAP,聚合前计算(这必须在分析视图中显式标记)
  • OLAP,聚合后计算(默认行为)
  • 计算视图

如果公式使用计算属性、输入参数或需要计算视图的其他计算度量,则必须在计算视图中计算计算度量。

现在,查询的结果取决于公式及其计算位置。例如,如果公式将度量的值乘以某个因子,则公式可能对聚合透明:CM1 = M1 * 1000

结果始终相同,无论公式是在(sum)聚合之前还是之后计算。

但是,这并不适用于添加常数值的公式,例如 CM2 = M1 + 1

说明(例如,M1 有 10 个值,每个值等于 1000)

    聚合前计算

    每个 CM2 的计算结果为 1001,总和聚合结果为 10010

    聚合后计算

    结果为 10 * 1000 + 1 = 10001

如果分析视图定义了计算度量,一些在 OLAP 视图中计算,一些在计算视图中计算,则根据公式,它们的混合可能会很危险。

在分析视图中,与它们的聚合类型不满足交换律的计算度量可能会产生意外的结果——这取决于此视图上的特定查询。如果使用了以下至少一个元素,则请求此类计算度量的查询可能存在风险

    group by 定义中的计算视图属性

    请求单位/货币转换度量

    请求计数 distinct 度量

    分析视图上的堆叠 SQL 查询,例如

SELECT SUM(CALC_MEASURE) FROM (

SELECT SUM(CALC_MEASURE),A

FROM AVIEW GROUP BY A)

      

解决方案 −

如果如上所述,将在分析视图上使用此类复杂查询,则需要仔细处理计算度量,并应将其移动到需要在分析视图之上建模的附加计算视图中。分析视图作为计算视图的数据源,计算视图定义计算度量。“聚合前计算”选项的计算度量必须保留在分析视图中。

更新于:2020年2月17日

207 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告