/google/gmail/inbox
/google/drive/map
/google/apps
/yahoo/news/cricket
/yahoo/mail/
/yahoo/sports
/wiki/ind/jack
/wiki/us/jil
必要なページグループを取得する必要があります。 Hiveクエリを使用して「google」で始まるページグループを検索する場合、最初の3行のデータを取得する必要があります。
/google/gmail/inbox
/google/drive/map
/google/apps
このように、ページグループに基づいてデータを取得する必要があります。
Like関数を使用して文字列を検索しました。
select * from table where field like '%/google/%';
ページグループが必要なようです。これはグーグルかもしれませんが、おそらくヤフーかもしれないようです。検索エンジンでページグループを抽出する場合は、正規表現を使用できます。 (page1 | page2 | ... | pageN)に複数のWebサイトを配置できます。
Select column from table
where column rlike '.*(google|yahoo).*'
出力:
/google/gmail/inbox
/google/drive/map
/google/apps
検索エンジンの名前またはランディングページを持つ新しい列を作成することができます。パスの最初の場所はランディングページのようです。この方法でランディングページを拡張できます。
select * from
(Select column
, regexp_extract('^(\\/[a-zA-Z]*\\/)',1) as landing_page
from table) a
where landing page in ('google','yahoo',...,'bing')
;
出力:
column new column
/google/gmail/inbox /google/
/google/drive/map /google/
/google/apps /google/
/yahoo/news/cricket /yahoo/
/yahoo/mail/ /yahoo/
/yahoo/sports /yahoo/
/bing/meats/delisandwich /bing/
/bing/maps/delis /bing/
/ google /が不要で、Googleだけを使用する場合は、次のようにします。
regexp_extract('^\\/([a-zA-Z]*)\\/',1) as landing_page
今、私はランディングページがあなたが説明するパスの最初に来ると仮定しています。
質問は少しあいまいですが、文字列内の単語google
を検索して、文字列内に単語google
を含む行を返そうとしていると思います。
次の表があるとします。
create table test (val string);
また、次のレコードが含まれています。
Hive> select * from test;
/google/gmail/inbox
/google/drive/map
/yahoo/mail/
以下のクエリを使用して、文字列google
を含む行を選択できます。
select val from test
where instr(val, 'google') = 2;
これは結果を与えます:
/google/gmail/inbox
/google/drive/map
instr
は、検索した文字列の位置を示します。この場合、google
の位置は2です。google
を含むすべての行をどこかで取得しようとしている場合は、次を使用できます。
select val from test
where instr(val, 'google') != 0;
documentation からさまざまなHive文字列関数について読むことができます。