Database 如何在HANA查询中实现递归

Database 如何在HANA查询中实现递归,database,hana,recursive-query,Database,Hana,Recursive Query,我认为HANA DB不支持递归函数,因此,请建议使用HANA查询来解决以下问题 问题陈述: 考虑下表,作为“orange”手头的一个输入,用于查询下表以获取“orange”的“child”值,同时,获取的“child”值应视为“parent”以获取所有相关的子值 表:(假定表名为“水果”) 输入: column name-parent, value-orange 预期输出: apple, grapes, pomo, pears, plums SAP HANA不支持从HANA 2 SP04开始

我认为HANA DB不支持递归函数,因此,请建议使用HANA查询来解决以下问题

问题陈述:

考虑下表,作为“orange”手头的一个输入,用于查询下表以获取“orange”的“child”值,同时,获取的“child”值应视为“parent”以获取所有相关的子值

表:(假定表名为“水果”)

输入:

column name-parent, value-orange
预期输出:

apple, grapes, pomo, pears, plums
SAP HANA不支持从HANA 2 SP04开始。 因此,可以使用递归存储过程以递归方式实现查询

根据您的需求,您最好看看SAP HANA提供了什么,而不是:A

有了它,你可以定义你的层次结构(这基本上就是你在问题中所描述的),然后问许多不同的问题,例如“葡萄下面的水果是什么?”或“什么水果有‘苹果’作为直系亲本?”等等。 这在没有任何昂贵的递归的情况下工作,并且已经在HANA中提供了好几年

这种方法的另一个好处是,层次结构是显式定义的,而不是通过遍历数据的方式隐式假定的。在我看来,这样可以更容易地将层次结构的构建方式和您想回答的问题分开


我看到的唯一缺点是,这些特性当然是专有的,不能在其他DBMS上1:1使用。此外,如果您以前从未在RDBMS中使用过分层数据,并且只尝试复制您在某处找到的解决方案,那么这将需要您自己的一些思考/学习;也就是说,有一个学习曲线。

如果HANA版本为1.0,则有一个替代解决方案,该解决方案通过计算视图生成递归列视图,并在此处设置层次结构。此视图的名称为计算视图+“\name\u of_hierarchy”,并放置在列视图的_SYS\u BIC架构中

您可以使用MDX增强SQL来处理递归/层次结构逻辑,如: 从“\u SYS\u BIC.”列视图/层次结构视图“(“表达式”=>“子体(*)”中选择*)

语法是wast,取决于需求

apple, grapes, pomo, pears, plums