9

私のハイブテーブルでは、sessionフィールドは次のような形式の文字列です。

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

" " で区切られた 3 つまたは 4 つのフィールドがあります-が、userID は常に最後のフィールドです。

ユーザー ID を選択したいのですが、最後のフィールドにアクセスするにはどうすればよいですか? Python では、次のようなものがあります。 arr[-1]

しかし、ハイブでは、これを達成する方法は? 次の SQL は正しくないようです。

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

ありがとう!

4

4 に答える 4

1

配列インデックスの非定数式はハイブではサポートされていないためです。

問題を解決する他の方法がいくつかあります。

  1. を使用regexp_extractします。

    my_tableからユーザーとしてregexp_extract(session、'(\-[^ \-] +)'、1)を選択します。

  2. カスタムハイブ関数を使用する:例とドキュメントはハイブドキュメントにあります

于 2012-12-12T16:00:04.817 に答える