【发布时间】:2021-10-27 17:32:59
【问题描述】:
我正在尝试将我们的旧函数转换为标准 SQL,因此通过使用 UDF 作为一个 gig 来重用旧函数名称和原生函数。
这里我有我的 UDF to_char 并在里面使用参数来运行 FORMAT_DATE 但是当我执行它时,即使创建了一个例程,我也会收到没有附加信息的错误。 一旦创建了例程并且我注释掉了代码,错误就会出现 function to_char not found
如果我运行CREATE TEMP FUNCTION,我会得到很长的加载时间(大约 30 - 90 秒),这显然是不对的。
CREATE OR REPLACE FUNCTION mytable.TO_CHAR(dstamp DATETIME, fmt STRING)
RETURNS STRING AS
(
FORMAT_DATE(fmt, dstamp)
);
SELECT
TO_CHAR(End_Time, 'yyyy-mm') AS Month_and_Year,
我不想创建临时函数。理想情况下,我希望有一个例程,我可以在需要时继续调用,但我的 UDF 和 FORMATE_DATE 函数搞砸了。任何帮助将不胜感激,谢谢!
顺便说一句,在 GBQ 中运行它。
【问题讨论】:
-
为什么不直接使用内置函数呢? FORMAT_DATE?另外,您知道吗 - 您可以创建永久功能?你真正的用例是什么?请详细说明...
-
我有一堆遗留代码,我们希望将它们转换为标准 SQL,因此我不想将函数更改为内置函数,而是我想创建自己的函数,例如 to_char 函数使用 FORMAT_DATE 同样的事情。是的,我知道,CREATE OR REPLACE FUNCTION 不会创建一个永久函数吗??
标签: sql google-bigquery user-defined-functions bigquery-udf