SQL/Hive -如何解析和求和一行中的所有值

px9o7tmv  于 5个月前  发布在  Hive
关注(0)|答案(1)|浏览(56)

在我的表中,有一个列,其中每行包含一个n值列表,格式如下:[“5”,“12”,“13”]。
有没有一种方法可以将列表中的所有值相加?在这个例子中,我希望返回的值是30
我已经尝试使用一个字符串的替换功能,以消除括号和引号,并试图使用一个分裂的逗号,以总结它,但它似乎没有工作。我只有读访问这个数据库。任何帮助将不胜感激,谢谢

oyjwcjzk

oyjwcjzk1#

如果您的列是STRING数据类型,那么您可以使用regexp_replace删除方括号和双引号,并使用split()拆分结果字符串以获得数组:

select sum(cast(element as int)) as mysum,
       --other columnt from t
    from mytable t
    lateral view outer explode(split(regexp_replace(col_name,'\\[|\\]|"',''),', *')) e as element
      --group by other columns from t

字符串
如果是ARRAY<STRING>,则

select sum(cast(element as int)) as mysum,
       --other columnt from t
    from mytable t
    lateral view outer explode(col_name) e as element
      --group by other columns from t

相关问题