2012-12-12 68 views
5

在我的蜂巢表中,session場是在像格式的字符串:如何訪問數組中的最後一個元素?

ip-sessionID-userIDarea-sessionID-userID

有由「-」分離的3或4場,但用戶ID總是最後一個。

我想選擇用戶ID,但如何訪問最後一個字段?在Python中,有這樣的: arr[-1]

但在配置單元,如何實現這一目標?以下SQL似乎不正確。

select split(session,"\-")[-1] as user from my_table;

謝謝!

回答

1

因爲配置單元中不支持數組索引的非常量表達式。

會有一些其他的方法來解決你的問題:

  1. 使用regexp_extract,如:

    選擇REGEXP_EXTRACT(會話 '(\ - [^ \ - ] +)', 1)來自my_table的用戶;

  2. 使用習慣蜂巢功能:例如和文件可在hive document

+0

此正則表達式的解決方案並沒有案例數組中只有一個元素。 – mel

+0

嘗試'regexp_extract(session,'([^ \ - ] +)$',1)'? – pensz

11
reverse(split(reverse(session), '-')[0]) 

發現雖然這可能會有點比正則表達式的解決方案更昂貴;)

+0

喜歡這個答案。謝謝。 –

相關問題