如何在BigQuery SQL中捕获失败的CAST语句?

时间:2018-01-02 23:20:16

标签: datetime casting google-bigquery

我们正在使用BigQuery的非遗留SQL将STRING字段转换为DATETIME字段。

DATETIME字段已损坏,其值为“None”和“0.0”,这会导致我们的CAST语句失败。

我们看到,对于其他类型的SQL,有TRY-CATCH函数和ISNUMERIC()测试 - BigQuery中似乎都不支持这两种函数。

这是一个捕获“无”但未能捕获随机浮点数或整数的示例:

CASE 
 WHEN UPDT_DT_TM LIKE 'None' THEN NULL
 ELSE CAST(UPDT_DT_TM AS DATETIME) 
END AS UPDT_DT_TM,

除了BigQuery中的用户定义函数(UDF)之外,还有其他任何方法可以创建一个CASE语句,它可以在可以转换为DATETIME但是只是将值保留为NULL吗?

1 个答案:

答案 0 :(得分:6)

您可以使用select a |as Alpha, bbbbb |as Beta, ccc |as Chi 函数,如果在解释为所需类型时输入不是有效值,则返回NULL。在您的情况下,您只需使用SAFE_CAST。它位于Functions & Operators documentation