gpt4 book ai didi

python - 优化 : Amazon Redshift funcitons to check if daylight savings is in effect

转载 作者:太空狗 更新时间:2023-10-30 02:42:26 25 4
gpt4 key购买 nike

我写了这个连接到dateutil.tz的函数,引用下面的代码:

CREATE OR REPLACE FUNCTION schema_name.fnc_name(ts timestamp without time zone, timezone character varying)
RETURNS boolean STABLE AS $$
from datetime import datetime
from dateutil.tz import gettz
tstz = ts.replace(tzinfo=gettz(timezone))
is_dst = datetime.timetuple(tstz).tm_isdst
return is_dst
$$ LANGUAGE plpythonu;

这个函数很慢,我需要在一个执行周期中为超过十亿行调用它。

我对 Redshift 和时区的东西真的很陌生。有人可以帮我优化吗?感谢任何性能改进建议,例如:

  1. 以某种方式将时区详细信息移动到本地数据库? (告诉我怎么做)
  2. 不要使用 Python,使用其他东西(告诉我什么)

最佳答案

使用 IMMUTABLE 而不是 STABLE 因为给定输入值,返回值将始终相同。来自documentation :

STABLE: Given the same arguments, the function is guaranteed to return the same results for all rows processed within a single statement. The function can return different results when called in different statements. This category allows the optimizer to optimize multiple calls of the function within a single statement to a single call for the statement.

IMMUTABLE: Given the same arguments, the function always returns the same result, forever. When a query calls an IMMUTABLE function with constant arguments, the optimizer pre-evaluates the function.

此外,要使 Redshift 能够缓存结果,请传入 DATE 而不是 TIMESTAMP。这将减少使用的输入值的数量,因此它们更有可能使用先前计算(和缓存)的值。

关于python - 优化 : Amazon Redshift funcitons to check if daylight savings is in effect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36497408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com