在 Redshift UDF 中求和
Posted
技术标签:
【中文标题】在 Redshift UDF 中求和【英文标题】:Summing inside Redshift UDF 【发布时间】:2018-07-02 10:53:46 【问题描述】:我有一个日期表,列:
-
日期:日期,例如'2018-06-29'
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】:Amazon Redshift 用户定义函数无法访问网络,也无法访问存储在表中的数据。
作为替代方法,您可以 create a Python function 计算两个日期之间的差异。
如果你只是想跳过周末,你可以Count number of days between dates, ignoring weekends。
如果您有更复杂的逻辑,例如跳过因年而异的假期,则需要将该信息提供给 Python 函数,例如在函数本身中包含特殊日期(例如,在假期列表中) .
【讨论】:
以上是关于在 Redshift UDF 中求和的主要内容,如果未能解决你的问题,请参考以下文章
UDF's in redshift : 可以在另一个中引用一个 udf