PrestoURL関数の紹介
PrestoのURL関数についてご紹介します。

PrestoのURL抽出関数について
Prestoではリクエストログ解析、URLのデータ整形のため、URL関数なるものが用意されております。利用シーンとしてはロードバランサーログをそのままつっこみ解析するなどです。
AWSではAthenaがPrestoベースだったりするため、ALBやELBログをS3上に貯めるなどでアクセスログの確認を容易にしてくれます。
URL関数の概念ですが、下記の例のようにいままで正規表現を書いて分解していたことが関数を使うことで簡単に取得ができます。
【日本語】
[プロトコル:] [// host [:ポート]] [パス] [?クエリ] [#フラグメント]
【英語】
[protocol:][//host[:port]][path][?query][#fragment]
参照元:https://prestodb.io/docs/0.172/functions/url.html
URL関数一覧
凡例
下記一覧で利用している変数などをここに記載します。
変数一覧
- url ・・・ urlが格納されているカラム(アクセスログなど)
- param ・・・ パラメータ名(http://~…. ?xxx=の’xxx’の部分)
- value ・・・ 対象文字列
関数一覧
No | 関数 | 説明 |
1 | url_extract_parameter(url, param) | リクエストから特定パラメータの値を抽出することができる関数。 パラメータが複数あっても 第2引数で指定できる。 |
2 | url_extract_query(url) | リクエストから全パラメータの値を 抽出することができる関数。 |
3 | url_extract_protocol(url) | リクエストのプロトコルを 抽出することができる関数。 例)https, ftpなど |
4 | url_extract_path(url) | リクエストのディレクトリパスを 抽出することができる関数。 ファネル分析などでどのページに訪れているか分析するとかに使ったりする |
5 | url_extract_fragment(url) | リクエストからフラグメントのみを 抽出することができる関数 |
6 | url_extract_host(url) | リクエストからドメインを 抽出することができる関数 |
7 | url_extract_port(url) | リクエストからアクセスポートを 抽出することができる関数 |
8 | url_encode(value) | デコードされた文字列を エンコードするための関数 |
9 | url_decode(value) | エンコードされた文字列を デコードするための関数 |
備考
url関数はとても便利で重宝できよく利用してます。今まで頑張って正規表現を書いていたところを簡単に取得できるので是非つかってみてください。
参照元
https://prestodb.io/docs/0.172/functions/url.html