

# Amazon S3 Select の SQL リファレンス
<a name="s3-select-sql-reference"></a>

**重要**  
新規のお客様への Amazon S3 Select の提供は終了しました。Amazon S3 Select をご利用の既存のお客様は、今後も通常どおり使用できます。[詳細情報](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

このリファレンスには、Amazon S3 Select でサポートされる構造化クエリ言語 (SQL) の説明が記載されています。

**Topics**
+ [

# SELECT コマンド
](s3-select-sql-reference-select.md)
+ [

# データ型
](s3-select-sql-reference-data-types.md)
+ [

# オペレータ
](s3-select-sql-reference-operators.md)
+ [

# 予約済みキーワード
](s3-select-sql-reference-keyword-list.md)
+ [

# SQL 関数
](s3-select-sql-reference-sql-functions.md)

# SELECT コマンド
<a name="s3-select-sql-reference-select"></a>

**重要**  
新規のお客様への Amazon S3 Select の提供は終了しました。Amazon S3 Select をご利用の既存のお客様は、今後も通常どおり使用できます。[詳細情報](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 セレクトは、`SELECT` SQL コマンドのみをサポートします。次の ANSI スタンダードの句は、`SELECT` 用にサポートされています。


+ `SELECT` リスト
+ `FROM` 句 
+ `WHERE` 句
+ `LIMIT` 句

**注記**  
Amazon S3 Select クエリは、現在サブクエリや結合はサポートしていません。

## SELECT のリスト
<a name="s3-select-sql-reference-select-list"></a>

`SELECT` リストは、クエリに返させる列、関数、および式を指定します。このリストは、クエリの出力を表しています。

```
SELECT *
SELECT projection1 AS column_alias_1, projection2 AS column_alias_2
```

`*` (アスタリスク) を使用した最初の `SELECT` 形式では、`WHERE` 句を通過したすべての行がそのまま返されます。2 番目の `SELECT` 形式では、列ごとにユーザー定義の出力スカラー式 **`projection1`** および **`projection2`** を含む行が作成されます。

## FROM 句
<a name="s3-select-sql-reference-from"></a>

Amazon S3 Select では、`FROM` 句の以下の形式がサポートされています。

```
FROM table_name
FROM table_name alias
FROM table_name AS alias
```

`FROM` 句の各形式で、`table_name` はクエリの対象となる `S3Object` です。従来のリレーショナルデータベースから移行したユーザーは、これをテーブルに対する複数のビューを含むデータベーススキーマとして考えることができます。

スタンダード SQL に従って、`FROM` 句は `WHERE` 句でフィルタリングされ `SELECT` リストで射影される行を作成します。

Amazon S3 Select に格納されている JSON オブジェクトでは、次の形式の `FROM` 句も使用することができます。

```
FROM S3Object[*].path
FROM S3Object[*].path alias
FROM S3Object[*].path AS alias
```

この形式の `FROM` 句を使用すると、JSON オブジェクト内の配列またはオブジェクトから選択できます。以下のいずれかの形式で `path` を指定できます。
+ 名前 (オブジェクト内): `.name` または `['name']`
+ インデックス (配列内): `[index]`
+ ワイルドカード文字 (オブジェクト内): `.*`
+ ワイルドカード文字 (配列内): `[*]`

**注記**  
この形式の `FROM` 句は JSON オブジェクトに対してのみ機能します。
ワイルドカード文字は常に最低 1 つのレコードを発行します。レコードが一致しない場合、Amazon S3 Select は値 `MISSING` を発行します。出力のシリアル化中 (クエリの実行の完了後)、Amazon S3 Select は `MISSING` 値を空のレコードに置き換えます。
集約関数 (`AVG`、`COUNT`、`MAX`、`MIN`、および `SUM`) は、`MISSING` 値をスキップします。
エイリアスを指定せずにワイルドカード文字を使用する場合は、パスの最後の要素を使用して行を参照できます。例えば、クエリ `SELECT price FROM S3Object[*].books[*].price` を使用して、ブックのリストからすべての価格を選択できます。パスが名前ではなくワイルドカード文字で終わる場合は、値 `_1` を使用して行を参照できます。例えば、`SELECT price FROM S3Object[*].books[*].price` の代わりにクエリ `SELECT _1.price FROM S3Object[*].books[*]` を使用できます。
Amazon S3 Select は常に JSON ドキュメントをルートレベルの値の配列として扱います。したがって、クエリ対象の JSON オブジェクトにルート要素が 1 つしかない場合でも、`FROM` 句は `S3Object[*]` で始める必要があります。ただし、互換性の理由から、パスを含めない場合、Amazon S3 Select ではワイルドカード文字を省略できます。そのため、完全な句 `FROM S3Object` は、`FROM S3Object[*] as S3Object` と同等です。パスを含める場合は、ワイルドカード文字も使用する必要があります。つまり、`FROM S3Object` と `FROM S3Object[*].path` はどちらも有効な句ですが、`FROM S3Object.path` は有効な句ではありません。

**Example**  
**例:**  
*例 1:*  
この例では、以下のデータセットとクエリを使用した場合の結果を示しています。  

```
{ "Rules": [ {"id": "1"}, {"expr": "y > x"}, {"id": "2", "expr": "z = DEBUG"} ]}
{ "created": "June 27", "modified": "July 6" }
```

```
SELECT id FROM S3Object[*].Rules[*].id
```

```
{"id":"1"}
{}
{"id":"2"}
{}
```
Amazon S3 Select は、以下の理由で次の結果を生成します。  
+ `{"id":"id-1"}` — `S3Object[0].Rules[0].id` は一致を生成しました.
+ `{}` — `S3Object[0].Rules[1].id` はレコードと一致しなかったため、Amazon S3 Select が `MISSING` を出力しました。これは、出力のシリアル化中に空のレコードに変更されて返されます。
+ `{"id":"id-2"}` — `S3Object[0].Rules[2].id` は一致を生成しました。
+ `{}` — `S3Object[1]` は `Rules` で一致しなかったため、Amazon S3 Select が `MISSING` を出力しました。これは、出力のシリアル化中に空のレコードに変更されて返されます。
一致が見つからないときに Amazon S3 Select が空のレコードを返さないようにするには、`MISSING` という値をテストします。次のクエリは前のクエリと同じ結果を返しますが、空の値は省略されています。  

```
SELECT id FROM S3Object[*].Rules[*].id WHERE id IS NOT MISSING
```

```
{"id":"1"}
{"id":"2"}
```
*例 2:*  
この例は、以下のデータセットとクエリを使用した場合の結果を示しています。  

```
{ "created": "936864000", "dir_name": "important_docs", "files": [ { "name": "." }, { "name": ".." }, { "name": ".aws" }, { "name": "downloads" } ], "owner": "Amazon S3" }
{ "created": "936864000", "dir_name": "other_docs", "files": [ { "name": "." }, { "name": ".." }, { "name": "my stuff" }, { "name": "backup" } ], "owner": "User" }
```

```
SELECT d.dir_name, d.files FROM S3Object[*] d
```

```
{"dir_name":"important_docs","files":[{"name":"."},{"name":".."},{"name":".aws"},{"name":"downloads"}]}
{"dir_name":"other_docs","files":[{"name":"."},{"name":".."},{"name":"my stuff"},{"name":"backup"}]}
```

```
SELECT _1.dir_name, _1.owner FROM S3Object[*]
```

```
{"dir_name":"important_docs","owner":"Amazon S3"}
{"dir_name":"other_docs","owner":"User"}
```

## WHERE 句
<a name="s3-select-sql-reference-where"></a>

`WHERE` 句は、この構文に従います。

```
WHERE condition
```

`WHERE` 句は `condition` に基づいて行をフィルタリングします。condition は、ブール型の結果を持つ式です。condition の結果が `TRUE` である行のみが結果で返されます。

## LIMIT 句
<a name="s3-select-sql-reference-limit"></a>

`LIMIT` 句は、この構文に従います。

```
LIMIT number
```

`LIMIT` 句により、`number` に基づいてクエリで返されるレコードの数を制限できます。

## 属性アクセス
<a name="s3-select-sql-reference-attribute-access"></a>

`SELECT` 句および `WHERE` 句は、クエリ対象のファイルが CSV 形式であるか JSON 形式にあるかによって、以下のセクションのいずれかのメソッドを使用してレコードデータを参照できます。

### CSV
<a name="s3-select-sql-reference-attribute-access-csv"></a>
+ **列番号** – 行の *N 番目*の列を参照できます。`_N` は列名、*`N`* は列位置です。位置カウントは 1 から始まります。たとえば、最初の列名は `_1` で、2 番目の列名は `_2` です。

  列は `_N` または `alias._N` として参照できます。たとえば、`_2` と `myAlias._2` はどちらも `SELECT` リストおよび `WHERE` 句の列を参照するのに有効な方法です。
+ **列ヘッダー** – ヘッダー行を持つ CSV 形式のオブジェクトの場合、ヘッダーは `SELECT` リストおよび `WHERE` 句で利用できます。特に、従来の SQL では、`SELECT` および `WHERE` 句の式内で、`alias.column_name` または `column_name` で列を参照できます。

### JSON
<a name="s3-select-sql-reference-attribute-access-json"></a>
+ **ドキュメント** – JSON ドキュメントのフィールドは `alias.name` としてアクセスできます。ネストされたフィールド (`alias.name1.name2.name3` など) にもアクセスできます。
+ **リスト** – `[]` 演算子でゼロベースのインデックスを使用して、JSON リストの要素にアクセスできます。例えば、リストの 2 番目の要素に `alias[1]` としてアクセスできます。アクセスするリスト要素とフィールドを組み合わせることができます (例: `alias.name1.name2[1].name3`)。
+ **例:** この JSON オブジェクトをサンプルデータセットとして考えます。

  ```
  {"name": "Susan Smith",
  "org": "engineering",
  "projects":
      [
       {"project_name":"project1", "completed":false},
       {"project_name":"project2", "completed":true}
      ]
  }
  ```

  *例 1:*

  以下のクエリは次の結果を返します。

  ```
  Select s.name from S3Object s
  ```

  ```
  {"name":"Susan Smith"}
  ```

  *例 2*

  以下のクエリは次の結果を返します。

  ```
  Select s.projects[0].project_name from S3Object s
  ```

  ```
  {"project_name":"project1"}
  ```

## ヘッダーおよび属性名の大文字と小文字の区別
<a name="s3-select-sql-reference-case-sensitivity"></a>

Amazon S3 Select では、二重引用符を使用して、列ヘッダー (CSV オブジェクトの場合) および属性 (JSON オブジェクトの場合) の大文字と小文字を区別することを指定できます。二重引用符がない場合、オブジェクトヘッダーおよび属性の大文字と小文字は区別されません。あいまいな場合はエラーがスローされます。

以下の例は、1) 指定された列ヘッダーを持ち、クエリリクエストに対して `FileHeaderInfo` が `"Use"` に設定されている CSV 形式 の Amazon S3 オブジェクト、または 2) 指定された属性を持つ JSON 形式の Amazon S3 オブジェクトのいずれかです。

