在Hive中返回数组中某个项的索引

3

我有一个产品发布版本的数组,看起来像这样:

version_release    
[1, 2, 5, 7, 8, 9]

我希望能够找到产品的下一个(或上一个)版本,已知当前版本号。

例如,我正在查看版本7,下一个版本是8,上一个版本是5。

在Hive中,有没有办法:

  1. 找到数组中“7”的索引(4)
  2. 增加(或减少)该索引以返回“8”(索引5)或“5”(索引3)?

也许你应该使用 indexOf([value]) 来返回一个值的位置,然后从索引位置加或减一。 - David
抱歉,由于网站地图给出了“hive索引”网站,我无法找到关于此的良好文档。您有语法示例吗? - Alex
1个回答

4
在 SQL 中直接操作数组并不十分符合规范。你可以尝试首先使用 "PosExplode()" 将该列转换成每个数组值对应的 1 条记录,然后通过连接相邻位置的值(1 vs. 2, 2 vs. 3...)来获取后继关系。
或者也许 BrickHouse 库 对你的用例有更高效的解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接