Hive は肯定的な like クエリをサポートしていますが、例:
select * from table_name where column_name like 'root~%' ;
Hiveは否定的な like クエリをサポートしていません: ex.
select * from table_name where column_name not like 'root~%' ;
Hive がサポートする同等のソリューションを知っている人はいますか?
これを試して:
Where Not (Col_Name like '%whatever%')
rlike でも動作します:
Where Not (Col_Name rlike '.*whatever.*')
SQL では:
select * from table_name where column_name not like '%something%';
ハイブ:
select * from table_name where not (column_name like '%something%');
まだの場合は、https://cwiki.apache.org/confluence/display/Hive/LanguageManualを確認してください。ハイブのクエリを書いているときはいつもそれを参照しています。
単語の一部を一致させようとしているところは何もしていませんが、チェックアウトすることをお勧めします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にアクセスできない状態でブレインストーミングをしているだけなので、明らかな何かが欠けている可能性があります。:)
それが何らかの形で役立つことを願っています。\ ^ _ ^ /
編集:以下の私のコメントから追加のメソッドを追加します。
提供された例の場合colNameRLIKE'[^r] [^ o] [^ o] [^ t]〜\ w'これは最適な正規表現ではないかもしれませんが、サブクエリの代わりに調べる必要があります
regexp_extract の使用も同様に機能します。
select * from table_name where regexp_extract(my_column, ('myword'), 0) = ''
実際には、次のように作成できます。
select * from table_name where not column_name like 'root~%';