Hiveは肯定的なクエリのようなものをサポートしていますが:ex。
select * from table_name where column_name like 'root〜%';
ハイブしないクエリのような否定をサポート:ex。
select * from table_name where column_name 'root〜%'とは異なります;
Hiveがサポートする同等のソリューションを知っている人はいますか?
https://cwiki.Apache.org/confluence/display/Hive/LanguageManual を確認してください。 Hiveのクエリを作成するときは常に参照します。
Wordの一部と一致させようとすることは何もしていませんが、RLIKE
(このセクションでは https://cwiki.Apache.org/confluence/display/Hive/LanguageManual + UDF#Relational_Operators )
これはおそらくちょっとしたハック作業ですが、正の値と一致するかどうかを確認するサブクエリを実行し、CASE
( http://wiki.Apache.org/ hadoop/Hive/LanguageManual/UDF#Conditional_Functions )は、一致するかどうかを確認するためにチェックするメインクエリの既知の値を持ちます。
別のオプションは、チェックを行うUDFを作成することです。
Hiveにアクセスできない状態で自宅に座っている間にブレーンストーミングをしているだけなので、明らかな何かを見逃している可能性があります。 :)
それが何らかの形で役立つことを願っています。\^ _ ^ /
編集:以下の私のコメントから追加のメソッドを追加します。
提供された例のcolName RLIKE '[^ r] [^ o] [^ o] [^ t]〜\ w'これは最適なREGEXではないかもしれませんが、サブクエリの代わりに調べるべきものです
これを試して:
Where Not (Col_Name like '%whatever%')
rlikeでも動作します:
Where Not (Col_Name rlike '.*whatever.*')
NOT LIKEはHiveバージョン0.8.0でサポートされています。JIRAで確認してください。
SQLの場合:
select * from table_name where column_name not like '%something%';
ハイブ内:
select * from table_name where not (column_name like '%something%');
Regexp_extractの使用も同様に機能します。
select * from table_name where regexp_extract(my_column, ('myword'), 0) = ''
Impalaでは、次のように!=
を使用できます。
columnname != value
実際、次のように作成できます。
select * from table_name where not column_name like 'root~%';