组合接口视图(Composite Interface Views)继承自多个简单接口视图,也许会有关联、聚合和复杂计算。它们可以属于特定消费域,或者被复用,根据设计,它们总是暴露冗余的数据。按照实际的使用情况,组合接口视图可以分为很多层。
消费视图如名字所示,消费视图(Consumption Views)是暴露给终端用户消费的视图。消费视图会使用到一个或更多接口视图。消费视图是共用的特定领域视图,用于分析、搜索和事务应用。VDM建模的指导原则是,数据库表一定不可以被消费视图直接访问(即不可以绕过接口视图)。
扩展包含视图扩展包含视图(Extension include Views)用于暴露自定义新字段。可以扩展SAP发布的扩展包含视图,以条件附加字段。自定义扩展包含视图会在单独的DDL源中创建和传输。
总之,在高层上,CDS视图从数据库表得到数据,这些视图又会被其它CDS视图读取,VDM就是由所有的这些CDS视图组成。没有任何持久化过程,一切都是实时的。
AnnotationAnnotation用于描述CDS视图,为CDS视图中的字段提供语义和意义。
它可以应用在整个CDS视图entity上;
它可以指定SELECT列表中特定的字段的语义;
总是在@符号后面
这面是annotation的列表:https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abencds_annotations_sap.htm
也可以通过以下路径访问:ABAP – Keyword Documentation > ABAP – Dictionary > ABAP CDS in ABAP Dictionary > ABAP CDS – Syntax > ABAP CDS – Annotations
下面是用于VDM的定义整个CDS视图的一些关键的annotation:
Annotation DescriptionVDM.viewType 定义VDM视图的类型
Analytics.dataCategory 分析查询可以在CDS视图之上定义。通过指定数据分类,开发者可以提供指令和hints,告诉analytic manager如何解释各个实体。
Analytics.dataExtraction.enabled 应用开发者通过该annotation标记适合于数据复制的视图(例如,必须为海量数据提供增量复制能力)。
Analytics.query 通过标记CDS视图,开发者可以指定暴露给analytic manager的视图。这类视图会被analytic manager解释为分析查询。
ObjectModel.dataCategory 定义数据分类(#TEXT 或 #HIERARCHY)
ObjectModel.representativekey Most specific element (field or managed association) of the primary key (indicated by the keyword KEY) that represents the entity which the view is based on
AccessControl.authorizationCheck 针对指定的CDS视图启用行级别权限控制
/名词解释:analytic manager是一个BW概念,它提供OLAP功能和服务,以及BW集成规划和分析过程设计的服务。
因为我还是个BW开发者,我找了几个最重要的VDM的annotation来和BW对象对比:
Annotation: @VDM.viewType
Value Description BW 对等物#BASIC 组成核心基础的视图,无数据荣誉,它只是从数据库物理表的SELECT。 等于ADSO(高级数据存储对象),即通过某些ETL后的raw data。
#COMPOSITE 提供从基础视图继承和/或组合而成的数据 等同于Composite Provider,是允许进行join和union的虚拟数据层。
#CONSUMPTION 为特定应用目的服务的视图,也许会基于公共接口视图定义(比如BASIC 视图或COMPOSITE视图) 等于BW Query,可以指定特殊的样式,变量,RKF,CKF,总计,等等。
Annotation: @Analytics.dataCategory
Value
Description
BW 对等物
#DIMENSION
表示主数据的视图需要有annotation:ObjectModel.dataCategory: #DIMENSION
等于Infoobject Attributes
#FACT
事实表表示业务数据(星型模型的中心)通常包含度量。这些视图通常是复制所必须的,因此,他们不能和主数据视图join。
等于从一个单一数据源加载的ADSO,没有任何主数据。
#CUBE
CUBE也代表事实数据,和FACT很像,但是CUBE不必是无冗余的。这意味着它可以和主数据join。查询基本都是构建在CUBE之上的,CUBE从FACT复制数据。
等于从单一/多个数据源加载的ADSO,和主数据的attributes/texts/hiererachies连接。