总结Redshift UDF内部

时间:2018-07-02 10:53:46

标签: amazon-web-services amazon-redshift user-defined-functions

我有一个日期表,列:

  1. date:日期,例如'2018-06-29'
  2. business_day:1或0表示日期是否为营业日

我想在Redshift中创建一个用户定义的函数,该函数在两个日期之间输出多少个工作日。在select语句中将如下所示:

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 :(得分:1)

Amazon Redshift用户定义函数无法访问网络,也不能访问存储在表中的数据。

作为一种替代方法,您可以create a Python function来计算两个日期之间的时差。

如果您只想跳过周末,可以Count number of days between dates, ignoring weekends

如果您有更复杂的逻辑,例如跳过每年不同的假期,则需要将该信息提供给Python函数,例如在函数本身中包含特殊日期(例如,在假期列表中)