在 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,