🐈
Amazon Athenaで正規表現をサクッと使う
はじめに
背景
AWS Athenaで正規表現を使おうと、下記のクエリを叩いたら、エラーが表示されました。
SELECT * FROM "reviews"."test" where REGEXP("asin", '^B[0-9A-Z]{8}0') limit 10;
また、REGEXP_EXTRACT
を使ったところ,Queries of this type are not supported
のエラーが出現。
なので、Athenaで正規表現を使うにはどうしたらよいか調べます。
実践
そもそも、AmazonAthenaのクエリは、Prestoに基づいているとのこと。
Athena の DML クエリステートメントは、Athena エンジンバージョン 1 では Presto 0.172、Athena エンジンバージョン 2 では Presto 0.217 に基づいています。
エンジンバージョン1,2で依存しているPrestoのバージョンが異なるので、まずは、Athenaエンジンバージョンを調べます。
Athenaエンジンバージョンを調べる
Amazon Athena > ワークグループ
「Athena engine version 2」だったため、Presto 0.217で調べていきます。
正規表現を使う
ドキュメント(https://prestodb.io/docs/0.217/functions/regexp.html)をみていくと、regexp_like
が使えそう。
regexp_like(string, pattern) → boolean
Evaluates the regular expression pattern and determines if it is contained within string.
正規表現を使ってクエリを叩いてみる。
SELECT * FROM "reviews"."test" WHERE regexp_like("asin", '^B[0-9A-Z]{8}0') LIMIT 10;
結果
できた!
参考記事
Discussion