

# Athena ビューを使用する
<a name="views-console"></a>

Athena ビューは、Athena コンソールで簡単に作成、更新、管理できます。

## ビューを作成する
<a name="creating-views"></a>

Athena コンソールでテンプレートを使用するか、既存のクエリを実行して、ビューを作成できます。

**テンプレートを使用してビューを作成するには**

1. Athena コンソールで、**[Tables and views]** (テーブルとビュー) の横にある **[Create]** (作成) を選択してから、**[Create view]** (ビューの作成) を選択します。  
![\[ビューの作成\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/create-view.png)

   このアクションにより、編集可能なビューテンプレートがクエリエディタに配置されます。

1. 要件に応じてビューテンプレートを編集します。ステートメントにビューの名前を入力するときは、ビュー名にアンダースコア `(_)` 以外の特殊文字を含めることはできません。「[データベース、テーブル、列に名前を付ける](tables-databases-columns-names.md)」を参照してください。ビューの名前に [クエリで予約キーワードをエスケープする](reserved-words.md) を使用しないようにします。

   ビューの作成の詳細については、「[CREATE VIEW および CREATE PROTECTED MULTI DIALECT VIEW](create-view.md)」および「[Athena ビューの例](views-examples.md)」を参照してください。

1. **[Run]** (実行) をクリックしてビューを作成します。Athena コンソールのビューのリストにビューが表示されます。

**既存のクエリからビューを作成するには**

1. Athena クエリエディタを使用して、既存のクエリを実行します。

1. クエリエディタウィンドウで、**[Create]** (作成) を選択してから、**[View from query]** (クエリから表示する) を選択します。  
![\[[Create] (作成)、[View from query] (クエリから表示する) を選択します。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/create-view-from-query.png)

1. **[Create View]** (ビューの作成) ダイアログボックスにビュー名を入力し、**[Create]** (作成) を選択します。ビュー名にはアンダースコア `(_)` 以外の特殊文字は使用できません。「[データベース、テーブル、列に名前を付ける](tables-databases-columns-names.md)」を参照してください。ビューの名前に [クエリで予約キーワードをエスケープする](reserved-words.md) を使用しないようにします。

   Athena はコンソール内のビューのリストにビューを追加し、クエリエディタのビューの `CREATE VIEW` ステートメントを表示します。

**注意事項**
+ テーブルの基になるテーブルを削除してからそのビューの実行を試みると、Athena がエラーメッセージを表示します。
+ ネストされたビューを作成することができます。これは、既存のビューの上にあるビューです。Athena は、それ自体を参照する再帰的なビューの実行を妨げます。

# Athena ビューの例
<a name="views-examples"></a>

ビュークエリの構文を表示するには、[SHOW CREATE VIEW](show-create-view.md) を使用します。

**Example 例 1**  
次の 2 つのテーブルを考えてみます。2 つの列 (`employees` と `id`) がある `name` テーブルと 2 つの列 (`salaries` と `id`) がある `salary` テーブルです。  
この例では、`name_salary` という名前のビューを `SELECT` テーブル および `employees` テーブルから給料にマッピングされた ID のリストを取得する `salaries` クエリとして作成します。  

```
CREATE VIEW name_salary AS
SELECT
 employees.name, 
 salaries.salary 
FROM employees, salaries 
WHERE employees.id = salaries.id
```

**Example 例 2**  
次の例では、`view1` という名前のビューを作成して、複合型のクエリ構文を非表示にします。  
このビューは 2 つのテーブル (`table1` および `table2`) の上部で実行され、各テーブルは異なる `SELECT` クエリです。このビューは、`table1` からの列を選択し、結果を `table2` に結合します。この結合は、両方のテーブルにある `a` 列に基づいています。  

```
CREATE VIEW view1 AS
WITH
  table1 AS (
         SELECT a, 
         MAX(b) AS the_max 
         FROM x 
         GROUP BY a
         ),
  table2 AS (
         SELECT a, 
         AVG(d) AS the_avg 
         FROM y 
         GROUP BY a)
SELECT table1.a, table1.the_max, table2.the_avg
FROM table1
JOIN table2 
ON table1.a = table2.a;
```

フェデレーティッドビューの詳細については、「[フェデレーテッドビューをクエリする](running-federated-queries.md#running-federated-queries-federated-views)」を参照してください。

# Athena ビューを管理する
<a name="views-managing"></a>

Athena コンソールでは、以下を実行することができます。
+ 左側のペインで、テーブルがリストされているすべてのビューを見つける。
+ ビューをフィルタリングする。
+ ビューをプレビューしてそのプロパティを表示し、編集または削除する。

**ビューのアクションを表示するには**

ビューは、既に作成してある場合にのみコンソールに表示されます。

1. Athena コンソールで **[Views]** (ビュー) を選択し、ビューを選択して展開し、ビュー内の列を表示します。

1. ビューの横にある 3 つの縦のドットを選択して、ビューのアクションのリストを表示します。  
![\[ビューのアクションメニュー。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/view-options.png)

1. アクションを選択して、ビューのプレビュー、クエリエディタへのビュー名の挿入、ビューの削除、ビューのプロパティの表示、またはクエリエディタでのビューの表示と編集を行います。

## Athena ビューでサポートされている DDL アクション
<a name="views-supported-actions"></a>

Athena は、ビューで次の管理アクションをサポートします。


| ステートメント | 説明 | 
| --- | --- | 
| [CREATE VIEW および CREATE PROTECTED MULTI DIALECT VIEW](create-view.md) |  指定する `SELECT` クエリから新しいビューを作成します。詳細については、「[ビューを作成する](views-console.md#creating-views)」を参照してください。 オプションの `OR REPLACE` 句は、既存のビューを更新して置き換えます。  | 
| [DESCRIBE VIEW](describe-view.md) |  名前が付けられたビューの列のリストを表示します。これにより、複合型のビューの属性を確認できます。  | 
| [DROP VIEW](drop-view.md) |  既存のビューを削除します。オプションの `IF EXISTS` 句は、ビューが存在しない場合に、エラーを抑制します。  | 
| [SHOW CREATE VIEW](show-create-view.md) |  指定するビューを作成する SQL ステートメントを表示します。  | 
| [SHOW VIEWS](show-views.md) |  指定するデータベース、あるいは、データベース名を省略する場合の現在のデータベースのビューのリスト。オプションの `LIKE` 句を正規表現で使用して、ビュー名のリストを制限します。コンソールの左ペインでビューのリストを表示することもできます。  | 
| [SHOW COLUMNS](show-columns.md) |  ビュー用のスキーマの列を一覧表示します。  | 

# Athena ビューに関する考慮事項と制限
<a name="considerations-limitations-views"></a>

Athena ビューには次の考慮事項と制限があります。

## 考慮事項
<a name="considerations-views"></a>

Athena でビューを作成して使用する場合は、次の考慮事項が適用されます。
+ Athena では、Athena コンソール、AWS Glue Data Catalog、または同じカタログに接続されている Amazon EMR クラスターで実行されている Presto で作成されたビューをプレビューして使用できます。
+ データカタログで Athena ビューを作成した場合、データカタログはビューをテーブルとして扱います。データカタログでテーブルレベルのきめ細かなアクセスコントロールを使用して、これらのビューへの[アクセスを制限](fine-grained-access-to-glue-resources.md)できます。
+  Athena は再帰的なビューの実行を妨げ、そのような場合にはエラーメッセージを表示します。再帰的なビューとは、Athena 自体を参照するビュークエリです。
+ Athena は、古いビューを検出するとエラーメッセージを表示します。以下のいずれかが発生すると、古いビューが報告されます。
  + このビューは、存在しないテーブルまたはデータベースを参照します。
  + スキーマまたはメタデータの変更は、参照されるテーブルで行われます。
  + 参照されるテーブルは削除され、異なるスキーマまたは設定で再度作成されます。
+ ネストされたビューのクエリが有効であり、テーブルおよびデータベースが存在する限り、ネストされたビューを作成して実行できます。

## 制限事項
<a name="limitations-views"></a>
+ Athena ビューの名前には、アンダースコア `(_)` 以外の特殊文字を使用できません。詳細については、「[データベース、テーブル、列に名前を付ける](tables-databases-columns-names.md)」を参照してください。
+ ビューの名前に予約キーワードを使用しないようにします。予約キーワードを使用している場合、ビューでのクエリでは予約キーワードを二重引用符で囲みます。「[クエリで予約キーワードをエスケープする](reserved-words.md)」を参照してください。
+ Athena で作成したビューを外部 Hive メタストア、UDF で使用することはできません。Hive で外部で作成したビューを使用する方法については、「[Hive ビューを使用する](hive-views.md)」を参照してください。
+ 地理空間関数ではビューを使用できません。
+ Amazon S3 のデータに対するアクセスコントロールを管理するためにビューを使用することはできません。ビューをクエリするには、Amazon S3 に保存されているデータにアクセスするためのアクセス許可が必要です。詳細については、「[Athena から Amazon S3 へのアクセスを制御する](s3-permissions.md)」を参照してください。
+ アカウント間でのビューのクエリは Athena エンジンバージョン 3 でサポートされていますが、クロスアカウント AWS Glue Data Catalogを含むビューを作成することはできません。クロスアカウントデータカタログへのアクセスについては、「[AWS Glue データカタログへのクロスアカウントアクセスを構成する](security-iam-cross-account-glue-catalog-access.md)」を参照してください。
+ Hive または Iceberg の非表示メタデータ列 `$bucket`、`$file_modified_time`、`$file_size`、および `$partition` は Athena のビューでサポートされていません。Athena の `$path`メタデータ列の使用方法については「[Amazon S3 内にあるソースデータのファイルの場所の取得](select.md#select-path)」を参照してください。