Невозможно преобразовать '' в bigint в предварительном порядке

Я попытался очистить «нуль» в своем запросе, но при его запуске все еще возникает ошибка, продолжайте говорить мне, что «невозможно преобразовать» в 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


person Jing Hong    schedule 10.05.2018    source источник
comment
Пожалуйста, отредактируйте и отформатируйте эту стену нечитаемого текста.   -  person    schedule 11.05.2018
comment
разобрался, просто замени cast на try_cast   -  person Jing Hong    schedule 11.05.2018
comment
Я считаю, что проблема не в null, а в том, что у вас пустая строка.   -  person Dain Sundstrom    schedule 11.05.2018
comment
@ Дейн Сандстром да, ты прав! У меня есть пустая строка, поэтому я поставил объединение, чтобы передать эту пустую строку в -999999, но все еще не работает ... поэтому я, наконец, использую try_cast, который решил проблему.   -  person Jing Hong    schedule 11.05.2018


Ответы (1)


TRY_CAST вернет null, если приведение не удастся:

TRY_CAST(json_extract_scalar(json, '$.user_id') as BigInt) user_id 
person leftjoin    schedule 05.02.2021