做 SAP Analytics 数据模型时,一个很容易在概念上混在一起的问题,是普通 Dimension、Hierarchy Source、Hierarchy Directory、Hierarchy CDS 到底分别承担什么责任。
机场分析模型是理解这套机制非常合适的例子。
假设我们的事实数据里只有一个AirportID,查询结果可以按照机场统计航班数量、平均票价或者旅客数量。从数据库角度看,这已经足够完成聚合。但业务人员通常不会满足于只看到一长串机场代码,他们更习惯沿着
World → Region → Country → Airport
这样的路径逐层展开。
在报表里看到World,展开欧洲,再展开德国,最后看到 Frankfurt Airport,这种操作表面上只是点击展开按钮,背后却需要 ABAP CDS 模型提前描述节点是谁、父节点是谁、有哪些层次结构版本、节点文本从哪里来,以及哪一个普通 Dimension 应该暴露这棵 Hierarchy。
SAP 官方的 Analytics 示例正是使用机场数据解释这一模型。在 SAP Analytics 场景中,外部 Hierarchy 采用专门的 CDS 对象建模,并通过 Parent Child 关系组织节点。官方机场示例将完整模型拆分成 Hierarchy Directory View、Hierarchy Base View、Hierarchy Definition,以及一个可选的 Hierarchy Node View。
理解这套结构之后,会发现 Hierarchy 并不是在 Dimension CDS 上简单增加一个