ITPub博客

首页 > 应用开发 > IT综合 > 什么是 SAP CDS view 的 join on demand 技术

什么是 SAP CDS view 的 join on demand 技术

原创 IT综合 作者:i042416 时间:2023-08-24 23:06:05 0 删除 编辑

SAP CDS view 里借助  path expression 技术,我们可以实现  join on demand 的场景。

如下图所示:


Join on demand是SAP CDS (Core Data Services)视图的一个重要特性,它允许您在CDS视图中实现 延迟连接,从而优化查询性能。通过在需要时执行连接操作,而不是在每次查询时都执行连接,可以减少数据库的负担,提高查询性能。

在SAP CDS视图中,通常会涉及到多个实体(表)之间的连接操作,例如INNER JOIN、LEFT OUTER JOIN等。在传统的连接方式中,连接操作会在查询开始时立即执行,这可能会导致不必要的开销,特别是在某些查询中可能并不需要连接的情况下。

使用 Join on demand特性,可以将连接操作推迟到实际需要时再执行。这意味着如果您的查询不需要连接的数据,连接操作就不会发生,从而提高了查询的效率。

以下是一个简单的示例,演示了如何在SAP CDS视图中使用 Join on demand:

假设我们有两个实体(表): SalesOrder和 Customer。我们希望创建一个CDS视图,显示销售订单信息及其关联的客户信息。我们可以使用 Join on demand来实现这一点。

首先,定义 SalesOrder实体:

entity SalesOrder {  key SalesOrderID : UUID;
  CustomerID : UUID;
  OrderDate : Date;
  // ... other fields};

然后,定义 Customer实体:

entity Customer {  key CustomerID : UUID;
  Name : String;
  // ... other fields};

接下来,创建一个CDS视图,使用 Join on demand来连接 SalesOrder和 Customer:

@AbapCatalog.sqlViewName: 'Z_CDS_SalesOrderWithCustomer'@AccessControl.authorizationCheck: #NOT_REQUIRED@EndUserText.label: 'Sales Order with Customer'define view SalesOrderWithCustomer as select from SalesOrder
  association [0..1] to Customer as _Customer on $projection.CustomerID = _Customer.CustomerID
{  key SalesOrder.SalesOrderID,
  SalesOrder.OrderDate,
  _Customer.Name as CustomerName
};

在上面的代码中,我们使用了 association来定义 SalesOrder和 Customer之间的连接。关键是,我们在连接上使用了 [0..1],这表示在查询时仅在需要时才执行连接操作,而不是立即执行。这就是 Join on demand的关键部分。

通过这种方式,当我们查询 SalesOrderWithCustomer视图时,连接操作将会根据需要来执行,而不会在每次查询时都执行,从而提高了查询性能。

总而言之, Join on demand是SAP CDS视图中的一个重要特性,它通过延迟连接操作的执行来优化查询性能。这在处理大量数据和复杂查询时特别有用,可以减少数据库负担,提高查询效率。通过合理使用 Join on demand,您可以在CDS视图中实现更高效的数据模型和查询。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24475491/viewspace-2978183/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
测试

注册时间:2018-01-20

  • 博文量
    3822
  • 访问量
    1981760