ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

深入理解 ABAP CDS Calculated Measures,为什么分析公式必须在聚合之后计算

深入理解 ABAP CDS Calculated Measures,为什么分析公式必须在聚合之后计算 做 SAP S/4HANA Embedded Analytics 时,有一种问题很容易把熟悉 SQL 的开发人员带进沟里。业务希望看到航班座位利用率。Cube 中已经有两个 Measure,一个是MaximumSeats,表示航班最多能够提供多少座位,另一个是OccupiedSeats,表示已经被占用的座位数量。按照普通 SQL 的思路,很自然会写出类似下面的表达式。OccupiedSeats/MaximumSeats表达式本身没有问题,真正的问题出现在计算时机上。分析报表可能按航班显示,也可能按航空公司汇总,还可能按机场、月份、国家甚至整个集团汇总。假如数据库底层有两架航班,一架飞机有 100 个座位,坐了 50 人,另一架飞机有 200 个座位,坐了 180 人。如果先逐行计算利用率,我们得到 50% 和 90%。再对这两个数字求平均,结果是 70%。但整个航空公司的真实座位利用率应该是( 50 + 180 ) / ( 100 + 200 ) = 230 / 300 = 76.67%70% 和 76.67% 都来自看起来合理的数学运算,却表达了完全不同的业务含义。这正是 ABAP CDS Analytical Query 里Calculated Measures/
返回列表