*例 \$11:* クエリ対象のオブジェクトには `NAME` というヘッダーまたは属性があります。
+ 次の式は、オブジェクトから値を正常に返します。引用符がないため、クエリの大文字と小文字は区別されません。

  ```
  SELECT s.name from S3Object s
  ```
+ 次の式は 400 エラー `MissingHeaderName` を返します。引用符があるため、クエリの大文字と小文字は区別されます。

  ```
  SELECT s."name" from S3Object s
  ```

*例 \$12:* クエリ対象の Amazon S3 オブジェクトには `NAME` という 1 つのヘッダーまたは属性と、`name` という別のヘッダーまたは属性があります。
+ 次の式は 400 エラー `AmbiguousFieldName` を返します。引用符がないため、クエリの大文字と小文字は区別されませんが、2 つの一致があるため、エラーがスローされます。

  ```
  SELECT s.name from S3Object s
  ```
+ 次の式は、オブジェクトから値を正常に返します。引用符があるため、クエリの大文字と小文字が区別されるため、あいまいさはありません。

  ```
  SELECT s."NAME" from S3Object s
  ```

## ユーザー定義の用語としての予約キーワードの使用
<a name="s3-select-sql-reference-using-keywords"></a>

Amazon S3 Select には、オブジェクトのコンテンツのクエリに使用する SQL 式を実行するために必要な予約キーワードのセットがあります。予約キーワードには、関数名、データ型、演算子などが含まれます。場合によっては、列ヘッダー (CSV ファイルの場合) や属性 (JSON オブジェクトの場合) などのユーザー定義の用語が、予約キーワードと競合する可能性があります。その場合は、二重引用符を使用して、予約キーワードと競合するユーザー定義の用語を意図的に使用していることを示す必要があります。そうしないと、400 解析エラーが発生します。

