从 CDS Cube 到 Analytical Query,理解 ABAP CDS 分析查询的运行机制
我们在 SAP S/4HANA 项目里做 Embedded Analytics 时,经常会遇到一种很有意思的对象,它看起来像普通 ABAP CDS View,语法也写在 ADT 里,但运行时却并不完全走普通 SQL View 的那套路。尤其当 CDS 上出现@Analytics.query: true,或者使用更新的DEFINE TRANSIENT VIEW ENTITY AS PROJECTION ON ... PROVIDER CONTRACT ANALYTICAL_QUERY时,这个对象就进入了 Analytic Engine 的世界。
很多问题也正是从这里开始的。明明 Data Preview 可以点,明明 CDS View 语法激活通过,为什么预览结果和 Fiori Analytical App 里看到的不一样。明明底层 Cube 有数据,为什么 Query 里某个 restricted key figure 没有值。明明字段在 CDS 里存在,为什么 RSRT 或 Query Browser 里表现成了维度、度量、公式、层级、变量这些 BW 风格的概念。
要理解 ABAP CDS Analytical Query,不能只把它当成一个增强版数据库视图。更准确的看法是,它是 ABAP CDS 建模语言和 BW OLAP 分析引擎之间的一座桥。底层数据来自 ABAP CDS,语义解释交给 Analytic Engine,面向消费端时又呈现出 BW Query 的很多特征。
SAP 官方学习资料也把新一代 CDS Analytical Projection View 称为一种用于定义 analytical query 的 transient view enti
