UDF Python в Redshift быстрее с CTE, чем запрос прямого выбора - PullRequest
0 голосов
/ 05 июля 2018

У меня есть функция, написанная на python для красного смещения, код ниже (вычисляет рабочие дни между двумя датами "Южноафриканские праздники и выходные"):

CREATE OR REPLACE FUNCTION b_days (start_date timestamp, end_date timestamp)
RETURNS INTEGER IMMUTABLE as $$
    from pandas import date_range
    from pandas.tseries.holiday import AbstractHolidayCalendar, Holiday

код очень быстрый при тестировании на

  • Блокнот Jupyter

  • запустить функцию простого выбора: select business_days('2018-06-29','2018-07-02') вернуть 2 в качестве ответа

  • с использованием CTE with cte as( select id, sdate, edate from bigtable --with million rows ) select id, sdate, edate, business_days(sdate,edate) from cte

но он работает без остановки, когда я говорю:

select id, sdate, edate, business_days(sdate,edate)
from bigtable --with million rows
...