予約キーワードの詳細なリストについては、「[予約済みキーワード](s3-select-sql-reference-keyword-list.md)」を参照してください。

次の例は、1) Amazon S3 オブジェクトが CSV 形式で、指定された列ヘッダーを持ち、クエリリクエストに対して `FileHeaderInfo` が `"Use"` に設定されているか、2) Amazon S3 オブジェクトが JSON 形式で、指定された属性を持っています。

*例:* クエリ対象のオブジェクトに、予約キーワードである `CAST` という名前のヘッダーまたは属性があります。
+ 次の式は、オブジェクトから値を正常に返します。クエリで引用符が使用されているため、S3 Select はユーザー定義のヘッダーまたは属性を使用します。

  ```
  SELECT s."CAST" from S3Object s
  ```
+ 次の式は 400 解析エラーを返します。クエリで引用符が使用されていないため、`CAST` は予約キーワードと競合します。

  ```
  SELECT s.CAST from S3Object s
  ```

## スカラー式
<a name="s3-select-sql-reference-scalar"></a>

`WHERE` 句および `SELECT` リスト内では、スカラー値を返す式である SQL *スカラー式*を持つことができます。それには以下の形式があります。
+ ***`literal`*** 

  SQL リテラル。
+ ***`column_reference`*** 

  形式が `column_name` または `alias.column_name` である列への参照。
+ **`unary_op`** **`expression`** 

  この場合、****`unary_op`**** は SQL 単項演算子です。
+ **`expression`** **`binary_op`** ***`expression`*** 

   この場合、****`binary_op`**** は SQL 二項演算子です。
+ **`func_name`** 

   この場合、**`func_name`** は、呼び出すスカラー関数の名前です。
+ ***`expression`*** `[ NOT ] BETWEEN` ****`expression`**** `AND` ****`expression`****
+ ***`expression`*** `LIKE` ****`expression`**** [ `ESCAPE` ***`expression`*** ]

# データ型
<a name="s3-select-sql-reference-data-types"></a>

