我们如何处理BigQuery功能的异常?

发布于 2025-02-03 16:13:26 字数 215 浏览 2 评论 0原文

给定任何功能,例如:

CREATE FUNCTION ds.fn(param ANY TYPE) RETURNS STRING AS (
    (SELECT 1/0)
);

当语句失败并返回默认值时,是否有办法处理错误?

注意:我的问题是关于的任何错误,选择语句可以投掷,而不仅仅是上面示例中的算术。

given any function like e.g:

CREATE FUNCTION ds.fn(param ANY TYPE) RETURNS STRING AS (
    (SELECT 1/0)
);

Is there a way for handling errors when the statement fails and return a default value?

Note: My question is about any error that a select statement can throw and not only the arithmetic in the example above.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

在风中等你 2025-02-10 16:13:26

您可以使用UDF中的安全功能使功能更强大,并且如果它失败如下,也可以使其返回默认值。

CREATE FUNCTION ds.fn(param ANY TYPE) RETURNS AS ((
  SELECT IFNULL(SAFE_DIVIDE(1,0), 0)
));

另外,您可以使用begin ...异常 block:

CREATE OR REPLACE FUNCTION testset.fn(param ANY TYPE) RETURNS FLOAT64 AS ((
  SELECT 1/0
));

BEGIN
  SELECT testset.fn(10);
EXCEPTION WHEN ERROR THEN
  SELECT @@error.message;
END;

You can make your function more robust using SAFE functions inside a UDF and also make it return default value if it fails like below.

CREATE FUNCTION ds.fn(param ANY TYPE) RETURNS AS ((
  SELECT IFNULL(SAFE_DIVIDE(1,0), 0)
));

Also, you can catch a error in a BigQuery script using BEGIN...EXCEPTION block:

CREATE OR REPLACE FUNCTION testset.fn(param ANY TYPE) RETURNS FLOAT64 AS ((
  SELECT 1/0
));

BEGIN
  SELECT testset.fn(10);
EXCEPTION WHEN ERROR THEN
  SELECT @@error.message;
END;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文