

Amazon Timestream for LiveAnalytics に類似した機能をご希望の場合は Amazon Timestream for InfluxDB をご検討ください。リアルタイム分析に適した、シンプルなデータインジェストと 1 桁ミリ秒のクエリ応答時間を特徴としています。詳細については、[こちら](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SQL のサポート
<a name="supported-sql-constructs"></a>

Timestream for LiveAnalytics では、一般的な SQL コンストラクトをいくつかサポートしています。詳細については、以下を参照してください。

**Topics**
+ [

# SELECT
](supported-sql-constructs.SELECT.md)
+ [

# サブクエリのサポート
](supported-sql-constructs.subquery-support.md)
+ [

# SHOW ステートメント
](supported-sql-constructs.SHOW.md)
+ [

# DESCRIBE ステートメント
](supported-sql-constructs.DESCRIBE.md)
+ [

# UNLOAD
](supported-sql-constructs.UNLOAD.md)

# SELECT
<a name="supported-sql-constructs.SELECT"></a>

**SELECT** ステートメントを使用して、1 つ以上のテーブルからデータを取得します。Timestream のクエリ言語は、**SELECT** ステートメントの次の構文をサポートしています。

```
[ WITH with_query [, ...] ]
            SELECT [ ALL | DISTINCT ] select_expr [, ...]
            [ function (expression) OVER (
            [ PARTITION BY partition_expr_list ]
            [ ORDER BY order_list ]
            [ frame_clause ] )
            [ FROM from_item [, ...] ]
            [ WHERE condition ]
            [ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
            [ HAVING condition]
            [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
            [ ORDER BY order_list ]
            [ LIMIT [ count | ALL ] ]
```

各一般項の意味は次のとおりです。
+ `function (expression)` は、サポートされている[ウィンドウ関数](window-functions.md)の 1 つです。
+ `partition_expr_list` は以下のとおりです。

  ```
  expression | column_name [, expr_list ]
  ```
+ `order_list` は以下のとおりです。

  ```
  expression | column_name [ ASC | DESC ] 
  [ NULLS FIRST | NULLS LAST ]
  [, order_list ]
  ```
+ `frame_clause` は以下のとおりです。

  ```
  ROWS | RANGE
  { UNBOUNDED PRECEDING | expression PRECEDING | CURRENT ROW } |
  {BETWEEN
  { UNBOUNDED PRECEDING | expression { PRECEDING | FOLLOWING } |
  CURRENT ROW}
  AND
  { UNBOUNDED FOLLOWING | expression { PRECEDING | FOLLOWING } |
  CURRENT ROW }}
  ```
+ `from_item` は次のいずれかです。

  ```
  table_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
  from_item join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]
  ```
+ `join_type` は次のいずれかです。

  ```
  [ INNER ] JOIN
  LEFT [ OUTER ] JOIN
  RIGHT [ OUTER ] JOIN
  FULL [ OUTER ] JOIN
  ```
+ `grouping_element` は次のいずれかです。

  ```
  ()
  expression
  ```

# サブクエリのサポート
<a name="supported-sql-constructs.subquery-support"></a>

 Timestream は、`EXISTS` および `IN` 述語のサブクエリをサポートしています。`EXISTS` 述語は、サブクエリが行を返すかどうかを決定します。`IN` 述語は、サブクエリによって生成された値が IN 句の値または式と一致するかどうかを決定します。Timestream クエリ言語は、相関サブクエリやその他のサブクエリをサポートしています。

```
SELECT t.c1
FROM (VALUES 1, 2, 3, 4, 5) AS t(c1)
WHERE EXISTS
(SELECT t.c2
 FROM (VALUES 1, 2, 3) AS t(c2)
 WHERE t.c1= t.c2
)
ORDER BY t.c1
```


| c1 | 
| --- | 
|  1  | 
|  2  | 
|  3  | 

```
SELECT t.c1
FROM (VALUES 1, 2, 3, 4, 5) AS t(c1)
WHERE t.c1 IN
(SELECT t.c2
 FROM (VALUES 2, 3, 4) AS t(c2)
)
ORDER BY t.c1
```


| c1 | 
| --- | 
|  2  | 
|  3  | 
|  4  | 

# SHOW ステートメント
<a name="supported-sql-constructs.SHOW"></a>

`SHOW DATABASES` ステートメントを使用して、アカウント内のすべてのデータベースを表示できます。構文は次のとおりです。

```
SHOW DATABASES [LIKE pattern]
```

ここで、`LIKE` 句を使用してデータベース名をフィルタリングできます。

`SHOW TABLES` ステートメントを使用して、アカウント内のすべてのテーブルを表示できます。構文は次のとおりです。

```
SHOW TABLES [FROM database] [LIKE pattern]
```

ここで、`FROM` 句を使用してデータベース名をフィルタリングし、`LIKE` 句を使用してテーブル名をフィルタリングできます。

`SHOW MEASURES` ステートメントを使用して、テーブルのすべてのメジャーを表示できます。構文は次のとおりです。

```
SHOW MEASURES FROM database.table [LIKE pattern]
```

ここで、`FROM` 句を使用してデータベースとテーブル名を指定し、`LIKE` 句を使用してメジャー名をフィルタリングできます。

# DESCRIBE ステートメント
<a name="supported-sql-constructs.DESCRIBE"></a>

`DESCRIBE` ステートメントを使用して、テーブルのメタデータを表示できます。構文は次のとおりです。

```
DESCRIBE database.table
```

ここで、`table` にはテーブル名が含まれます。describe ステートメントは、テーブルの列名とデータ型を返します。

# UNLOAD
<a name="supported-sql-constructs.UNLOAD"></a>

Timestream for LiveAnalytics は、SQL サポートの拡張機能として `UNLOAD` コマンドをサポートしています。`UNLOAD` でサポートされているデータ型については、「[サポートされているデータ型](supported-data-types.md)」を参照してください。`time` および `unknown` 型は `UNLOAD` には適用されません。

```
UNLOAD (SELECT statement)
 TO 's3://bucket-name/folder'
 WITH ( option = expression [, ...] )
```

ここで、オプションは次のとおりです。

```
{ partitioned_by = ARRAY[ col_name[,…] ] 
 | format = [ '{ CSV | PARQUET }' ] 
 | compression = [ '{ GZIP | NONE }' ]
 | encryption = [ '{ SSE_KMS | SSE_S3 }' ]
 | kms_key = '<string>'
 | field_delimiter ='<character>'
 | escaped_by = '<character>'
 | include_header = ['{true, false}']
 | max_file_size = '<value>'
}
```

SELECT ステートメント  
LiveAnalytics テーブルの 1 つ以上の Timestream からデータを選択および取得するために使用されるクエリステートメント。  

```
(SELECT column 1, column 2, column 3 from database.table
      where measure_name = "ABC" and timestamp between ago (1d) and now() )
```

TO 句  

```
TO 's3://bucket-name/folder'
```
または  

```
TO 's3://access-point-alias/folder'
```
`UNLOAD` ステートメントの `TO` 句は、クエリ結果の出力先を指定します。Timestream for LiveAnalytics が出力ファイルオブジェクトを書き込む Amazon S3 上のフォルダの場所を含め、Amazon S3 バケット名または Amazon S3 アクセスポイントエイリアスを含むフルパスを指定する必要があります。S3 バケットは、同じアカウントと同じリージョンで所有されている必要があります。Timestream for LiveAnalytics はクエリ結果セットに加えてマニフェストファイルとメタデータファイルを指定された宛先フォルダに書き込みます。

PARTITIONED\$1BY 句  

```
partitioned_by = ARRAY [col_name[,…] , (default: none)
```
`partitioned_by` 句は、データを詳細なレベルでグループ化して分析するためのクエリで使用されます。クエリ結果を S3 バケットにエクスポートする場合、選択クエリの 1 つ以上の列に基づいてデータをパーティショニングすることを選択できます。データをパーティショニングする場合、エクスポートされたデータはパーティション列に基づいてサブセットに分割され、各サブセットは個別のフォルダに保存されます。エクスポートされたデータを含む結果フォルダ内に、サブフォルダ `folder/results/partition column = partition value/` が自動的に作成されます。ただし、パーティショニングされた列は出力ファイルに含まれないことに注意してください。  
`partitioned_by` は構文の必須句ではありません。パーティショニングなしでデータをエクスポートする場合は、構文で句を除外できます。  

**Example**  
ウェブサイトのクリックストリームデータをモニタリングしていて、`direct`、`Social Media`、`Organic Search`、`Other`、`Referral` の 5 つのトラフィックチャネルがあるとします。データをエクスポートするときは、列 `Channel` を使用してデータをパーティショニングすることを選択できます。データフォルダ `s3://bucketname/results` 内には、それぞれのチャネル名を持つ 5 つのフォルダがあります。例えば、`s3://bucketname/results/channel=Social Media/.` フォルダ内には、`Social Media` チャネルを介してウェブサイトに到着したすべての顧客のデータがあります。同様に、残りのチャネルには他のフォルダがあります。
Channel 列でパーティショニングされたエクスポートされたデータ  

![\[Folder structure showing channels: Direct, Organic search, Other, Referral, and Social media.\]](http://docs.aws.amazon.com/ja_jp/timestream/latest/developerguide/images/unload-results.png)


FORMAT  

```
format = [ '{ CSV | PARQUET }' , default: CSV
```
S3 バケットに書き込まれるクエリ結果の形式を指定するキーワード。データは、カンマ (,) をデフォルトの区切り文字として使用してカンマ区切り値 (CSV) として、または分析用の効率的なオープン列型ストレージ形式である Apache Parquet 形式でエクスポートできます。

COMPRESSION  

```
compression = [ '{ GZIP | NONE }' ], default: GZIP
```
エクスポートされたデータは、圧縮アルゴリズム GZIP を使用して圧縮することも、`NONE` オプションを指定して解凍することもできます。

ENCRYPTION  

```
encryption = [ '{ SSE_KMS | SSE_S3 }' ], default: SSE_S3
```
Amazon S3 の出力ファイルは、選択した暗号化オプションを使用して暗号化されます。データに加えて、マニフェストおよびメタデータファイルも、選択した暗号化オプションに基づいて暗号化されます。現在、SSE\$1S3 および SSE\$1KMS 暗号化がサポートされています。SSE\$1S3 は、256 ビットの高度暗号化標準 (AES) 暗号化を使用してデータを暗号化する Amazon S3 によるサーバー側の暗号化です。SSE\$1KMS は、カスタマーマネージドキーを使用してデータを暗号化するサーバー側の暗号化です。

KMS\$1KEY  

```
kms_key = '<string>'
```
KMS キーは、エクスポートされたクエリ結果を暗号化するためのユーザー定義のキーです。KMS キーは AWS Key Management Service (AWS KMS) によって安全に管理され、Amazon S3 のデータファイルの暗号化に使用されます。

FIELD\$1DELIMITER  

```
field_delimiter ='<character>' , default: (,)
```
CSV 形式でデータをエクスポートするとき、このフィールドはパイプ文字 (\$1)、カンマ (,)、タブ (\$1t) など、出力ファイルのフィールドを区切るために使用する単一の ASCII 文字を指定します。CSV ファイルのデフォルトの区切り文字はコンマ文字です。データの値に選択した区切り文字が含まれている場合、区切り文字は引用符で囲まれます。例えば、データ内の値に `Time,stream` が含まれている場合、この値はエクスポートされたデータで `"Time,stream"` として引用符で囲まれます。Timestream for LiveAnalytics で使用される引用文字は二重引用符 (") です。  
CSV にヘッダーを含める場合は、キャリッジリターン文字 (ASCII 13、16 進数 `0D`、テキスト '\$1r') または改行文字 (ASCII 10、16 進数 0A、テキスト '\$1n') を `FIELD_DELIMITER` として指定しないでください。これにより、多くのパーサーが生成された CSV 出力でヘッダーを正しく解析できなくなるためです。

ESCAPED\$1BY  

```
escaped_by = '<character>', default: (\)
```
CSV 形式でデータをエクスポートする場合、このフィールドは S3 バケットに書き込まれたデータファイルでエスケープ文字として扱う文字を指定します。エスケープは以下のようなシナリオで発生します。  

1. 値自体に引用文字 (") が含まれている場合、エスケープ文字を使用してエスケープされます。例えば、値が `Time"stream` で、(\$1) が設定されたエスケープ文字である場合、`Time\"stream` としてエスケープされます。

1. 値に設定されたエスケープ文字が含まれている場合、エスケープされます。例えば、値が `Time\stream` の場合、`Time\\stream` としてエスケープされます。
エクスポートされた出力に配列、行、時系列などの複雑なデータ型が含まれている場合、JSON 文字列としてシリアル化されます。次に例を示します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/timestream/latest/developerguide/supported-sql-constructs.UNLOAD.html)

INCLUDE\$1HEADER  

```
include_header = 'true' , default: 'false'
```
CSV 形式でデータをエクスポートする場合、このフィールドではエクスポートされた CSV データファイルの最初の行として列名を含めることができます。  
使用できる値は「true」と「false」で、デフォルト値は「false」です。`escaped_by` や `field_delimiter` などのテキスト変換オプションは、ヘッダーにも適用されます。  
ヘッダーを含める場合、キャリッジリターン文字 (ASCII 13、16 進 0D、テキスト '\$1r') または改行文字 (ASCII 10、16 進 0A、テキスト '\$1n') を `FIELD_DELIMITER` として選択しないことが重要です。これらの文字を選択すると、多くのパーサーが生成された CSV 出力でヘッダーを正しく解析できなくなるためです。

MAX\$1FILE\$1SIZE  

```
max_file_size = 'X[MB|GB]' , default: '78GB'
```
このフィールドは、`UNLOAD` ステートメントが Amazon S3 で作成するファイルの最大サイズを指定します。`UNLOAD` ステートメントは複数のファイルを作成できますが、Amazon S3 に書き込まれる各ファイルの最大サイズは、このフィールドで指定されているサイズとほぼ同じになります。  
フィールドの値は、16 MB～78 GB である必要があります。`12GB` などの整数、または `0.5GB` や `24.7MB` などの小数で指定できます。デフォルト値は 78 GB です。  
実際のファイルサイズは、ファイルの書き込み時に概算されるため、実際の最大サイズは指定した数字と正確に等しくない場合があります。