- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我写了这个连接到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 和时区的东西真的很陌生。有人可以帮我优化吗?感谢任何性能改进建议,例如:
最佳答案
使用 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/
我有一个小问题。谁能告诉我如何在插入语句中的 SQLite 函数后附加字符串值。代码行如下: myDataBase.execSQL("INSERT INTO network_data (DateTim
#include #include #include int main() { char aa[35]; int a; scanf("%d",&a); gets(aa)
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 4 年前。 Improve t
更新: 所以现在我将代码更改为: function myFunction(calid) { document.getElementById(calid).in
我写了这个连接到dateutil.tz的函数,引用下面的代码: CREATE OR REPLACE FUNCTION schema_name.fnc_name(ts timestamp without
我在 Shape 类和 Rect、Line 和 Circle 类中有一个虚函数 printShape(),它覆盖了它,然后我创建了一个 Shapes 数组 (Shape**) 并保存派生对象,但是当我
我是一名优秀的程序员,十分优秀!