В Redshift вы можете определять только скалярные функции, то есть те, которые возвращают одно значение.Функции, основанные на множестве (те, которые возвращают таблицы), к сожалению, не поддерживаются в Redshift.
Возможная причина в том, что Redshift является распределенной базой данных, и функции выполняются на вычислительных узлах параллельно, независимо друг от друга.Функции, основанные на множествах, должны иметь возможность считывать данные из базы данных, но есть вероятность, что некоторые данные находятся на данном узле, а другая часть - на другом.Такая функция не может работать на конкретном вычислительном узле независимо.Вы должны запустить такую функцию только на главном узле.Что вы не хотели делать, так как это противоречит всей концепции параллелизма.
Попробуйте выразить ту же логику в запросе SQL.Из вашего кода кажется, что он может работать как обычный запрос / подзапрос.