【问题标题】:How to catch a failed CAST statement in BigQuery SQL?如何在 BigQuery SQL 中捕获失败的 CAST 语句?
【发布时间】:2018-06-12 15:26:30
【问题描述】:

我们正在使用 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 中的 User-Defined-Functions (UDF) 之外 - 是否有任何其他方法可以创建可以转换为 DATETIME 的 CASE 语句,否则只会将值保留为 NULL?

【问题讨论】:

    标签: datetime casting google-bigquery


    【解决方案1】:

    您可以使用SAFE_CAST 函数,如果输入在解释为所需类型时不是有效值,则该函数返回NULL。在您的情况下,您只需使用SAFE_CAST(UPDT_DT_TM AS DATETIME)。它位于Functions & Operators documentation

    【讨论】:

    • 这对我不起作用,在将 STRING 转换为 INT64 时,我仍然无法转换 'None' 值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2018-10-27
    • 1970-01-01
    相关资源
    最近更新 更多