

# Regex SerDe
<a name="regex-serde"></a>

Regex SerDe では、正規表現 (REGEX) を使用し、正規表現グループをテーブルの列に抽出してデータを逆シリアル化します。

データ内の行が正規表現と一致しない場合、その行内のすべての列が `NULL` として返されます。行が正規表現と一致するが、予想よりもグループが少ない場合、欠落しているグループは `NULL` です。データ内の行が正規表現と一致するが、正規表現内のグループよりも多くの列がある場合、追加の列は無視されます。

詳細については、Apache Hive ドキュメントの「[Class RegexSerDe](https://svn.apache.org/repos/infra/websites/production/hive/content/javadocs/r1.2.2/api/org/apache/hadoop/hive/serde2/RegexSerDe.html)」を参照してください。

## シリアル化ライブラリ名
<a name="regex-serde-library-name"></a>

Regex SerDe のシリアル化ライブラリ名は `org.apache.hadoop.hive.serde2.RegexSerDe` です。ソースコードについては、Apache ドキュメントの「[Class RegexSerDe](https://svn.apache.org/repos/infra/websites/production/hive/content/javadocs/r1.2.2/api/org/apache/hadoop/hive/serde2/RegexSerDe.html)」を参照してください。

## 例
<a name="regex-serde-examples"></a>

以下の例は、RegExSerDe を使用して CloudFront ログからテーブルを作成します。`s3://athena-examples-{{myregion}}/cloudfront/plaintext/` の {{myregion}} を、Athena が実行されるリージョンの識別子 (`s3://athena-examples-us-west-1/cloudfront/plaintext/` など) に置き換えます。

```
CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (
  `Date` DATE,
  Time STRING,
  Location STRING,
  Bytes INT,
  RequestIP STRING,
  Method STRING,
  Host STRING,
  Uri STRING,
  Status INT,
  Referrer STRING,
  os STRING,
  Browser STRING,
  BrowserVersion STRING
 ) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
 WITH SERDEPROPERTIES (
 "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$"
 ) 
LOCATION 's3://athena-examples-{{myregion}}/cloudfront/plaintext/';
```