PARSE_DATE :解析函数 BigQuery/Standard SQL 的结果无效

Lui*_*uis 5 sql google-bigquery

我在 BigQuery(标准 SQL)中有以下代码:

SAFE_CAST (PARSE_DATE('%Y-%m-%d',JSON_EXTRACT_SCALAR(g.p_dataforanalytics,'$.birthday') ) as string)
Run Code Online (Sandbox Code Playgroud)

这失败的原因是:

解析函数的结果无效

问题是我无法控制我在g.p_dataforanalytics其中获得的数据,其中一些纯粹是垃圾,格式不正确,有时甚至不是合理的价值。有没有办法定义如果PARSE_DATE()失败,它将返回 NULL 而不是抛出查询?

基本上我正在寻找任何编程语言中的 try/catch 之类的东西?

Gor*_*off 10

SAFE.在解析上使用前缀:

SAFE.PARSE_DATE('%Y-%m-%d', JSON_EXTRACT_SCALAR(g.p_dataforanalytics, '$.birthday') )
Run Code Online (Sandbox Code Playgroud)

我没有看到将其转换回字符串的实用程序,除非您想要这样的解决方案:

COALESCE(FORMAT('%Y-%m-%d',
                COALESCE(SAFE.PARSE_DATE('%Y-%m-%d', JSON_EXTRACT_SCALAR(g.p_dataforanalytics, '$.birthday'), 
                         SAFE.PARSE_DATE('%m/%d/%Y', JSON_EXTRACT_SCALAR(g.p_dataforanalytics, '$.birthday')
                        ) 

                ), JSON_EXTRACT_SCALAR(g.p_dataforanalytics, '$.birthday'
        )
Run Code Online (Sandbox Code Playgroud)

也就是说,如果代码测试了不同的日期格式,则选择一种格式,然后将其恢复为 YYYY-MM-DD 格式。并且,如果所有格式均不起作用,则保留原始值。