2012-12-12 9 views
5

は、sessionフィールドのような形式の文字列です:配列の最後の要素にアクセスする方法は?私のハイブテーブルで

ip-sessionID-userIDまたはarea-sessionID-userID

あり「-」で区切られた3つのまたは4のフィールドがありますが、ユーザーIDは常に最後のものです。

私はuserIDを選択しますが、最後のフィールドにアクセスする方法はありますか? 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

この正規表現ソリューションはしませんでした配列が1つの要素しか持たない場合の作業 – mel

+0

'regexp_extract(session、 '([^ \ - ] +)$'、1)'を試してみてください。 – pensz

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

で見つけることができ;)

+0

この回答が大好きです。ありがとう。 –

関連する問題