Hiveは正規表現を使用します。RLIKEはエスケープ文字を使用する必要があります



Hive Uses Regexp Rlike Needs Use Escape Characters



データクリーニングにHiveを使用するには、多くの場合、正規表現を使用する必要があります。

さらに厄介なのは、正規表現の一致が失敗した場合、Hiveがエラーをまったく報告しないことです。



オリジナルの書き方

SELECT * from ahhs_product_info where product_name NOT RLIKE '([ u4e00- u9fa5])+'



ハイブで書かれた

SELECT * from ahhs_product_info where product_name NOT RLIKE '([u4e00- u9fa5])+ '

さらに、Hiveの正規表現を使用してデータを抽出します。regexp_extract()



使用法は次のとおりです。

regexp_extract(文字列の件名、文字列パターン、intインデックス)

正規表現で指定された部分を添え字で返します。 Regexp_extract( ‘foothebar’、 ‘foo(。*?)(bar)’、2)は ‘bar’を返します。

ここでのインデックスは、一致するすべてのN番目を返すことを意味することに注意してください。一致するオブジェクト> = 2の場合にのみ、インデックスは1,2になります。通常は0です。

といった:

select uid, visittime, pageUrl, r_id, regexp_extract(pageUrl,'(?<=p-)\d+(?=\.html)',0) as pid from sitevisitlog where statdate='20141021' -- Extract the use of product ID based on the URL

正規表現は、通常、エスケープ文字を使用して認識できます。

正規表現の能力は、OracleのLIKEよりもはるかに優れています。 !