Webサービスのアクセスログデータを集計するとき、URLを扱う場面はよくあります。
WHERE句で特定の条件のURLを絞り込んだり、
SELECT句でパラメーターやパスごとに数えたりする場面はよくありますが、
Prestoにはそのようなときに便利な関数が準備されていいます。
ドキュメント 6.18. URL Functions
具体的には下記の関数群です。
- url_extract_fragment(url)
- url_extract_host(url)
- url_extract_parameter(url, name)
- url_extract_path(url)
- url_extract_port(url)
- url_extract_protocol(url)
- url_extract_query(url)
URLを次の形式とすると、それぞれの関数で url_extract_xxxx の xxxx 部分を文字列として返してくれます。
[protocol:][//host[:port]][path][?query][#fragment]
これを知るまでは LIKE や正規表現を使うことが多く、稀に予期せぬパターンがマッチしてしまったりしていて困っていたのですが、
これらのURL関数群を使うようになってからは、そのようなエラーは起こりにくくなりましたし、
クエリも意図がわかりやすいものになりとても助かっています。