Суммирование внутри Redshift UDF - PullRequest
0 голосов
/ 02 июля 2018

У меня есть таблицы дат, столбцы:

  1. дата: дата, например '2018-06-29'
  2. рабочий день: 1 или 0, чтобы указать, является ли дата рабочим днем ​​или нет

Я хочу создать пользовательскую функцию в Redshift, которая выводит между двумя датами, сколько рабочих дней. В утверждении выбора это будет выглядеть так:

select business_days(start_date timestamp, end_date timestamp) as integer

например:

2018-06-29 is a friday business day
2018-06-30 saturday non business day
2018-07-01 sunday non business day
2018-07-02 business day

select business_days( '2018-06-29', '2018-07-02') должен выдать 2

Redshift не разрешает агрегаты внутри функции, и я ищу обходной путь.

1 Ответ

0 голосов
/ 02 июля 2018

Пользовательские функции Amazon Redshift не могут получить доступ к сети и данные, хранящиеся в таблицах.

В качестве альтернативного подхода вы можете создать функцию Python , которая может вычислять разницу между двумя датами.

Если вы просто хотите пропустить выходные, вы можете Подсчитать количество дней между датами, игнорируя выходные .

Если у вас более сложная логика, например, пропуск пропусков, которые варьируются в зависимости от года, вам нужно будет передать эту информацию в функцию Python, например, включить специальные даты в саму функцию (например, в список выходных дней) .

...