在 bigquery 的 UDF 中调用本机函数
Calling a native function within a UDF in bigquery
我正在尝试将我们的遗留函数转换为标准函数 SQL,因此通过使用 UDF 作为 gig 来重用旧函数名称和本机函数。
这里我有我的 UDF to_char 并在内部使用 运行 FORMAT_DATE 的参数,但是当我执行它时,即使创建了一个例程,我也会收到没有其他信息的错误。
一旦创建了 rountine 并且我注释掉了代码,错误就会出现 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 中使用这个。
您需要引用带有数据集前缀的 UDF,否则 BigQuery 认为它是内置函数或临时 UDF。在您的情况下,只需将 TO_CHAR
更改为 mytable.TO_CHAR
。假设您的 mytable
实际上是一个数据集。
SELECT mytable.TO_CHAR(End_Time, 'yyyy-mm') AS Month_and_Year,
我正在尝试将我们的遗留函数转换为标准函数 SQL,因此通过使用 UDF 作为 gig 来重用旧函数名称和本机函数。
这里我有我的 UDF to_char 并在内部使用 运行 FORMAT_DATE 的参数,但是当我执行它时,即使创建了一个例程,我也会收到没有其他信息的错误。 一旦创建了 rountine 并且我注释掉了代码,错误就会出现 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 中使用这个。
您需要引用带有数据集前缀的 UDF,否则 BigQuery 认为它是内置函数或临时 UDF。在您的情况下,只需将 TO_CHAR
更改为 mytable.TO_CHAR
。假设您的 mytable
实际上是一个数据集。
SELECT mytable.TO_CHAR(End_Time, 'yyyy-mm') AS Month_and_Year,