Пользовательская табличная функция с процедурной логикой - PullRequest
0 голосов
/ 23 марта 2020

Наша компания настраивает новый экземпляр Snowflake, и мы пытаемся перенести некоторую обработку, выполняемую в настоящее время на сервер MS SQL. Мне нужно перенести табличную SQL функцию в снежинку. В исходной функции есть процедурные логики c, что, насколько мне известно, в пользовательских функциях типа «снежинка» не допускается. Я искал обходной путь безуспешно.

Чтобы быть как можно более точным c, мне нужна функция, которая будет принимать строку для ввода, декодировать эту строку и возвращать таблицу с ключами и их соответствующими значениями. Я не могу сжать все логи c, чтобы разбить строку и декодировать ключи в один оператор SQL, поэтому Snowflake SQL UDTF не будут работать.

Я выяснил, может ли UDTF вызывать процедуру, и каким-то образом я мог просто вернуть результат, но, похоже, это не сработает. Пожалуйста, дайте мне знать, есть ли способ обойти это.

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Забавно, я просто наткнулся на это, так как сам сталкиваюсь с тем же. Я обнаружил, что есть функция SPLIT_TO_TABLE , которая может выполнить sh это. Поскольку Грег предложил объединить это вместе в форме CTE в сочетании с JOIN, это может позволить вам выполнить то, что вам нужно.

0 голосов
/ 23 марта 2020

Я думаю Javascript UDTF - это то, что вы ищете в Snowflake:

https://docs.snowflake.com/en/sql-reference/udf-js-table-functions.html

...