错误写法:
if(size(ip)>10, (ip[0],ip[1],ip[2],ip[3],ip[4],ip[5],ip[6],ip[7],ip[8],ip[9]), ip) as ip,
报错显示:
Cannot convert column from string to array.解决办法
正确语法:
if(size(ip)>10, array(ip[0],ip[1],ip[2],ip[3],ip[4],ip[5],ip[6],ip[7],ip[8],ip[9]), ip) as ip,

坑:
参考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
hive取数组前n个作为新数组的语法和坑

如果取数组应该这样只需要(ip[0],ip[1],ip[2],ip[3],ip[4],ip[5],ip[6],ip[7],ip[8],ip[9]) 这就是一个数组
但有个注意点需要加数组名 而且比较坑就是需要名字是array比较合理
所有如果你选择写if(size(ip)>10, (ip[0],ip[1],ip[2],ip[3],ip[4],ip[5],ip[6],ip[7],ip[8],ip[9]) as array, ip) as ip, 是错误的

正确小示范:
select if(size(array(1,2,3)>2),array(1,2), array(1,2,3))

相关文章:

  • 2021-12-14
  • 2021-06-13
  • 2021-09-14
  • 2021-12-18
  • 2022-12-23
  • 2021-04-20
  • 2022-01-01
猜你喜欢
  • 2018-09-15
  • 2022-12-23
  • 2021-12-11
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案