做 SAP 分析应用时,经常会碰到一种很有意思的现象。底层业务数据其实没有发生任何变化,销售订单还是那些销售订单,航班记录还是那些航班记录,金额、数量、日期也都存放在原来的数据源里,可是在 SAP Analytics Cloud、Multidimensional Analysis App 或其他分析客户端中,只需要改变一个维度,报表看到的数据结构就完全变了。
刚才还是整个 EMEA 区域的销售额,点开某个区域以后,马上变成国家和地区层面的销售额。继续展开某个国家,又可以看到城市。把月份从结果集拿掉以后,原来十二个月的数据重新汇总成年数据。再加入产品类别,同一批销售事实又按照国家和产品两个方向被拆开。
数据库中的事实没有重新生成,业务记录也没有被修改。真正发生变化的是分析模型观察数据的角度。
SAP 把这一类能力放在多维分析模型里理解会非常自然。当前 ABAP Analytics 文档把多维数据模型建立在 ABAP CDS 之上,实际的数据模型通常采用类似 Star Schema 的方式组织,而 Analytical Query 位于消费层,用来描述分析请求、初始布局、计算、过滤条件以及分析语义。现代 ABAP CDS 中的 Analytical Query 可以采用provider contract analytical_query的 Projection View 形式定义,并由 ABAP Analytical Engine 解释。它属于 transient entity,不会像普通 CDS View Entity 那样在 SAP HANA 中生成对应的持久 SQL View。
理解这一点以后,Navigation Through Analytical Data Sets