我需要拆分一个类似“B1/AHU/_1/RoomTemp”,“B1/AHU/_1/109/Temp”的标签,可变数量的字段。我有兴趣获得最后一个领域,或有时最后一个领域。我很失望地发现负面索引不能从右边算起,并且允许我选择Hive中数组的最后一个元素,就像他们在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很陌生。正则表达式的可能?还是有一些我不知道的语法糖?
很好的建议,但希望更简单一些(一些代码)。 –
如果你不想使用jar,这个问题可能会有所帮助http://stackoverflow.com/questions/13832500/how-to-access-the-last-element-in-an-array – gobrewers14
是的,使用反向(split(reverse()..))arno_v的建议,我发现那里。所以我给你信用。但也许你拥有他一个:)。 –