我们正在使用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吗?
答案 0 :(得分:6)
您可以使用select a |as Alpha,
bbbbb |as Beta,
ccc |as Chi
函数,如果在解释为所需类型时输入不是有效值,则返回NULL。在您的情况下,您只需使用SAFE_CAST
。它位于Functions & Operators documentation。