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

简介: 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 HANA Platform 的 FUZZY Search 下面,说明这是一个和 HANA 平台模糊搜索相关的功能:





在计算机科学中,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 关键字查询:




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


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


SAP 官网


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


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




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


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

相关文章
|
7天前
|
SQL XML Java
mybatis 调用修改SQL时 出现了一个问题 没有修改成功也没有报错
mybatis 调用修改SQL时 出现了一个问题 没有修改成功也没有报错
16 0
|
2月前
|
搜索推荐
如何让 SAP UI5 Smart Table 支持多项选择(Multiple-Selection)试读版
如何让 SAP UI5 Smart Table 支持多项选择(Multiple-Selection)试读版
19 0
|
2天前
|
SQL 关系型数据库 分布式数据库
数据管理DMS操作报错合集之DMS SQL执行失败且无法看到原因,如何解决
数据管理DMS(Data Management Service)是阿里云提供的数据库管理和运维服务,它支持多种数据库类型,包括RDS、PolarDB、MongoDB等。在使用DMS进行数据库操作时,可能会遇到各种报错情况。以下是一些常见的DMS操作报错及其可能的原因与解决措施的合集。
|
21天前
|
SQL 数据库 索引
SQL索引失效原因分析与解决方案
SQL索引失效原因分析与解决方案
24 0
|
29天前
|
SQL 关系型数据库 MySQL
【MySQL】慢SQL分析流程
【4月更文挑战第1天】【MySQL】慢SQL分析流程
|
2月前
|
SQL JSON Kubernetes
Seata常见问题之服务端 error日志没有输出,客户端执行sql报错如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
108 0
|
2月前
|
SQL 数据库 索引
解决SQL报错:索引中丢失IN或OUT參数
解决SQL报错:索引中丢失IN或OUT參数
|
3月前
|
SQL 消息中间件 Kafka
Flink报错问题之SQL作业中调用UDTF报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
3月前
|
SQL 消息中间件 资源调度
Flink报错问题之flink 1.11 sql作业提交JM报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
3月前
|
SQL Java 数据库连接
Flink报错问题之SQL报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。