

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 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/zh_tw/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/zh_tw/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**  
假設有以下兩個資料表：資料表 `employees` 有兩欄：`id` 和 `name`；資料表 `salaries` 有兩欄：`id` 和 `salary`。  
在這個範例中，我們以 `SELECT` 查詢建立名為 `name_salary` 的檢視，從資料表 `employees` 和 `salaries` 取得映射到 salaries 的 ID 清單：  

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

**Example 範例 2**  
在下列範例中，我們建立名為 `view1` 的檢視，讓您隱藏較複雜的查詢語法。  
此檢視在兩個資料表上執行：`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. 選擇檢視旁的三個垂直點可顯示檢視的動作清單。  
![\[檢視的動作選單。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/view-options.png)

1. 選擇動作可預覽檢視、將檢視名稱插入查詢編輯器中、刪除檢視、查看檢視的屬性，或在查詢編輯器中顯示和編輯檢視。

## 對 Athena 檢視支援的 DDL 動作
<a name="views-supported-actions"></a>

Athena 對檢視支援下列管理動作。


| 陳述式 | Description | 
| --- | --- | 
| [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 會在偵測到過時的檢視時顯示錯誤訊息。當發生下列其中一種情況時，便會報告過時的檢視：
  + 檢視參考資料表或資料庫不存在。
  + 在參考的資料表中進行了結構描述或中繼資料變更。
  + 參考的資料表遭捨棄，並使用不同的結構描述或組態重新建立。
+ 只要巢狀檢視背後的查詢有效，而且資料表和資料庫存在，您就可以建立和執行巢狀檢視。

## 限制
<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)。
+ Athena 中的檢視不支援 Hive 或 Iceberg 隱藏的中繼資料欄 `$bucket`、`$file_modified_time`、`$file_size` 和 `$partition`。如需有關在 Athena 中使用 `$path` 中繼資料欄的資訊，請參閱 [在 Amazon S3 中取得來源資料的檔案位置](select.md#select-path)。