0
点赞
收藏
分享

微信扫一扫

SAP Table function 执行报错 code CX_SQL_EXCEPTION feature not supported 该如何分析

我的​​知识星球​​里有朋友提问:

我的场景是cds 调用 table function, table function 调用 amdp 然后报错:

code:CX_SQL_EXCEPTION message: feature not supported.Contains predicates only supported when table function is unfolded?

请问这个是什么意思???当我debug amdp的时候也没有报错

我们就着错误消息逐一分析。

feature not supported - 功能不支持。

具体什么功能不支持?Contains predicates only supported

Contains 这个 Predicates 功能不支持。

什么是 ​​Contains​​ Predicates?

请看 SAP 帮助​​文档​​。

SAP Table function 执行报错 code CX_SQL_EXCEPTION feature not supported 该如何分析_帮助文档

我们看一下这个帮助文档的层级结构,发现它位于 SAP HANA Platform 的 FUZZY Search 下面,说明这是一个和 HANA 平台模糊搜索相关的功能:

SAP Table function 执行报错 code CX_SQL_EXCEPTION feature not supported 该如何分析_sql_02

在计算机科学中,Predicate 实际就是一个函数或者 SQL 语句,返回类型为布尔值,真或者假。

HANA SQL Script 里这个例子 ​​...WHERE CONTAINS(col, 'search term', FUZZY(0.7))... ​​,如果施加在一个数据类型的表列(Table Column) 上,返回 Fuzzy 分数大于或等于 0.7 的所有值。

Contains predicates only supported when table function is unfolded

字面意思,只有一个 ​​unfolded​​​ table function 内部才允许使用 ​​Contains​​ 这个 predicate 功能。

那么什么是 unfolded table function?

根据 unfold 关键字查询:

SAP Table function 执行报错 code CX_SQL_EXCEPTION feature not supported 该如何分析_帮助文档_03

可以看到 HANA Calculation View,Query 等模型都支持 ​​unfold​​ 操作。

如何判断一个 query 执行过程中是否发生了 ​​unfolded​​?

​​SAP 官网​​:

开发人员可以使用 ​​Explain Plan​​​ 功能检查 Query 是否 ​​unfold​​​. 如果查询中使用的所有表都出现在 Plan 中,则说明 ​​Unfold​​ 成功发生。

下面的示例显示了在 Caculation View 上执行的查询的 Explain Plan. k-匿名节点被投影节点(Projection Node)取代。 因此 Unfold 在默认情况下发生,所有涉及的表都显示在 Plan 中:

SAP Table function 执行报错 code CX_SQL_EXCEPTION feature not supported 该如何分析_官网_04

回到本文标题的错误,只有在 table function 执行时发生了 unfold,才支持 CONTAINS 这个 predicate.

但是 table function 在什么情况下才会 unfold?需要继续研究。

举报

相关推荐

0 条评论