gpt4 book ai didi

hadoop - 从 Hive 中拆分数组的末尾进行评估

转载 作者:可可西里 更新时间:2023-11-01 14:20:31 27 4
gpt4 key购买 nike

我需要拆分一个看起来像“B1/AHU/_1/RoomTemp”、“B1/AHU/_1/109/Temp”的标签,因此要使用一个字段数量可变的变量。我有兴趣获得最后一个字段,或者有时是最后一个字段。我很失望地发现负索引不是从右边开始计数的,它允许我像在 Python 中那样在 Hive 中选择数组的最后一个元素。

select tag,split(tag,'[/]')[ -1] from sensor

当这也不起作用时,我感到更惊讶:

select tag,split(tag,'[/]')[ size(split(tag,'[\]'))-1 ] from sensor

两次都给我这样的错误:

FAILED: SemanticException 1:27 Non-constant expressions for array indexes not supported. 
Error encountered near token '1'

有什么想法吗?我对 Hive 有点陌生。也许是正则表达式?还是有一些我不知道的语法糖?

最佳答案

这个问题有很多观点(现在超过一千),所以我认为它需要一个正确的答案。如果我用这个解决了它:

select tag,reverse(split(reverse(tag),'[/]')[0]) from sensor

在其他建议的答案中实际上并没有说明 - 我从评论中的建议中得到了这个想法。

这个:

  • 反转字符串(所以“abcd/efgh”现在是“hgfe/dcba”)
  • 将它在“/”上拆分成一个数组(所以我们有“hgfe”和“dcba”)
  • 提取第一个元素(即“hgfe”)
  • 然后最终重新反转(给我们想要的“efgh”)

另请注意,倒数第二个元素可以通过用 1 代替 0 来检索,以此类推。

关于hadoop - 从 Hive 中拆分数组的末尾进行评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32415374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com