Redshift:错误:"缺少非空字段的数据"

时间:2017-05-29 12:03:44

标签: sql amazon-redshift

我有一个嵌套的json字段,如下所示:

trend
{"trend":0,"abs":0,"per":null}

我想查询并获取里面的值,所以我有一个case语句来获取值:

select
(CASE WHEN trend like '%"trend"%' THEN json_extract_path_text(trend, 'trend') ELSE NULL END)::SMALLINT,
(CASE WHEN trend like '%"abs"%' THEN json_extract_path_text(trend, 'abs') ELSE NULL END)::INTEGER,
(CASE WHEN trend like '%"per"%' THEN json_extract_path_text(trend, 'per') ELSE NULL END)::DOUBLE PRECISION
from staging_raw.table

问题出在最后一个字段中,' per'因为它已经为null我在Redshift中收到此错误消息:

Redshift Error

我尝试使用

条款
(CASE WHEN trend like '%"per"%' and json_extract_path_text(trend, 'per') is not NULL THEN json_extract_path_text(trend, 'per')  ELSE NULL END)::DOUBLE PRECISION

但我仍然有同样的错误。如果源是这样的话,如何解决这个问题呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

解决!

 and json_extract_path_text(trend, 'p(CASE WHEN trend like '%"per"%' and json_extract_path_text(trend, 'per') !='' THEN json_extract_path_text(trend, 'per')  ELSE NULL END)::DOUBLE PRECISION
er') !=''

这最终起作用了,因为json_extract_path_text(趋势,' per')不是NULL值而只是空值!