我需要拆分看起来像"B1/AHU/_1/RoomTemp","B1/AHU/_1/109/Temp"的标签,所以使用具有可变数量字段的变量.我有兴趣获得最后一个字段,有时候是最后一个字段.我很失望地发现负数索引不计算在右边,允许我像在Python中一样选择Hive中数组的最后一个元素.
select tag,split(tag,'[/]')[ -1] from sensor
Run Code Online (Sandbox Code Playgroud)
当这不起作用时我更惊讶:
select tag,split(tag,'[/]')[ size(split(tag,'[\]'))-1 ] from sensor
Run Code Online (Sandbox Code Playgroud)
两次都给我一个错误:
FAILED: SemanticException 1:27 Non-constant expressions for array indexes not supported.
Error encountered near token '1'
Run Code Online (Sandbox Code Playgroud)
那么任何想法?我是Hive的新手.也许是正则表达式?或者是否有一些我不知道的语法糖?
这个问题得到了很多观点(现在已超过一千),所以我认为它需要一个正确的答案.如果我用这个解决了它:
select tag,reverse(split(reverse(tag),'[/]')[0]) from sensor
Run Code Online (Sandbox Code Playgroud)
在其他建议的答案中没有明确说明 - 我从评论中的建议中得到了这个想法.
这个:
另请注意,可以通过将1替换为0来检索倒数第二个元素,依此类推其他元素.
| 归档时间: |
|
| 查看次数: |
5000 次 |
| 最近记录: |