我们如何处理 bigquery 过程中的异常?

Posted

技术标签:

【中文标题】我们如何处理 bigquery 过程中的异常?【英文标题】:how we can handle exceptions in procedures in bigquery? 【发布时间】:2019-12-15 08:38:30 【问题描述】:

在许多 RDBMS 数据库中,都有一种机制来处理存储过程和函数中的异常。 bigquery 有什么方法可以处理运行时异常吗?喜欢no data foundsubscript beyond count

【问题讨论】:

【参考方案1】:

BigQuery 尚未对其进行记录,但您可以通过创建异常处理子句来处理 BigQuery 中的任何类型的异常,如下例所述:

BEGIN
  SELECT 1/0;
EXCEPTION WHEN ERROR THEN
  SELECT @@error.message, @@error.statement_text;
END;

在上面的示例中,只要在其上方的 BEGIN 块中发生异常,就会进入 EXCEPTION 块。在异常块中,@@error.message 计算为描述错误的字符串,@@error.statement_text 是导致错误的语句的文本。

请注意,由于尚未正式记录此功能,因此语法仍有可能更改。

【讨论】:

【参考方案2】:

我不知道 BigQuery 中有任何异常处理。无论如何,如果您关心的是处理运行时异常,您应该能够通过 SAFE 方法来做到这一点。

例如,如果 SUBSTR 函数产生错误,以下代码将返回 Null。

SELECT SAFE.SUBSTR('bar', 0, 2) AS safe_output;

您可以在以下link 找到更多信息,如果我正确理解您的需求,这应该涵盖您的用例。

【讨论】:

以上是关于我们如何处理 bigquery 过程中的异常?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 for 循环中的异常以使用存储过程插入行?甲骨文 PLSQL

线程池异常如何处理你都了解吗?

RocketMQ 死信队列 | 消费者出现异常如何处理?

JVM虚拟机-- JVM是如何处理异常的

使用带有自动模式检索的 LoadJobs 时如何处理 Avro 到 BigQuery 的类型转换

C# 中的异常处理 - 如何处理?