如何在<string> hive 2.2.0 中从 ARRAY 获取第一个非空元素



我有一个如下所示的hive SQL,它返回以下输出,现在我想从数组中获得第一个非null值,即"11"。

SQ::

选择cod_cust,split(reverse(concat_ws('',collect_list(case whenacc_status='Normal'然后"1"else"0"end)),'0')状态account_status组按cod_cust;

输出::

cod_cust状态

1023[","11","1","111",","]

2209[","11","1","111",","]

如果不使用split函数,输出将如下所示:

cod_cust    status
1023        01101011100
2209        01101011100

因此,任务是找到1的第一个子序列,该子序列可以用regexp_extract来求解。也可以使用IF而不是CASE:

SELECT cod_cust, 
regexp_extract(reverse(concat_ws('', collect_list(if((acc_status='Dormant'), '1', '0'))), '1+', 0) first_element
status 
FROM account_status 
GROUP BY cod_cust;

最新更新