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 格式。并且,如果所有格式均不起作用,则保留原始值。