**重要**  
新規のお客様への Amazon S3 Select の提供は終了しました。Amazon S3 Select をご利用の既存のお客様は、今後も通常どおり使用できます。[詳細情報](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 Select は、複数のプリミティブデータ型をサポートします。

## データ型変換
<a name="s3-select-sql-reference-data-conversion"></a>

一般的なルールは、`CAST` 関数 (定義されている場合) に従うことです。`CAST` が定義されていない場合、すべての入力データが文字列として扱われます。その場合、必要に応じて入力データを関連するデータ型にキャストする必要があります。

`CAST` 関数の詳細については、「[CAST](s3-select-sql-reference-conversion.md#s3-select-sql-reference-cast)」を参照してください。

## サポートされているデータ型
<a name="s3-select-sql-reference-supported-data-types"></a>

Amazon S3 Select では、プリミティブデータ型の以下のセットがサポートされています。


|  名前  |  説明  |  例  | 
| --- | --- | --- | 
| `bool` | ブール値 (`TRUE` または `FALSE`)。 | `FALSE` | 
| `int`, `integer` | 範囲が -9,223,372,036,854,775,808～9,223,372,036,854,775,807 の 8 バイトの符号付き整数。 | `100000` | 
| `string` | UTF8 でエンコードされた可変長文字列。デフォルトの制限は 1 文字です。最大文字数制限は 2,147,483,647 文字です。 | `'xyz'` | 
| `float` | 8 バイトの浮動小数点数。 | `CAST(0.456 AS FLOAT)` | 
| `decimal`, `numeric` |  10 を底とする数字、最大精度 38 (有効桁の最大数)、かつ -231 から 231-1 までの範囲のスケール (10 を底とするべき指数)。  Amazon S3 Select では、スケールと精度を同時に指定すると、それらは両方とも無視されます。   | `123.456 ` | 
| `timestamp` |  タイムスタンプは特定の時点を表し、常にローカルオフセットを含み、任意の精度が可能です。 テキスト形式では、タイムスタンプは[日時形式に関する W3C の注記](https://www.w3.org/TR/NOTE-datetime)に従いますが、少なくともまる 1 日の精度でなければ、リテラル `T` で終わる必要があります。小数秒は、精度が少なくとも 1 桁また最大は無制限で許可されています。現地時間オフセットは、UTC からの hour:minute オフセットとして、または UTC の現地時刻を示すリテラル `Z` として表すことができます。ローカルタイムオフセットは、時刻のあるタイムスタンプでは必須であり、日付値では許可されていません。  | `CAST('2007-04-05T14:30Z' AS TIMESTAMP)` | 

### サポートされている Parquet 型
<a name="s3-select-sql-reference-supported-data-types-parquet"></a>

Amazon S3 Select では、以下の Parquet 型がサポートされています。
+ `DATE`
+ `DECIMAL`
+ `ENUM`
+ `INT(8)`
+ `INT(16)`
+ `INT(32)`
+ `INT(64)`
+ `LIST`
**注記**  
`LIST` Parquet 型の出力に関しては、Amazon S3 Select がサポートしているのは JSON 形式のみです。ただし、単純な値のデータに制限してクエリする場合は、CSV 形式で `LIST` Parquet 型をクエリすることもできます。
+ `STRING`
+ `TIMESTAMP` のサポートされている精度 (`MILLIS`/`MICROS`/`NANOS`)
**注記**  
`INT(96)` としてのタイムスタンプの保存は、サポートされていません。  
`INT(64)` 型の範囲により、`NANOS` 単位を使用するタイムスタンプのみが、`1677-09-21 00:12:43` から `2262-04-11 23:47:16` までの範囲の値を表すことができます。この範囲外の値は、`NANOS` 単位で表すことはできません。

### Amazon S3 Select でサポートされているデータ型への Parquet 型のマッピング
<a name="s3-select-sql-reference-supported-data-types-parquet-mapping"></a>


| Parquet タイプ | サポートされているデータ型 | 
| --- | --- | 
| `DATE` |  `timestamp`  | 
|  `DECIMAL`  |  `decimal`, `numeric`  | 
|  `ENUM`  |  `string`  | 
|  `INT(8)`  |  `int`, `integer`  | 
|  `INT(16)`  | `int`, `integer` | 
| `INT(32)` | `int`, `integer` | 
|  `INT(64)`  |  `decimal`, `numeric`  | 
|  `LIST`  |  リスト内の各 Parquet 型は、対応するデータ型にマッピングされます。  | 
|  `STRING`  |  `string`  | 
|  `TIMESTAMP`  |  `timestamp`  | 

# オペレータ
<a name="s3-select-sql-reference-operators"></a>

**重要**  
新規のお客様への Amazon S3 Select の提供は終了しました。Amazon S3 Select をご利用の既存のお客様は、今後も通常どおり使用できます。[詳細情報](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 Select は、以下の演算子をサポートしています。

## 論理演算子
<a name="s3-select-sql-reference-loical-ops"></a>
+ `AND`
+ `NOT`
+ `OR`

## 比較演算子
<a name="s3-select-sql-reference-compare-ops"></a>
+ `<` 
+ `>` 
+ `<=`
+ `>=`
+ `=`
+ `<>`
+ `!=`
+ `BETWEEN`
+ `IN` - 例: `IN ('a', 'b', 'c')`

  

## パターンマッチング演算子
<a name="s3-select-sql-reference-pattern"></a>
+ `LIKE`
+ `_` (任意の文字と一致)
+ `%` (任意の一連の文字と一致)

## ユニタリー演算子
<a name="s3-select-sql-reference-unitary-ops"></a>
+ `IS NULL`
+ `IS NOT NULL`

## 算術演算子
<a name="s3-select-sql-referencemath-ops"></a>

以下に示すとおり、加算、減算、乗算、除算、剰余がサポートされています。
+ \$1
+ -
+ \$1
+ /
+ %

## 演算子の優先順位
<a name="s3-select-sql-reference-op-Precedence"></a>

次の表に、演算子の優先順位を高いものから順に示します。


|  演算子または要素  |  結合性 |  必須  | 
| --- | --- | --- | 
| `-`  | 右  | 単項マイナス  | 
| `*`, `/`, `%`  | 側の  | 乗算、除算、剰余  | 
| `+`, `-`  | 側の  | 加算、減算  | 
| `IN` |  | 集合要素関係  | 
| `BETWEEN` |  | 範囲指定  | 
| `LIKE` |  | 文字列パターンマッチング  | 
| `<``>` |  | より小さい、より大きい  | 
| `=` | 右  | 等価、割り当て | 
| `NOT` | 右 | 論理否定  | 
| `AND` | 側の | 論理積  | 
| `OR` | 側の | 論理和  | 

# 予約済みキーワード
<a name="s3-select-sql-reference-keyword-list"></a>

**重要**  
新規のお客様への Amazon S3 Select の提供は終了しました。Amazon S3 Select をご利用の既存のお客様は、今後も通常どおり使用できます。[詳細情報](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 Select の予約キーワードのリストを以下に示します。これらのキーワードには、オブジェクトのコンテンツをクエリするために使用する SQL 式の実行に必要な関数名、データ型、演算子などが含まれます。

```
absolute
action
add
all
allocate
alter
and
any
are
as
asc
assertion
at
authorization
avg
bag
begin
between
bit
bit_length
blob
bool
boolean
both
by
cascade
cascaded
case
cast
catalog
char
char_length
character
character_length
check
clob
close
coalesce
collate
collation
column
commit
connect
connection
constraint
constraints
continue
convert
corresponding
count
create
cross
current
current_date
current_time
current_timestamp
current_user
cursor
date
day
deallocate
dec
decimal
declare
default
deferrable
deferred
delete
desc
describe
descriptor
diagnostics
disconnect
distinct
domain
double
drop
else
end
end-exec
escape
except
exception
exec
execute
exists
external
extract
false
fetch
first
float
for
foreign
found
from
full
get
global
go
goto
grant
group
having
hour
identity
immediate
in
indicator
initially
inner
input
insensitive
insert
int
integer
intersect
interval
into
is
isolation
join
key
language
last
leading
left
level
like
limit
list
local
lower
match
max
min
minute
missing
module
month
names
national
natural
nchar
next
no
not
null
nullif
numeric
octet_length
of
on
only
open
option
or
order
outer
output
overlaps
pad
partial
pivot
position
precision
prepare
preserve
primary
prior
privileges
procedure
public
read
real
references
relative
restrict
revoke
right
rollback
rows
schema
scroll
second
section
select
session
session_user
set
sexp
size
smallint
some
space
sql
sqlcode
sqlerror
sqlstate
string
struct
substring
sum
symbol
system_user
table
temporary
then
time
timestamp
timezone_hour
timezone_minute
to
trailing
transaction
translate
translation
trim
true
tuple
union
unique
unknown
unpivot
update
upper
usage
user
using
value
values
varchar
varying
view
when
whenever
where
with
work
write
year
zone
```

# SQL 関数
<a name="s3-select-sql-reference-sql-functions"></a>

**重要**  
新規のお客様への Amazon S3 Select の提供は終了しました。Amazon S3 Select をご利用の既存のお客様は、今後も通常どおり使用できます。[詳細情報](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 Select は、以下の SQL 関数をサポートしています。

**Topics**
+ [

# 集計関数
](s3-select-sql-reference-aggregate.md)
+ [

# 条件関数
](s3-select-sql-reference-conditional.md)
+ [

# 変換関数
](s3-select-sql-reference-conversion.md)
+ [

# 日付関数
](s3-select-sql-reference-date.md)
+ [

# 文字列関数
](s3-select-sql-reference-string.md)

# 集計関数
<a name="s3-select-sql-reference-aggregate"></a>

**重要**  
新規のお客様への Amazon S3 Select の提供は終了しました。Amazon S3 Select をご利用の既存のお客様は、今後も通常どおり使用できます。[詳細情報](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 Select では、以下の集計関数がサポートされています。


| 関数 | 引数の型 | 戻り型 | 
| --- | --- | --- | 
| `AVG(expression)` | `INT`, `FLOAT`, `DECIMAL` | `INT` 引数の場合は `DECIMAL`、浮動小数点の引数の場合は `FLOAT`。それ以外の場合は、引数のデータ型と同じです。 | 
| `COUNT` |  `-`  | `INT` | 
| `MAX(expression)` | `INT`, `DECIMAL` | 引数の型と同じです。 | 
| `MIN(expression)` | `INT`, `DECIMAL` | 引数の型と同じです。 | 
| `SUM(expression)` | `INT`, `FLOAT`, `DOUBLE`, `DECIMAL` | `INT` 引数の場合は `INT`、浮動小数点の引数の場合は `FLOAT`。それ以外の場合は、引数のデータ型と同じです。 | 

## SUM の例
<a name="s3-select-sql-reference-aggregate-case-examples"></a>

[S3 インベントリレポート](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory.html)内のフォルダの合計オブジェクトサイズを集計するには、`SUM` 式を使用します。

次の S3 インベントリレポートは GZIP で圧縮された CSV ファイルです。3 つの列があります。
+ 最初の列は、S3 インベントリレポートの対象となる S3 バケットの名前 (*`DOC-EXAMPLE-BUCKET`*) です。
+ 2 番目の列は、バケット内のオブジェクトを一意に識別するオブジェクトキー名です。

  最初の行の `example-folder/` 値は、フォルダ `example-folder` 用です。Amazon S3 で、バケットにフォルダを作成すると、S3 は、指定したフォルダ名に設定されたキーを持つ 0 バイトのオブジェクトを作成します。

  2 行目の `example-folder/object1` 値は、`example-folder` フォルダ内のオブジェクト `object1` 用です。

  3 行目の `example-folder/object2` 値は、`example-folder` フォルダ内のオブジェクト `object2` 用です。

  S3 フォルダの詳細については、「[フォルダを使用して Amazon S3 コンソールのオブジェクトを整理する](using-folders.md)」を参照してください。
+ 3 番目の列は、バイト単位のオブジェクトサイズです。

```
"DOC-EXAMPLE-BUCKET","example-folder/","0"
"DOC-EXAMPLE-BUCKET","example-folder/object1","2011267"
"DOC-EXAMPLE-BUCKET","example-folder/object2","1570024"
```

`SUM` 式を使用してフォルダ `example-folder` の合計サイズを計算するには、Amazon S3 Select で SQL クエリを実行します。

```
SELECT SUM(CAST(_3 as INT)) FROM s3object s WHERE _2 LIKE 'example-folder/%' AND _2 != 'example-folder/';
```

クエリ結果: 

```
3581291
```

# 条件関数
<a name="s3-select-sql-reference-conditional"></a>

**重要**  
新規のお客様への Amazon S3 Select の提供は終了しました。Amazon S3 Select をご利用の既存のお客様は、今後も通常どおり使用できます。[詳細情報](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 Select は、以下の条件関数をサポートしています。

**Topics**
+ [

## CASE
](#s3-select-sql-reference-case)
+ [

## COALESCE
](#s3-select-sql-reference-coalesce)
+ [

## NULLIF
](#s3-select-sql-reference-nullif)

## CASE
<a name="s3-select-sql-reference-case"></a>

`CASE` 式は条件関数であり、他の言語で使われている `if/then/else` ステートメントと似ています。`CASE` は、複数の条件がある場合に、結果を指定するために使用します。`CASE` 式には、簡易と検索の 2 種類があります。

簡易 `CASE` 式では、式は値と比較されます。一致が検出された場合、`THEN` 句で指定されたアクションが適用されます。一致が検出されない場合、`ELSE` 句のアクションが適用されます。

検索 `CASE` 式では、各 `CASE` がブール式に基づいて評価され、`CASE` ステートメントが最初の一致する `CASE` を返します。一致する `CASE` が `WHEN` 句で検出されない場合、`ELSE` 句のアクションが返されます。

### 構文
<a name="s3-select-sql-reference-case-syntax"></a>

**注記**  
現時点で、Amazon S3 Select は `ORDER BY` または新しい行を含むクエリサポートしていません。必ず、改行のないクエリを使用してください。

条件の一致に使用する簡易 `CASE` ステートメントを以下に示します。

```
CASE expression WHEN value THEN result [WHEN...] [ELSE result] END					
```

各条件の評価に使用する検索 `CASE` ステートメントを以下に示します。

```
CASE WHEN boolean condition THEN result [WHEN ...] [ELSE result] END					
```

### 例
<a name="s3-select-sql-reference-case-examples"></a>

**注記**  
Amazon S3 コンソールを使用して以下の例を実行し、CSV ファイルにヘッダー行が含まれている場合は、**[CSV データの最初の行を除外する]** を選択します。

**例 1:** 簡易 `CASE` 式を使用して、クエリの `New York City` を `Big Apple` に置き換えます。その他すべての都市名を `other` に置換します。

```
SELECT venuecity, CASE venuecity WHEN 'New York City' THEN 'Big Apple' ELSE 'other' END FROM S3Object;
```

クエリ結果: 

```
venuecity        |   case
-----------------+-----------
Los Angeles      | other
New York City    | Big Apple
San Francisco    | other
Baltimore        | other
...
```

**例 2:** 検索 `CASE` 式を使用し、それぞれのチケット販売の `pricepaid` 値に基づいてグループ番号を割り当てます。

```
SELECT pricepaid, CASE WHEN CAST(pricepaid as FLOAT) < 10000 THEN 'group 1' WHEN CAST(pricepaid as FLOAT) > 10000 THEN 'group 2' ELSE 'group 3' END FROM S3Object;					
```

クエリ結果: 

```
pricepaid |  case
-----------+---------
12624.00 | group 2
10000.00 | group 3
10000.00 | group 3
9996.00 | group 1
9988.00 | group 1
...
```

## COALESCE
<a name="s3-select-sql-reference-coalesce"></a>

`COALESCE` は、引数を順に評価し、最初の不明でない値 (最初の非 Null 値または欠落していない値) を返します。この関数は、Null および欠落している値を伝達しません。

### 構文
<a name="s3-select-sql-reference-coalesce-syntax"></a>

```
COALESCE ( expression, expression, ... )
```

### パラメータ
<a name="s3-select-sql-reference-coalesce-parameters"></a>

 *`expression`*   
関数の対象となる式。

### 例
<a name="s3-select-sql-reference-coalesce-examples"></a>

```
COALESCE(1)                -- 1
COALESCE(null)             -- null
COALESCE(null, null)       -- null
COALESCE(missing)          -- null
COALESCE(missing, missing) -- null
COALESCE(1, null)          -- 1
COALESCE(null, null, 1)    -- 1
COALESCE(null, 'string')   -- 'string'
COALESCE(missing, 1)       -- 1
```

## NULLIF
<a name="s3-select-sql-reference-nullif"></a>

2 つの式があり、2 つの式が同じ値に評価される場合、`NULLIF` は `NULL` を返し、それ以外の場合、`NULLIF` は最初の式を評価した結果を返します。

### 構文
<a name="s3-select-sql-reference-nullif-syntax"></a>

```
NULLIF ( expression1, expression2 )
```

### パラメータ
<a name="s3-select-sql-reference-nullif-parameters"></a>

 `expression1, expression2`   
関数の対象となる式。

### 例
<a name="s3-select-sql-reference-nullif-examples"></a>

```
NULLIF(1, 1)             -- null
NULLIF(1, 2)             -- 1
NULLIF(1.0, 1)           -- null
NULLIF(1, '1')           -- 1
NULLIF([1], [1])         -- null
NULLIF(1, NULL)          -- 1
NULLIF(NULL, 1)          -- null
NULLIF(null, null)       -- null
NULLIF(missing, null)    -- null
NULLIF(missing, missing) -- null
```

# 変換関数
<a name="s3-select-sql-reference-conversion"></a>

**重要**  
新規のお客様への Amazon S3 Select の提供は終了しました。Amazon S3 Select をご利用の既存のお客様は、今後も通常どおり使用できます。[詳細情報](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 Select は、次の変換関数をサポートしています。

**Topics**
+ [

## CAST
](#s3-select-sql-reference-cast)

## CAST
<a name="s3-select-sql-reference-cast"></a>

`CAST` 関数は、エンティティ (1 つの値を返す式など) を 1 つの型から別の型へと変換します。

### 構文
<a name="s3-select-sql-reference-cast-syntax"></a>

```
CAST ( expression AS data_type )
```

### パラメータ
<a name="s3-select-sql-reference-cast-parameters"></a>

 *`expression`*   
1 つまたは複数の値、演算子、および値を返す SQL 関数の組み合わせです。

 *`data_type`*   
`INT` のような、式のキャスト先となる対象データ型です。サポートされているデータ型のリストについては、「[データ型](s3-select-sql-reference-data-types.md)」を参照してください。

### 例
<a name="s3-select-sql-reference-cast-examples"></a>

```
CAST('2007-04-05T14:30Z' AS TIMESTAMP)
CAST(0.456 AS FLOAT)
```

# 日付関数
<a name="s3-select-sql-reference-date"></a>

**重要**  
新規のお客様への Amazon S3 Select の提供は終了しました。Amazon S3 Select をご利用の既存のお客様は、今後も通常どおり使用できます。[詳細情報](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 Select では、以下の日付関数がサポートされています。

**Topics**
+ [

## DATE\$1ADD
](#s3-select-sql-reference-date-add)
+ [

## DATE\$1DIFF
](#s3-select-sql-reference-date-diff)
+ [

## EXTRACT
](#s3-select-sql-reference-extract)
+ [

## TO\$1STRING
](#s3-select-sql-reference-to-string)
+ [

## TO\$1TIMESTAMP
](#s3-select-sql-reference-to-timestamp)
+ [

## UTCNOW
](#s3-select-sql-reference-utcnow)

## DATE\$1ADD
<a name="s3-select-sql-reference-date-add"></a>

日付部分、数量、タイムスタンプを指定すると、`DATE_ADD` は日付部分を数量に応じて変更し、更新されたタイムスタンプを返します。

### 構文
<a name="s3-select-sql-reference-date-add-syntax"></a>

```
DATE_ADD( date_part, quantity, timestamp )
```

### パラメータ
<a name="s3-select-sql-reference-date-add-parameters"></a>

*`date_part`*   
変更する日付の部分を指定します。これには、次のいずれかを指定できます。  
+ 年
+ か月
+ 日
+ 時間
+ 分
+ 秒

 *`quantity`*   
更新されたタイムスタンプ値に適用する値。`quantity` が正の値である場合は、タイムスタンプの date\$1part に加算し、負の値の場合は減算します。

 *`timestamp`*   
関数の対象となるタイムスタンプ。

### 例
<a name="s3-select-sql-reference-date-add-examples"></a>

```
DATE_ADD(year, 5, `2010-01-01T`)                -- 2015-01-01 (equivalent to 2015-01-01T)
DATE_ADD(month, 1, `2010T`)                     -- 2010-02T (result will add precision as necessary)
DATE_ADD(month, 13, `2010T`)                    -- 2011-02T
DATE_ADD(day, -1, `2017-01-10T`)                -- 2017-01-09 (equivalent to 2017-01-09T)
DATE_ADD(hour, 1, `2017T`)                      -- 2017-01-01T01:00-00:00
DATE_ADD(hour, 1, `2017-01-02T03:04Z`)          -- 2017-01-02T04:04Z
DATE_ADD(minute, 1, `2017-01-02T03:04:05.006Z`) -- 2017-01-02T03:05:05.006Z
DATE_ADD(second, 1, `2017-01-02T03:04:05.006Z`) -- 2017-01-02T03:04:06.006Z
```

## DATE\$1DIFF
<a name="s3-select-sql-reference-date-diff"></a>

日付部分と 2 つの有効なタイムスタンプを指定すると、`DATE_DIFF` は日付部分の差を返します。戻り値は、`date_part` の値 `timestamp1` が `date_part` の値 `timestamp2` より大きい場合に負の整数となります。戻り値は、`date_part` の値 `timestamp1` が `date_part` の値 `timestamp2` より少ない場合に正の整数となります。

### 構文
<a name="s3-select-sql-reference-date-diff-syntax"></a>

```
DATE_DIFF( date_part, timestamp1, timestamp2 )
```

### パラメータ
<a name="s3-select-sql-reference-date-diff-parameters"></a>

 **`date_part`**   
比較するタイムスタンプの部分を指定します。`date_part` の定義については、「[DATE\$1ADD](#s3-select-sql-reference-date-add)」を参照してください。

 **`timestamp1`**   
比較する最初のタイムスタンプ。

 **`timestamp2`**   
比較する 2 番目のタイムスタンプ。

### 例
<a name="s3-select-sql-reference-date-diff-examples"></a>

```
DATE_DIFF(year, `2010-01-01T`, `2011-01-01T`)            -- 1
DATE_DIFF(year, `2010T`, `2010-05T`)                     -- 4 (2010T is equivalent to 2010-01-01T00:00:00.000Z)
DATE_DIFF(month, `2010T`, `2011T`)                       -- 12
DATE_DIFF(month, `2011T`, `2010T`)                       -- -12
DATE_DIFF(day, `2010-01-01T23:00`, `2010-01-02T01:00`) -- 0 (need to be at least 24h apart to be 1 day apart)
```

## EXTRACT
<a name="s3-select-sql-reference-extract"></a>

日付部分とタイムスタンプを指定すると、`EXTRACT` はタイムスタンプの日付部分の値を返します。

### 構文
<a name="s3-select-sql-reference-extract-syntax"></a>

```
EXTRACT( date_part FROM timestamp )
```

### パラメータ
<a name="s3-select-sql-reference-extract-parameters"></a>

 **`date_part`**   
抽出するタイムスタンプの部分を指定します。これには、次のいずれかを指定できます。  
+ `YEAR`
+ `MONTH`
+ `DAY`
+ `HOUR`
+ `MINUTE`
+ `SECOND`
+ `TIMEZONE_HOUR`
+ `TIMEZONE_MINUTE`

 **`timestamp`**   
関数の対象となるタイムスタンプ。

### 例
<a name="s3-select-sql-reference-extract-examples"></a>

```
EXTRACT(YEAR FROM `2010-01-01T`)                           -- 2010
EXTRACT(MONTH FROM `2010T`)                                -- 1 (equivalent to 2010-01-01T00:00:00.000Z)
EXTRACT(MONTH FROM `2010-10T`)                             -- 10
EXTRACT(HOUR FROM `2017-01-02T03:04:05+07:08`)             -- 3
EXTRACT(MINUTE FROM `2017-01-02T03:04:05+07:08`)           -- 4
EXTRACT(TIMEZONE_HOUR FROM `2017-01-02T03:04:05+07:08`)    -- 7
EXTRACT(TIMEZONE_MINUTE FROM `2017-01-02T03:04:05+07:08`)  -- 8
```

## TO\$1STRING
<a name="s3-select-sql-reference-to-string"></a>

タイムスタンプと形式パターンを指定すると、`TO_STRING` は、指定された形式でタイムスタンプの文字列表現を返します。

### 構文
<a name="s3-select-sql-reference-size-syntax"></a>

```
TO_STRING ( timestamp time_format_pattern )
```

### パラメータ
<a name="s3-select-sql-reference-size-parameters"></a>

 *`timestamp`*   
関数の対象となるタイムスタンプ。

 *`time_format_pattern`*   
次の特殊文字の解釈を持つ文字列。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/s3-select-sql-reference-date.html)

### 例
<a name="s3-select-sql-reference-size-examples"></a>

```
TO_STRING(`1969-07-20T20:18Z`,  'MMMM d, y')                    -- "July 20, 1969"
TO_STRING(`1969-07-20T20:18Z`, 'MMM d, yyyy')                   -- "Jul 20, 1969"
TO_STRING(`1969-07-20T20:18Z`, 'M-d-yy')                        -- "7-20-69"
TO_STRING(`1969-07-20T20:18Z`, 'MM-d-y')                        -- "07-20-1969"
TO_STRING(`1969-07-20T20:18Z`, 'MMMM d, y h:m a')               -- "July 20, 1969 8:18 PM"
TO_STRING(`1969-07-20T20:18Z`, 'y-MM-dd''T''H:m:ssX')           -- "1969-07-20T20:18:00Z"
TO_STRING(`1969-07-20T20:18+08:00Z`, 'y-MM-dd''T''H:m:ssX')     -- "1969-07-20T20:18:00Z"
TO_STRING(`1969-07-20T20:18+08:00`, 'y-MM-dd''T''H:m:ssXXXX')   -- "1969-07-20T20:18:00+0800"
TO_STRING(`1969-07-20T20:18+08:00`, 'y-MM-dd''T''H:m:ssXXXXX')  -- "1969-07-20T20:18:00+08:00"
```

## TO\$1TIMESTAMP
<a name="s3-select-sql-reference-to-timestamp"></a>

文字列を指定すると、`TO_TIMESTAMP` は、それをタイムスタンプに変換します。`TO_TIMESTAMP` は `TO_STRING` の逆演算です。

### 構文
<a name="s3-select-sql-reference-to-timestamp-syntax"></a>

```
TO_TIMESTAMP ( string )
```

### パラメータ
<a name="s3-select-sql-reference-to-timestamp-parameters"></a>

 *`string`*   
関数の対象となる文字列。

### 例
<a name="s3-select-sql-reference-to-timestamp-examples"></a>

```
TO_TIMESTAMP('2007T')                         -- `2007T`
TO_TIMESTAMP('2007-02-23T12:14:33.079-08:00') -- `2007-02-23T12:14:33.079-08:00`
```

## UTCNOW
<a name="s3-select-sql-reference-utcnow"></a>

`UTCNOW` は、現在の時刻をタイムスタンプとして UTC で返します。

### 構文
<a name="s3-select-sql-reference-utcnow-syntax"></a>

```
UTCNOW()
```

### パラメータ
<a name="s3-select-sql-reference-utcnow-parameters"></a>

`UTCNOW` はパラメータを受け取りません。

### 例
<a name="s3-select-sql-reference-utcnow-examples"></a>

```
UTCNOW() -- 2017-10-13T16:02:11.123Z
```

# 文字列関数
<a name="s3-select-sql-reference-string"></a>

**重要**  
新規のお客様への Amazon S3 Select の提供は終了しました。Amazon S3 Select をご利用の既存のお客様は、今後も通常どおり使用できます。[詳細情報](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 Select では、以下の文字列関数がサポートされています。

**Topics**
+ [

## CHAR\$1LENGTH, CHARACTER\$1LENGTH
](#s3-select-sql-reference-char-length)
+ [

## LOWER
](#s3-select-sql-reference-lower)
+ [

## SUBSTRING
](#s3-select-sql-reference-substring)
+ [

## TRIM
](#s3-select-sql-reference-trim)
+ [

## UPPER
](#s3-select-sql-reference-upper)

## CHAR\$1LENGTH, CHARACTER\$1LENGTH
<a name="s3-select-sql-reference-char-length"></a>

`CHAR_LENGTH` (または `CHARACTER_LENGTH`) は、指定された文字列の文字数をカウントします。

**注記**  
`CHAR_LENGTH` と `CHARACTER_LENGTH` はシノニムです。

### 構文
<a name="s3-select-sql-reference-char-length-syntax"></a>

```
CHAR_LENGTH ( string )
```

### パラメータ
<a name="s3-select-sql-reference-char-length-parameters"></a>

 *`string`*   
関数の対象となる文字列。

### 例
<a name="s3-select-sql-reference-char-length-examples"></a>

```
CHAR_LENGTH('')          -- 0
CHAR_LENGTH('abcdefg')   -- 7
```

## LOWER
<a name="s3-select-sql-reference-lower"></a>

文字列を指定すると、`LOWER` はすべての大文字を小文字に変換します。大文字以外の文字は変更されません。

### 構文
<a name="s3-select-sql-reference-lower-syntax"></a>

```
LOWER ( string )
```

### パラメータ
<a name="s3-select-sql-reference-lower-parameters"></a>

 **`string`**   
関数の対象となる文字列。

### 例
<a name="s3-select-sql-reference-lower-examples"></a>

```
LOWER('AbCdEfG!@#$') -- 'abcdefg!@#$'
```

## SUBSTRING
<a name="s3-select-sql-reference-substring"></a>

文字列、起動インデックス、長さ (オプション) を指定すると、`SUBSTRING` は開始インデックスから文字列の末尾、または指定された長さまでの部分文字列を返します。

**注記**  
入力文字列の先頭文字は、インデックス位置が 1 になります。  
 `start` が 1 未満で、長さを指定しない場合、インデックス位置は 1 に設定されます。
 `start` が 1 未満で、長さを指定した場合、インデックス位置は `start + length -1` に設定されます。
 `start + length -1` が 0 未満の場合は、空の文字列が返されます。
 `start + length -1` が 0 以上の場合は、インデックス位置 1 から始まる長さ `start + length - 1` の部分文字列が返されます。

### 構文
<a name="s3-select-sql-reference-substring-syntax"></a>

```
SUBSTRING( string FROM start [ FOR length ] )
```

### パラメータ
<a name="s3-select-sql-reference-substring-parameters"></a>

 **`string`**   
関数の対象となる文字列。

 **`start`**   
文字列の開始位置。

 **`length`**   
返す部分文字列の長さ。存在しない場合は、文字列の末尾に進みます。

### 例
<a name="s3-select-sql-reference-substring-examples"></a>

```
SUBSTRING("123456789", 0)      -- "123456789"
SUBSTRING("123456789", 1)      -- "123456789"
SUBSTRING("123456789", 2)      -- "23456789"
SUBSTRING("123456789", -4)     -- "123456789"
SUBSTRING("123456789", 0, 999) -- "123456789" 
SUBSTRING("123456789", 1, 5)   -- "12345"
```

## TRIM
<a name="s3-select-sql-reference-trim"></a>

文字列の先頭または末尾の文字を切り捨てます。削除するデフォルトの文字はスペース (`' '`) です。

### 構文
<a name="s3-select-sql-reference-trim-syntax"></a>

```
TRIM ( [[LEADING | TRAILING | BOTH remove_chars] FROM] string )
```

### パラメータ
<a name="s3-select-sql-reference-trim-parameters"></a>

 **`string`**   
関数の対象となる文字列。

 `LEADING` \$1 `TRAILING` \$1 `BOTH`   
このパラメータは、先頭または末尾の文字、またはその両方を切り捨てるかどうかを指定します。

 **`remove_chars`**   
削除する文字のセット。`remove_chars` は、長さが 1 より大きい文字列とすることができます。この関数は、削除された文字列の先頭または末尾で見つかった `remove_chars` から、任意の文字を含む文字列を返します。

### 例
<a name="s3-select-sql-reference-trim-examples"></a>

```
TRIM('       foobar         ')               -- 'foobar'
TRIM('      \tfoobar\t         ')            -- '\tfoobar\t'
TRIM(LEADING FROM '       foobar         ')  -- 'foobar         '
TRIM(TRAILING FROM '       foobar         ') -- '       foobar'
TRIM(BOTH FROM '       foobar         ')     -- 'foobar'
TRIM(BOTH '12' FROM '1112211foobar22211122') -- 'foobar'
```

## UPPER
<a name="s3-select-sql-reference-upper"></a>

文字列を指定すると、`UPPER` はすべての小文字を大文字に変換します。小文字以外の文字は変更されません。

### 構文
<a name="s3-select-sql-reference-upper-syntax"></a>

```
UPPER ( string )
```

### パラメータ
<a name="s3-select-sql-reference-upper-parameters"></a>

 **`string`**   
関数の対象となる文字列。

### 例
<a name="s3-select-sql-reference-upper-examples"></a>

```
UPPER('AbCdEfG!@#$') -- 'ABCDEFG!@#$'
```