

# CREATE VIEW および CREATE PROTECTED MULTI DIALECT VIEW
<a name="create-view"></a>

ビューは、この先のクエリで参照できる論理的なテーブルです。ビューにはデータは一切含まれず、データを書き込むこともできません。代わりに、ビューで指定するクエリは、別のクエリでそのビューを参照するたびに実行されます。
+ `CREATE VIEW` は、指定された `SELECT` クエリから Athena ビューを作成します。Athena ビューは Athena 内で機能します。Athena ビューの詳細については、「[ビューを使用する](views.md)」を参照してください。
+ `CREATE PROTECTED MULTI DIALECT VIEW` は、AWS Glue Data Catalog に AWS Glue Data Catalog ビューを作成します。AWS Glue Data Catalog ビューは、Amazon Athena や Amazon Redshift などの AWS のサービス 全体で単一の共通ビューを提供します。AWS Glue Data Catalog ビューの詳細については、「[Athena でデータカタログビューを使用する](views-glue.md)」を参照してください。

## CREATE VIEW
<a name="create-view-ate"></a>

Athena 内で使用するビューを作成します。

### 概要
<a name="synopsis"></a>

```
CREATE [ OR REPLACE ] VIEW view_name AS query
```

オプションの `OR REPLACE` 句は、既存のビューを更新して置き換えます。詳細については、「[ビューを作成する](views-console.md#creating-views)」を参照してください。

### 例
<a name="examples"></a>

テーブル `orders` から `test` ビューを作成するには、次のようなクエリを使用します。

```
CREATE VIEW test AS
SELECT 
orderkey, 
orderstatus, 
totalprice / 2 AS half
FROM orders;
```

テーブル `orders` から `orders_by_date` ビューを作成するには、次のクエリを使用します。

```
CREATE VIEW orders_by_date AS
SELECT orderdate, sum(totalprice) AS price
FROM orders
GROUP BY orderdate;
```

既存のビューを更新するには、次のような例を使用します。

```
CREATE OR REPLACE VIEW test AS
SELECT orderkey, orderstatus, totalprice / 4 AS quarter
FROM orders;
```

 Athena ビューの使用の詳細については、「[ビューを使用する](views.md)」を参照してください。

## CREATE PROTECTED MULTI DIALECT VIEW
<a name="create-protected-multi-dialect-view"></a>

AWS Glue Data Catalog で AWS Glue Data Catalog ビューを作成します。データカタログビューは、Athena と Amazon Redshift や Amazon EMR のような他の SQL エンジン間で機能する単一のビュースキーマです。

### 構文
<a name="create-protected-multi-dialect-view-syntax"></a>

```
CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW {{view_name}} 
SECURITY DEFINER 
[ SHOW VIEW JSON ]
AS {{query}}
```

**OR REPLACE**  
(オプション) 既存のビューを置き換えて更新します。データカタログビューに他のエンジンの SQL ダイアレクトが含まれている場合、そのビューを置き換えることはできません。呼び出し側のエンジンの SQL ダイアレクトがビュー内に存在する場合は、そのビューを置き換えることができます。

**PROTECTED**  
キーワードが必須です。ビューをデータ漏洩から保護するように指定します。データカタログビューは `PROTECTED` ビューとしてのみ作成できます。

**MULTI DIALECT**  
ビューがさまざまなクエリエンジンの SQL ダイアレクトをサポートし、それらのエンジンで読み取れるように指定します。

**SECURITY DEFINER**  
このビューに対して definer セマンティクスが有効であることを指定します。definer セマンティクスとは、基礎となるテーブルに対する有効な読み取り権限が、実際の読み取りを実行するプリンシパルではなく、ビューを定義したプリンシパルまたはロールに属することを意味します。

**SHOW VIEW JSON**  
(オプション) 実際にビューを作成せずに、データカタログビュー仕様の JSON を返します。この「ドライラン」オプションは、ビューの SQL を検証し、AWS Glue が使用するテーブルメタデータを返す場合に便利です。

### 例
<a name="create-protected-multi-dialect-view-syntax-example"></a>

次の例では、`orders` テーブルに対するクエリに基づいて `orders_by_date` データカタログビューを作成します。

```
CREATE PROTECTED MULTI DIALECT VIEW orders_by_date 
SECURITY DEFINER 
AS 
SELECT orderdate, sum(totalprice) AS price 
FROM orders 
WHERE order_city = 'SEATTLE' 
GROUP BY orderdate
```

AWS Glue Data Catalog ビューの使用の詳細については、「[Athena でデータカタログビューを使用する](views-glue.md)」を参照してください。