SAP CDS View 和 SAP HANA View 的区别

发布时间 2023-07-29 16:31:25作者: JerryWang_汪子熙

SAP CDS(Core Data Services)视图和SAP HANA视图都是用于数据提取和模型化的工具。它们的主要区别在于创建位置、语法、性能优化等方面。具体的区别和联系如下:

  1. 创建位置:SAP CDS视图是在ABAP层创建的,它们是ABAP字典的一部分。另一方面,SAP HANA视图是在数据库层创建的,它们存在于HANA数据库中。

  2. 语法:SAP CDS视图使用ABAP的扩展SQL语法,而SAP HANA视图使用SQL/SQL脚本。

  3. 性能优化:SAP CDS视图在ABAP服务器上进行优化,而SAP HANA视图在HANA数据库上进行优化。因此,SAP HANA视图可以利用HANA数据库的全部功能,如并行处理和列式存储,而SAP CDS视图则依赖ABAP服务器的优化。

  4. 使用场景:通常,如果要访问ABAP服务器的业务逻辑或者要在ABAP环境中使用视图,那么应使用SAP CDS视图。如果要使用HANA数据库的高级功能,如文本搜索、空间搜索或者预测分析,那么应使用SAP HANA视图。

举例来说,假设您有一张销售订单表,并且您想创建一个视图来显示每个销售代表的总销售额。如果您在ABAP环境中工作并且想要在ABAP报告中使用这个视图,那么您可能会创建一个SAP CDS视图,如下所示:

@AbapCatalog.sqlViewName: 'ZV_SALES'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Sales view'
define view Z_Sales as select from sepm_i_salesorder as so
    inner join sepm_i_businesspartner as bp on so.partner_guid = bp.partner_guid
{
    so.sales_order_id,
    bp.first_name,
    bp.last_name,
    sum(so.gross_amount_in_trans_currency) as total_sales
} group by so.sales_order_id, bp.first_name, bp.last_name

另一方面,如果您想在SAP HANA Studio中使用视图,并且希望利用HANA数据库的高级功能,那么您可能会创建一个SAP HANA视图,如下所示:

CREATE VIEW "SALES" AS 
SELECT "SALES_ORDER"."SALES_ORDER_ID", 
"BIZ_PARTNER"."FIRST_NAME", 
"BIZ_PARTNER"."LAST_NAME", 
SUM("SALES_ORDER"."GROSS_AMOUNT_IN_TRANS_CURRENCY") AS "TOTAL_SALES" 
FROM "SEPM_I_SALESORDER" AS "SALES_ORDER" 
JOIN "SEPM_I_BUSINESSPARTNER" AS "BIZ_PARTNER" 
ON "SALES_ORDER"."PARTNER_GUID" = "BIZ_PARTNER"."PARTNER_GUID" 
GROUP BY "SALES_ORDER"."SALES_ORDER_ID", "BIZ_PARTNER"."FIRST_NAME", "BIZ_PARTNER"."LAST_NAME"