【发布时间】:2018-10-21 06:30:34
【问题描述】:
我试图在我的查询中清除'null',但运行它时仍然出现错误, 一直告诉我 'cannot cast '' to bigint,有什么办法可以解决吗?
我的查询
select m.app, m.hour,m.user_id,
m.avg_minutes_watched, n.userid, n.watched_mins, n.active FROM
(SELECT app,
substr(hour,1,8) hour,
CAST(COALESCE(json_extract_scalar(json, '$.user_id'), '-999999') as BigInt) user_id,
CAST(COALESCE(json_extract_scalar(json, '$.playback_time'), '-999999') as BigInt) /60000 avg_minutes_watched
FROM prod
WHERE event_type = 'user_session_complete' AND hour > '20180331' and hour < '20180501')m
left join
(select userid, watched/60000 watched_mins,
(case when watched/60000 >= 2 then 'active' else 'not_active' end) active from est where realdate > '2018-03-31' and realdate < '2018-05-01') n
on m.user_id = n.userid
order by m.hour, m.user_id;
错误
Query 20180510_220127_17857_bxg5s, FAILED, 72 nodes
Splits: 5,178 total, 644 done (12.44%)
0:04 [39.2M rows, 1.93GB] [9.32M rows/s, 469MB/s]
查询 20180510_220127_17857_bxg5s 失败:无法将 '' 转换为 BIGINT
【问题讨论】:
-
请edit 格式化这堵无法阅读的文字墙。
-
想通了,把 cast 换成 try_cast 就行了
-
我认为问题不在于
null,而在于您的字符串为空。 -
@Dain Sundstrom 是的,你是对的!我有空字符串,所以我把这些空字符串转移到-999999,但仍然无法正常工作..所以我最终使用try_cast,解决了问题。
标签: sql casting type-conversion presto trino