0

URL 文字列を含むデータがいくつかありますが、これらにはすべてさまざまな部分文字列が埋め込まれています。

文字列から部分文字列が削除された一連の結果を取得するという私の目標:

例えば

rawdata: { ID ロング、URL 文字列 }

生データの例: 1,/213112341_v1.html 2,43524254243_v2.html 5,/000000_v3.html 5,/000000_v4.html

私が望む結果は次のとおりです。

1,/213112341.html 2,43524254243.html 5,/000000.html

そのため、基本的に URL からサブバージョン番号 (_v1|_v2|v3|_v4) を削除し、一意の結果を作成します。

豚でそれを行うにはどうすればよいですか?

ありがとう、

4

1 に答える 1

0

あなたの最善の策は、次のようなことをすることです:

FOREACH data GENERATE id, CONCAT(REGEX_EXTRACT(url, '(/?[0-9]*)_,',1),'.html');

編集:

データが複雑な場合は以下を試してみてはいかがでしょうか

FOREACH data GENERATE id, CONCAT(STRSPLIT(url, '_v[0-9]',1),'.html')

これにより、バージョン # の前のすべてが取得され、concat によって .html が追加されます。バージョン番号の前とバージョン番号の後のセクションの両方がより複雑な場合は、次のようにすることができます。

FOREACH data GENERATE id, CONCAT(FLATTEN(STRSPLIT(url, '_v[0-9]',2)))
于 2013-09-30T02:56:02.043 に答える