首页 > 其他分享 >什么是 SAP CDS view 的 join on demand 技术

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

时间:2023-08-16 11:26:13浏览次数:40  
标签:Customer join CDS 视图 查询 demand 连接

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

假设我们有两个实体(表):SalesOrderCustomer。我们希望创建一个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来连接SalesOrderCustomer

@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来定义SalesOrderCustomer之间的连接。关键是,我们在连接上使用了[0..1],这表示在查询时仅在需要时才执行连接操作,而不是立即执行。这就是Join on demand的关键部分。

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

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

标签:Customer,join,CDS,视图,查询,demand,连接
From: https://www.cnblogs.com/sap-jerry/p/17633531.html

相关文章

  • elasticsearch中的数据类型:flattened和join
    flattened:比如你有一个字段的值是一个json,这个json里面又有很多字段,你又不想一个一个的定义这些字段到mapping,就可以用flattened直接动手:创建索引:PUTperson{"mappings":{"properties":{"patient_name":{"type":"text"},&......
  • SAP CDS view 源代码中的 $projection
    我们看到下图CDSview源代码里association条件中的$projection.在SAPCDS(CoreDataServices)中,$projection是一个特殊的关键字,用于在查询中选择特定的字段并创建一个临时视图。它可以在CDS视图的源代码中使用,以对结果集进行处理和转换。通过使用$projection,可以根据需要......
  • 什么是 SAP CDS view 的 exposed Association
    SAPCDS是SAPHANA数据库中的一种新的数据定义语言。它允许开发者定义语义富裕的数据模型,这些数据模型可以以数据库独立的方式在ABAP服务器上使用。因此,通过CDS,开发者可以创建复杂的视图来构建ABAP程序或应用。关联(Association)在CDS视图中是一个非常重要的概念。它在C......
  • SQL-三张表关联查询(INNER JOIN)
    使用场景】:现有A\B\C三张表,现在要查询并展示A表和C表中的某些字段,但是A、C两表没有相同字段,无法关联,此时有B表恰好有两个字段,一个字段和A表一个字段相同,一个字段和C表一个字段相同,我们称B表为“中间表”,因此通过B表把A、C表关联起来方法一(推荐):SELECTA1,A2,C1,C2--展示A......
  • credit default swap(CDS)
    http://en.wikipedia.org/wiki/Credit_default_swapAcreditdefaultswap(CDS)isafinancialswapagreementthattheselleroftheCDSwillcompensatethebuyerintheeventofaloandefaultorothercreditevent.ThebuyeroftheCDSmakesaseriesof......
  • SAP CDS view 里 UNION 操作的用法
    下图是SAPCDSviewUnion操作的语法和例子:SAPCDS(CoreDataServices)视图是SAPHANA数据库在ABAP层面上的抽象和逻辑视图。它不仅提供了一种SQL类型的语言(DataControlLanguage,DCL)来查询和操作数据,还提供了各种特性和功能以支持应用程序开发。在SAPCDS中,Union操......
  • SAP CDS view 的 having Condition 用法
    Havingcondition在groupby执行完毕后才evaludateSAPCDS(CoreDataServices)是一个用于定义和消费数据模型的基础设施。CDS提供了一种新的数据建模方式,它能够在数据库层定义复杂的视图,以提供更高效的数据访问。HAVING关键字在SQL中常常与GROUPBY关键字一起使用......
  • SAP CDS view 里的 Aggregation Expression
    SAPABAPCDS(CoreDataServices)视图是SAP系统中的一种建模工具,用于定义数据模型和数据库视图。CDS视图允许开发者创建高级数据模型,可以从多个数据库表中提取数据,并在SAP应用程序中使用。在CDS视图中,"AggregationExpressions"(聚合表达式)是一项强大的功能,它允许开发者对从底层数据......
  • SAP CDS view 里的 COALESCE 函数
    在SAPABAPCDS(CoreDataServices)View中,COALESCE函数是用于处理NULL值的一种功能。COALESCE函数接受多个参数,并返回第一个非NULL值参数。这意味着如果第一个参数不为NULL,则返回第一个参数的值;如果第一个参数为NULL,则返回第二个参数的值;以此类推,直到找到第一个非NU......
  • SAP CDS view 里的 currency_conversion 功能介绍
    SAPABAPCDSView的currency_conversion函数是一种用于在CDS(CoreDataServices)视图中执行货币转换的功能。在SAP系统中,经常需要在不同货币之间进行转换,以便在报表和分析中展示一致的货币金额。currency_conversion函数允许在CDS视图中定义货币转换规则,以便在查询结果中将数值......