Как реализовать рекурсию в запросе HANA - PullRequest
0 голосов
/ 25 сентября 2019

Я считаю, что рекурсивная функция не поддерживается в БД HANA, и поэтому, пожалуйста, предложите запрос HANA для решения приведенной ниже проблемы.

Постановка задачи:

Рассматривая приведенную ниже таблицу как единое целоевходные данные доступны в руке 'orange' для запроса таблицы ниже, чтобы получить значения 'child' для 'orange', и в то же время полученные значения 'child' должны быть обработаны как 'parent' для получения всех соответствующих дочерних значений.

Таблица: (примите имя таблицы как «фрукты»)

child   parent

apple   orange
grapes  apple
pomo    grapes
pears   orange
plums   pears
jack    cashew

Ввод:

column name-parent, value-orange

Ожидаемый выход:

apple, grapes, pomo, pears, plums

1 Ответ

0 голосов
/ 27 сентября 2019

SAP HANA поддерживает Рекурсивная логика SQLScript , начиная с HANA 2 SP04.Таким образом, вы можете реализовать свой запрос рекурсивным способом, используя рекурсивные хранимые процедуры.

Учитывая ваши требования, вам может быть лучше взглянуть на то, что предоставляет SAP HANA вместо с рекурсивными выражениями общих таблиц: A Модель данных иерархии .

С ее помощью вы можете определить свою иерархию (это в основном то, что вы описали в своем вопросе) изатем задайте много разных вопросов, например, "что все фрукты ниже винограда?"или "какие фрукты имеют" яблоко "в качестве прямого родителя?"и много других.Это работает без какой-либо дорогостоящей рекурсии и теперь доступно в HANA уже несколько лет.

Еще одно преимущество этого подхода заключается в том, что иерархическая структура явно определяется, а не подразумевается, что вы просматриваете данные.На мой взгляд, это облегчает разделение мышления о том, как устроена иерархия, и вопроса, на который вы хотели бы ответить.

Единственный недостаток, который я вижу в этом, заключается в том, что эти функции, конечно, являются собственностью и не могутиспользовать 1: 1 на другой СУБД.Кроме того, если вы никогда ранее не работали с иерархическими данными в СУБД и только пытались скопировать решения, которые вы где-то нашли, то это потребует некоторого собственного мышления / изучения с вашей стороны;то есть есть кривая обучения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...