

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

# 在 SageMaker AI 中選擇正確資料準備工具的建議
<a name="data-prep"></a>

機器學習中的資料準備是指收集、預先處理和組織原始資料，以使其適合進行分析和建模的程序。此步驟確保資料採用機器學習演算法可有效學習的格式。資料準備任務可能包括處理缺少值、移除極端值、擴展功能、編碼分類變數、評估潛在偏差並採取步驟來緩解這些偏差、將資料分割為訓練和測試集、標記和其他必要的轉換，以最佳化後續機器學習任務的資料品質和可用性。

## 選擇功能
<a name="data-prep-choose"></a>

使用 Amazon SageMaker AI 進行*資料準備*有 3 個主要使用案例。選擇符合您要求的[使用案例](#data-prep-choose-use-cases)，然後參考對應的[建議功能](#data-prep-choose-recommended)。

### 使用案例
<a name="data-prep-choose-use-cases"></a>

以下是為機器學習執行資料準備時的主要使用案例。
+ **使用案例 1**：對於偏好視覺化介面的使用者，SageMaker AI 提供透過點按式環境探索、準備和設計模型訓練特徵的方法。
+ **使用案例 2**：對於熟悉編碼的使用者，如果他們想要更靈活地控制資料準備，SageMaker AI 會將工具整合到其編碼環境，以進行探索、轉換和特徵工程。
+ **使用案例 3**：對於專注於可擴展資料準備的使用者，SageMaker AI 提供無伺服器功能，利用 Hadoop/Spark 生態系統進行巨量資料的分散式處理。

### 推薦功能
<a name="data-prep-choose-recommended"></a>

下表概述 SageMaker AI 功能的關鍵考量和權衡，這些功能與機器學習的每個資料準備使用案例相關。若要開始使用，請識別符合您要求的使用案例，並導覽至其建議的 SageMaker AI 功能。


| 描述項 | 使用案例 1 | 使用案例 2 | 使用案例 3 | 
| --- | --- | --- | --- | 
| SageMaker AI 功能 | Amazon SageMaker Canvas 內的 [Data Wrangler](canvas-data-prep.md) | [在 Studio 中使用 SQL 進行資料準備](sagemaker-sql-extension.md) | Studio 中的 [使用 EMR Serverless 準備資料](studio-notebooks-emr-serverless.md) 應用程式 | 
| Description | SageMaker Canvas 是一種視覺化低程式碼環境，用於在 SageMaker AI 中建置、訓練和部署機器學習模型。其整合式 Data Wrangler 工具可讓使用者透過點按式互動來結合、轉換和清理資料集。 | Studio 中的 SQL 延伸模組可讓使用者連線至 Amazon Redshift、Snowflake、Athena 和 Amazon S3，以編寫臨機操作 SQL 查詢，並在 JupyterLab 筆記本中預覽結果。您可以使用 Python 和 Pandas 操控這些查詢的輸出，以進行額外的處理、視覺化和將其轉換為可用於機器學習模型開發的格式。 | EMR Serverless 與 Amazon SageMaker Studio 之間的整合為使用 Apache Spark 和 Apache Hive 等開放原始碼架構的機器學習提供了可擴展的無伺服器環境，以進行大規模資料準備。使用者可以直接從其 Studio 筆記本存取 EMR Serverless 應用程式和資料，以大規模執行其資料準備任務。 | 
| 最佳化 | 使用視覺化界面，您可以在其中：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-prep.html) 針對表格式資料任務進行最佳化，例如處理缺少值、編碼分類變數，以及套用資料轉換。  | 對於其資料位於 Amazon Redshift、Snowflake、Athena 或 [Amazon S3](studio-sqlexplorer-athena-s3-quickstart.md) 中的使用者，而且他們想要結合探索性 SQL 和 Python 進行資料分析和準備，而不需要學習 Spark。 | 對於偏好無伺服器體驗的使用者，其會透過自動資源佈建和終止來擴展圍繞 Apache Spark 發展的短時間執行或間歇性互動式工作負載，同時利用 SageMaker AI 的機器學習功能。 | 
| 考量事項 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-prep.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-prep.html)  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-prep.html)  | 
| 建議的環境 | [開始使用 SageMaker Canvas](canvas-getting-started.md) | [啟動 Studio](studio-updated-launch.md#studio-updated-launch-prereq) | [啟動 Studio](studio-updated-launch.md#studio-updated-launch-prereq) | 

### 其他選項
<a name="data-prep-choose-additional"></a>

 SageMaker AI 提供下列其他選項，讓您準備資料以用於機器學習模型。
+ [使用 Amazon EMR 進行資料準備](studio-notebooks-emr-cluster.md)：對於長時間執行、運算密集的大規模資料處理任務，請考慮使用來自 SageMaker Studio 的 Amazon EMR 叢集。Amazon EMR 叢集旨在處理大量平行化，而且可以擴展到數百或數千個節點，使其非常適合需要 Apache Spark、Hadoop、Hive 和 Presto 等架構的巨量資料工作負載。Amazon EMR 與 SageMaker Studio 的整合可讓您利用 Amazon EMR 的可擴展性和效能，同時在 SageMaker Studio 環境內集中管理完整的 ML 實驗、模型訓練和部署。
+ [使用 Glue 互動式工作階段準備資料](studio-notebooks-glue.md)：您可以從 AWS Glue 互動式工作階段使用 Apache Spark 型無伺服器引擎，在 SageMaker Studio 中彙總、轉換和準備來自多個來源的資料。
+ 使用 Amazon SageMaker Clarify 處理任務[識別訓練資料的偏差]()：SageMaker Clarify 會分析您的資料並偵測多個面向的潛在偏差。例如，您可以使用 Studio 中的 Clarify API 來偵測訓練資料是否包含性別、種族或年齡等群組之間的不平衡表示法或標記偏差。Clarify 可以協助您在訓練模型之前識別這些偏差，以避免將偏差傳播到模型的預測中。
+ [建立、存放和共用功能]()：Amazon SageMaker Feature Store 可最佳化機器學習精選特徵的探索和重複使用。它提供集中式儲存庫來存放特徵資料，您可以搜尋和擷取此資料以進行模型訓練。以標準化格式存放特徵可讓 ML 專案重複使用這些特徵。特徵存放區會管理特徵的完整生命週期，包括歷程追蹤、統計資料和稽核軌跡，以進行可擴展且受管理的機器學習特徵工程。
+ [使用人類參與迴圈標記資料](data-label.md)：您可以使用 SageMaker Ground Truth 來管理訓練資料集的資料標記工作流程。
+ [使用 SageMaker Processing API](processing-job.md)：在執行探索性資料分析並建立資料轉換步驟之後，您可以使用 [SageMaker AI Processing 任務](processing-job.md)生產您的轉換程式碼，並使用 [SageMaker 模型建置管道](pipelines.md)自動化您的準備工作流程。

# 在 Studio 中使用 SQL 進行資料準備
<a name="sagemaker-sql-extension"></a>

Amazon SageMaker Studio 提供內建 SQL 延伸模組。此延伸模組可讓資料科學家在其 JupyterLab 筆記本內直接執行取樣、探索性分析和特徵工程等任務。它利用 AWS Glue 連線來維護集中式資料來源目錄。此型錄存放有關各種資料來源的中繼資料。透過此 SQL 環境，資料科學家可以瀏覽資料型錄、探索其資料、編寫複雜的 SQL 查詢，以及在 Python 中進一步處理結果。

本節會逐步引導您在 Studio 中設定 SQL 延伸模組。它會描述此 SQL 整合啟用的功能，並提供在 JupyterLab 筆記本中執行 SQL 查詢的指示。

若要啟用 SQL 資料分析，管理員必須先設定與相關資料來源的 AWS Glue 連線。這些連線可讓資料科學家從 JupyterLab 內無縫存取授權的資料集。

除了管理員設定的 AWS Glue 連線之外，SQL 延伸還允許個別資料科學家建立自己的資料來源連線。這些使用者建立的連線可以透過標籤型存取控制政策獨立管理，並將其範圍限定在使用者的設定檔內。此雙層級連線模型具有管理員設定和使用者建立的連線，可讓資料科學家更廣泛地存取其分析和建模任務所需的資料。使用者可以在 JupyterLab 環境使用者介面 (UI) 內設定與自己資料來源的必要連線，而無需完全依賴管理員建立的集中式連線。

**重要**  
使用者定義的連線建立功能可在 PyPI 中做為一組獨立程式庫使用。若要使用此功能，您需要在 JupyterLab 環境中安裝下列程式庫：  
[amazon-sagemaker-sql-editor](https://pypi.org/project/amazon-sagemaker-sql-editor/)
[amazon-sagemaker-sql-execution](https://pypi.org/project/amazon-sagemaker-sql-execution/)
[amazon-sagemaker-sql-magic](https://pypi.org/project/amazon-sagemaker-sql-magic/)
您可以在 JupyterLab 終端機中執行下列命令來安裝這些程式庫：  

```
pip install amazon-sagemaker-sql-editor>=0.1.13
pip install amazon-sagemaker-sql-execution>=0.1.6
pip install amazon-sagemaker-sql-magic>=0.1.3
```
安裝程式庫後，您需要重新啟動 JupyterLab 伺服器，變更才會生效。  

```
restart-jupyter-server
```

設定存取後，JupyterLab 使用者可以：
+ 檢視和瀏覽預先設定的資料來源。
+ 搜尋、篩選和檢查資料庫資訊元素，例如資料表、結構描述和資料欄。
+ 自動產生資料來源的連線參數。
+ 使用延伸模組 SQL 編輯器的語法醒目提示、自動完成和 SQL 格式功能建立複雜的 SQL 查詢。
+ 從 JupyterLab 筆記本儲存格執行 SQL 陳述式。
+ 將 SQL 查詢的結果擷取為 pandas DataFrames，以進行進一步處理、視覺化和其他機器學習任務。

您可以選擇 Studio 中 JupyterLab 應用程式左側導覽窗格中的 SQL 延伸模組圖示 (![\[Icon of the SQL extension feature in JupyterLab.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/sqlexplorer/sqlexplorer-icon.png)) 來存取延伸模組。將滑鼠懸停在圖示上方會顯示其*資料探索*工具提示。

**重要**  
SageMaker Studio 中的 JupyterLab 映像預設包含 SQL 延伸模組，從 [SageMaker AI Distribution](https://github.com/aws/sagemaker-distribution) 1.6 開始。此延伸模組僅會使用 Python 和 SparkMagic 核心。
用於探索連線和資料的延伸模組使用者介面只能在 Studio 內的 JupyterLab 中使用。其與 [Amazon Redshift](https://aws.amazon.com/redshift/)、[Amazon Athena](https://aws.amazon.com/athena/) 和 [Snowflake](https://www.snowflake.com/en/) 相容。
+ 如果您是管理員，想要建立 SQL 延伸模組資料來源的一般連線，請遵循下列步驟：

  1. 啟用 Studio 網域與您要連線的資料來源之間的網路通訊。若要了解聯網要求，請參閱 [設定 Studio 與資料來源之間的網路存取 (適用於管理員)](sagemaker-sql-extension-networking.md)。

  1. 檢查連線屬性和指示，以在 [在 Secrets Manager 中建立資料庫存取憑證的秘密](sagemaker-sql-extension-glue-connection-secrets.md) 中為您的資料來源建立機密。

  1. 在 中建立與資料來源的 AWS Glue 連線[建立 AWS Glue 連線 （適用於管理員）](sagemaker-sql-extension-datasources-glue-connection.md)。

  1. 將 [設定 IAM 許可以存取資料來源 (適用於管理員)](sagemaker-sql-extension-datasources-connection-permissions.md) 中的必要許可授與 SageMaker 網域或使用者設定檔的執行角色。
+ 如果您是資料科學家，想要建立您自己與 SQL 延伸模組資料來源的連線，請遵循下列步驟：

  1. 請您的管理員：
     + 啟用 Studio 網域與您要連線的資料來源之間的網路通訊。若要了解聯網要求，請參閱 [設定 Studio 與資料來源之間的網路存取 (適用於管理員)](sagemaker-sql-extension-networking.md)。
     + 將 [設定 IAM 許可以存取資料來源 (適用於管理員)](sagemaker-sql-extension-datasources-connection-permissions.md) 中的必要許可授與 SageMaker 網域或使用者設定檔的執行角色。
**注意**  
管理員可以在執行角色中設定[標籤型存取控制](sagemaker-sql-extension-datasources-connection-permissions.md#user-defined-connections-permissions)，以限制使用者只能存取 JupyterLab 應用程式內建立的連線。

  1. 檢查連線屬性和指示，以在 [在 Secrets Manager 中建立資料庫存取憑證的秘密](sagemaker-sql-extension-glue-connection-secrets.md) 中為您的資料來源建立機密。

  1. 使用[建立使用者定義的 AWS Glue 連線](sagemaker-sql-extension-datasources-glue-connection-user-defined.md)中的指示，在 JupyterLab UI 中建立您的連線。
+ 如果您是希望使用 SQL 延伸模組瀏覽和查詢資料來源的資料科學家，請確定您或您的管理員已先設定與資料來源的連線。然後，請遵循下列步驟。

  1. 建立私有空間，使用 SageMaker Distribution 映像 1.6 版或更新版本，在 Studio 中啟動 JupyterLab 應用程式。

  1. 如果您是 SageMaker Distribution 映像 1.6 版的使用者，請在筆記本儲存格中執行 `%load_ext amazon_sagemaker_sql_magic`，於 JupyterLab 筆記本中載入 SQL 延伸模組。

     對於 SageMaker Distribution 映像 1.7 版和更新版本的使用者，不需要任何動作，SQL 延伸模組會自動載入。

  1. 熟悉 [SQL 延伸功能和用法](sagemaker-sql-extension-features.md) 中 SQL 延伸模組的功能。

**Topics**
+ [快速入門：在 Amazon S3 中查詢資料](studio-sqlexplorer-athena-s3-quickstart.md)
+ [SQL 延伸功能和用法](sagemaker-sql-extension-features.md)
+ [設定 Studio 與資料來源之間的網路存取 (適用於管理員)](sagemaker-sql-extension-networking.md)
+ [SQL 延伸模組資料來源連線](sagemaker-sql-extension-datasources-connection.md)
+ [常見問答集](sagemaker-sql-extension-faqs.md)
+ [連線參數](sagemaker-sql-extension-connection-properties.md)

# 快速入門：在 Amazon S3 中查詢資料
<a name="studio-sqlexplorer-athena-s3-quickstart"></a>

使用者可以使用 SQL 延伸模組從 JupyterLab 筆記本執行 SQL 查詢，以分析 Amazon S3 中存放的資料。延伸模組與 Athena 整合，只需幾個額外步驟即可啟用 Amazon S3 中資料的功能。

本節會透過步驟引導您將資料從 Amazon S3 載入至 Athena，然後使用 SQL 延伸模組從 JupyterLab 查詢該資料。您將建立 Athena 資料來源和 AWS Glue 爬蟲程式來為 Amazon S3 資料編製索引、設定適當的 IAM 許可以啟用 JupyterLab 存取 Athena，並將 JupyterLab 連線至 Athena 以查詢資料。遵循以下幾個步驟，您將能夠在 JupyterLab 筆記本中使用 SQL 延伸模組分析 Amazon S3 資料。

**先決條件**  
使用具有管理員許可的 AWS Identity and Access Management (IAM) 使用者帳戶登入 AWS 管理主控台。如需如何註冊 AWS 帳戶並建立具有管理存取權之使用者的相關資訊，請參閱 [完成 Amazon SageMaker AI 先決條件](gs-set-up.md)。
具有 SageMaker AI 網域和使用者設定檔以存取 SageMaker Studio。如需如何設定 SageMaker AI 環境的相關資訊，請參閱[使用 Amazon SageMaker AI 的快速設定](onboard-quick-start.md)。
具有 Amazon S3 儲存貯體和資料夾來存放 Athena 查詢結果，同時使用與您的 SageMaker AI 環境相同的 AWS 區域和帳戶。如需如何在 Amazon S3 中建立儲存貯體的相關資訊，請參閱 Amazon S3 文件中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。您會將此儲存貯體和資料夾設定為您的查詢輸出位置。

**Topics**
+ [步驟 1：為您的 Amazon S3 資料設定 Athena 資料來源和 AWS Glue 爬蟲程式](#studio-sqlexplorer-athena-s3-quickstart-setup)
+ [步驟 2：授予 Studio 存取 Athena 的許可](#studio-sqlexplorer-athena-s3-quickstart-permissions)
+ [步驟 3：在 JupyterLab 中啟用 Athena 預設連線](#studio-sqlexplorer-athena-s3-quickstart-connect)
+ [步驟 4：使用 SQL 延伸模組從 JupyterLab 筆記本中查詢 Amazon S3 中的資料](#studio-sqlexplorer-athena-s3-quickstart-query)

## 步驟 1：為您的 Amazon S3 資料設定 Athena 資料來源和 AWS Glue 爬蟲程式
<a name="studio-sqlexplorer-athena-s3-quickstart-setup"></a>

請遵循下列步驟，為 Amazon S3 中您的資料編製索引，並在 Athena 中建立資料表。

**注意**  
若要避免來自不同 Amazon S3 位置的資料表名稱之間發生衝突，請為每個位置建立個別的資料來源和編目程式。除非加上字首，否則每個資料來源都會建立一個以包含它們的資料夾命名的資料表。

1. 設定查詢結果位置

   1. 前往 Athena 主控台：[https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)。

   1. 從左側功能表中，選擇**工作群組**。

   1. 遵循 `primary` 工作群組的連結，然後選擇**編輯**。

   1. 在**查詢結果組態**區段中，為您的輸出目錄輸入 Amazon S3 路徑，然後選擇**儲存變更**。

1. 為您的 Amazon S3 資料建立 Athena 資料來源

   1. 從 Athena 主控台中的左側功能表中，選擇**資料來源**，然後選擇**建立資料來源**。

   1. 選擇 **S3 - AWS Glue Data Catalog**，然後選擇**下一步**。

   1. 保留**此帳戶中的預設AWS Glue Data Catalog**、選擇**在 AWS Glue中建立編目程式**，然後選擇**在 AWS Glue中建立**。這會開啟 AWS Glue 主控台。

1. 使用 AWS Glue 來編目資料來源

   1. 為您的新編目程式輸入名稱和描述，然後選擇**下一步**。

   1. 在**資料來源**下，選擇**新增資料來源**。

      1. 如果包含資料的 Amazon S3 儲存貯體位於與 SageMaker AI 環境不同的 AWS 帳戶中，請在 S**S3資料位置****的不同帳戶中**選擇 。

      1. 輸入 Amazon S3 中您資料集的路徑。例如：

         ```
         s3://dsoaws/nyc-taxi-orig-cleaned-split-parquet-per-year-multiple-files/ride-info/year=2019/
         ```

      1. 保留所有其他預設值，然後選擇**新增 Amazon S3 資料來源**。您應該會在資料來源資料表中看到新的 Amazon S3 資料來源。

      1. 選擇**下一步**。

       

   1. 設定編目程式的 IAM 角色以存取您的資料。
**注意**  
每個角色的範圍都會縮小到您指定的資料來源。重複使用角色時，請編輯 JSON 政策以新增您要授予存取權的任何新資源，或為此資料來源建立新的角色。

      1. 選擇**建立新的 IAM 角色**。

      1. 輸入角色的名稱，然後選擇 **下一步**。

1. 為您的資料表建立或選取資料庫

   1. 如果您在 Athena 中沒有現有的資料庫，請選擇**新增資料庫**，然後選擇**建立新資料庫**。

   1. 返回先前的編目程式建立索引標籤，在**輸出組態**中，選擇**重新整理**按鈕。您現在應該會在清單中看到新建立的資料庫。

   1. 選取您的資料庫、在**資料表名稱字首**中新增選用字首，然後選擇**下一步**。
**注意**  
對於您的資料位於 `s3://dsoaws/nyc-taxi-orig-cleaned-split-parquet-per-year-multiple-files/ride-info/year=2019/` 的先前範例，新增字首 `taxi-ride-` 將會建立名為 `taxi-ride-year_2019` 的資料表。當多個資料位置具有相同命名的資料夾時，新增字首有助於防止資料表名稱衝突。

1. 選擇**建立編目程式**。

1. 執行您的編目程式來為您的資料編製索引。等待編目程式執行達到 `Completed` 狀態，這可能需要幾分鐘的時間。

若要確保建立新的資料表，請前往 中的左側選單 AWS Glue ，然後選擇**資料庫**，然後選擇**資料表**。您現在應該會看到包含您資料的新資料表。

## 步驟 2：授予 Studio 存取 Athena 的許可
<a name="studio-sqlexplorer-athena-s3-quickstart-permissions"></a>

在下列步驟中，您授予使用者設定檔的執行角色存取 Athena 的許可。

1. 擷取與您使用者設定檔相關聯之執行角色的 ARN

   1. 前往 SageMaker AI 主控台 (網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/))，然後在左側功能表中選擇**網域**。

   1. 遵循網域名稱的名稱。

   1. 在**使用者設定檔**清單中，遵循使用者設定檔的名稱。

   1. 在**使用者詳細資訊**頁面上，複製執行角色的 ARN。

1. 更新執行角色的政策

   1. 在 SageMaker AI 主控台的右上角尋找您的 AWS 區域和帳戶 ID。使用這些值和您的資料庫名稱，在文字編輯器中更新下列 JSON 政策中的預留位置。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "GetS3AndDataSourcesMetadata",
                  "Effect": "Allow",
                  "Action": [
                      "glue:GetDatabases",
                      "glue:GetSchema",
                      "glue:GetTables",
                      "s3:ListBucket",
                      "s3:GetObject",
                      "s3:GetBucketLocation",
                      "glue:GetDatabase",
                      "glue:GetTable",
                      "glue:ListSchemas",
                      "glue:GetPartitions"
                  ],
                  "Resource": [
                      "arn:aws:s3:::*",
                      "arn:aws:glue:us-east-1:111122223333:catalog",
                      "arn:aws:glue:us-east-1:111122223333:database/db-name"
                  ]
              },
              {
                  "Sid": "ExecuteAthenaQueries",
                  "Effect": "Allow",
                  "Action": [
                      "athena:ListDataCatalogs",
                      "athena:ListDatabases",
                      "athena:ListTableMetadata",
                      "athena:StartQueryExecution",
                      "athena:GetQueryExecution",
                      "athena:RunQuery",
                      "athena:StartSession",
                      "athena:GetQueryResults",
                      "athena:ListWorkGroups",
                      "s3:ListMultipartUploadParts",
                      "s3:ListBucket",
                      "s3:GetBucketLocation",
                      "athena:GetDataCatalog",
                      "s3:AbortMultipartUpload",
                      "s3:GetObject",
                      "s3:PutObject",
                      "athena:GetWorkGroup"
                  ],
                  "Resource": [
                      "arn:aws:s3:::*"
                  ]
              },
              {
                  "Sid": "GetGlueConnectionsAndSecrets",
                  "Effect": "Allow",
                  "Action": [
                      "glue:GetConnections",
                      "glue:GetConnection"
                  ],
                  "Resource": [
                      "*"
                  ]
              }
          ]
      }
      ```

------

   1. 前往 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)，然後在左側功能表中選擇**角色**。

   1. 依角色名稱搜尋您的角色。
**注意**  
您可以從其 Amazon Resource Name (ARN) 擷取執行角色名稱，方法是在 `'/'` 上分割 ARN 並取得最後一個元素。例如，在下列 ARN `arn:aws:iam::112233445566:role/SageMakerStudio-SQLExtension-ExecutionRole` 範例中，執行角色的名稱為 `SageMakerStudio-SQLExtension-ExecutionRole`。

   1. 遵循角色的連結。

   1. 在**許可**索引標籤中，選擇**新增許可**，然後選擇**建立內嵌政策**。

   1. 在**政策編輯器**區段中，選擇 `JSON` 格式。

   1. 複製上述政策，然後選擇**下一步**。確定您已將所有 `account-id`、`region-name` 和 `db-name` 取代為其值。

   1. 輸入您政策的名稱，然後選擇**建立政策**。

## 步驟 3：在 JupyterLab 中啟用 Athena 預設連線
<a name="studio-sqlexplorer-athena-s3-quickstart-connect"></a>

在下列步驟中，您會在 JupyterLab 應用程式中啟用 `default-athena-connection`。預設 Athena 連線允許直接從 JupyterLab 在 Athena 中執行 SQL 查詢，而不需要手動建立連線。

啟用預設 Athena 連線

1. 前往 SageMaker AI 主控台 (網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/))，然後在左側功能表中選擇 **Studio**。使用您的網域和使用者設定檔，啟動 Studio。

1. 選擇 JupyterLab 應用程式。

1. 如果您尚未為 JupyterLab 應用程式建立空間，請選擇**建立 JupyterLab 空間**。輸入空間的名稱、將空間保留為**私有**，然後選擇**建立空間**。使用最新版的 SageMaker AI Distribution 映像執行您的空間。

   否則，請在您的空間上選擇**執行空間**以啟動 JupyterLab 應用程式。

1. 啟用 Athena 預設連線：

   1. 在您的 JupyterLab 應用程式中，導覽至頂端導覽列中的**設定**功能表，並開啟**設定編輯器**功能表。

   1. 選擇**資料探索**。

   1. 勾選**啟用預設 Athena 連線**的方塊。

   1. 在 JupyterLab 應用程式中，選擇左側導覽窗格中的 SQL 延伸模組圖示 (![\[Purple circular icon with a clock symbol representing time or scheduling.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/sqlexplorer/sqlexplorer-icon.png)) 以開啟 SQL 延伸模組。

   1.  選擇資料探索面板底部的**重新整理**按鈕。您應該會在連線清單中看到 `default-athena-connection`。

## 步驟 4：使用 SQL 延伸模組從 JupyterLab 筆記本中查詢 Amazon S3 中的資料
<a name="studio-sqlexplorer-athena-s3-quickstart-query"></a>

您已準備好在 JupyterLab 筆記本中使用 SQL 查詢您的資料。

1. 開啟連線 `default-athena-connection`，然後開啟 **AWS DataCatalog**。

1. 導覽至您的資料庫，然後選擇右側的三點圖示 (![\[SQL extension three dots icon.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/sqlexplorer/sqlexplorer-3dots-icon.png))。選取**在筆記本中查詢**。

   這會自動使用相關的 `%%sm_sql` 魔術命令，在 JupyterLab 中填入筆記本儲存格，以連線至資料來源。它也會新增範例 SQL 陳述式，協助您立即開始查詢。
**注意**  
執行 SQL 查詢之前，請確定在頂端儲存格中載入延伸項目。

   您可以使用延伸模組的自動完成和醒目提示功能，進一步精簡 SQL 查詢。如需使用 SQL 延伸模組 SQL 編輯器的詳細資訊，請參閱 [JupyterLab SQL 延伸模組的 SQL 編輯器功能](sagemaker-sql-extension-features-editor.md)。

# SQL 延伸功能和用法
<a name="sagemaker-sql-extension-features"></a>

本節詳細說明 Studio 中 JupyterLab SQL 延伸模組的各種功能，並提供如何使用這些功能的指示。管理員必須先設定與您資料來源的連線，然後才能使用 SQL 延伸模組從 JupyterLab 筆記本存取和查詢資料。如需管理員如何建立資料來源連線的相關資訊，請參閱[SQL 延伸模組資料來源連線](sagemaker-sql-extension-datasources-connection.md)。

**注意**  
若要使用 SQL 延伸模組，您的 JupyterLab 應用程式必須在 [SageMaker AI Distribution](https://github.com/aws/sagemaker-distribution/blob/main/README.md) 映像 1.6 版或更新版本上執行。這些 SageMaker 映像已預先安裝延伸模組。

延伸模組提供兩個元件，協助您存取、探索、查詢和分析來自預先設定資料來源的資料。
+ 使用 SQL 延伸模組的*使用者介面*來發現和探索您的資料來源。UI 功能可以進一步分為下列子類別。
  + 使用**資料探索** UI 元素，您可以瀏覽資料來源並探索其資料表、資料欄和中繼資料。如需 SQL 延伸模組的資料探索功能詳細資訊，請參閱[使用 SQL 延伸模組瀏覽資料](sagemaker-sql-extension-features-data-discovery.md)。
  + **連線快取**元素會快取連線以進行快速存取。如需 SQL 延伸模組中連線快取的詳細資訊，請參閱 [SQL 延伸模組連線快取](sagemaker-sql-extension-features-connection-caching.md)。
+ 使用 *SQL 編輯器和執行器*，針對連線的資料來源撰寫、編輯和執行 SQL 查詢。
  + 使用 **SQL 編輯器**元素，您可以在 Studio 中 JupyterLab 應用程式的筆記本內撰寫、格式化和驗證 SQL 陳述式。如需 SQL 編輯器功能的詳細資訊，請參閱 [JupyterLab SQL 延伸模組的 SQL 編輯器功能](sagemaker-sql-extension-features-editor.md)。
  + 使用 **SQL 執行**元素，您可以執行 SQL 查詢，並視覺化來自 Studio 中 JupyterLab 應用程式筆記本的結果。如需 SQL 執行功能的詳細資訊，請參閱 [JupyterLab SQL 延伸模組的 SQL 執行功能](sagemaker-sql-extension-features-sql-execution.md)。

# 使用 SQL 延伸模組瀏覽資料
<a name="sagemaker-sql-extension-features-data-discovery"></a>

若要開啟 SQL 延伸模組使用者介面 (UI)，請在 Studio 中 JupyterLab 應用程式的導覽窗格中選擇 SQL 延伸模組圖示 (![\[Purple circular icon with a clock symbol representing time or scheduling.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/sqlexplorer/sqlexplorer-icon.png))。左側面板資料探索檢視會展開，並顯示所有預先設定的資料存放區與 Amazon Athena、Amazon Redshift 和 Snowflake 的連線。

從那裡，您可以：
+ 展開特定連線以探索其資料庫、結構描述、資料表或檢視，以及資料欄。
+ 使用 SQL 延伸模組 UI 中的搜尋方塊搜尋特定連線。搜尋會傳回任何其部分符合您所輸入字串的資料庫、結構描述、資料表或檢視。

**注意**  
如果 AWS 您的帳戶中已設定 Athena，您可以在 JupyterLab `default-athena-connection` 應用程式中啟用 。這可讓您執行 Athena 查詢，而不需要手動建立連線。若要啟用預設 Athena 連線：  
請洽詢您的管理員，您的執行角色是否具有存取 Athena 和 AWS Glue 目錄所需的許可。如需所需許可的詳細資訊，請參閱[設定 Athena 的 AWS Glue 連線](sagemaker-sql-extension-datasources-glue-connection.md#sagemaker-sql-extension-athena-glue-connection-config)。
在您的 JupyterLab 應用程式中，導覽至頂端導覽列中的**設定**功能表，並開啟**設定編輯器**功能表。
選擇**資料探索**。
勾選**啟用預設 Athena 連線**的方塊。
如有需要，您可以更新預設 `primary` WorkGroup。

若要從 SQL 延伸模組窗格中的指定連線查詢 JupyterLab 筆記本中的資料庫、結構描述或資料表：
+ 選擇任何資料庫、結構描述或資料表右側的三點圖示 (![\[SQL extension three dots icon.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/sqlexplorer/sqlexplorer-3dots-icon.png))。
+ 從功能表中選取**在筆記本中查詢**。

  這會自動使用相關的 `%%sm_sql` 魔術命令，在 JupyterLab 中填入筆記本儲存格，以連線至資料來源。它也會新增範例 SQL 陳述式，協助您立即開始查詢。您可以使用延伸模組的自動完成和醒目提示功能，進一步精簡 SQL 查詢。如需使用 SQL 延伸模組 SQL 編輯器的詳細資訊，請參閱 [JupyterLab SQL 延伸模組的 SQL 編輯器功能](sagemaker-sql-extension-features-editor.md)。

在資料表層級，三點圖示提供額外選項，讓您選擇**預覽**資料表的中繼資料。

下方的 JupyterLab 筆記本儲存格內容顯示一個範例，指出在 SQL 延伸模組窗格的 `redshift-connection` 資料來源上選取**在筆記本中查詢**功能表時自動產生的內容。

```
%%sm_sql --metastore-id redshift-connection --metastore-type GLUE_CONNECTION

-- Query to list tables from schema 'dev.public'
SHOW TABLES
FROM
  SCHEMA "dev"."public"
```

使用 SQL 延伸模組窗格頂端的*小於*符號 (![\[Icon to clear the SQL extension search box.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/sqlexplorer/sqlexplorer-search-clear.png))，清除搜尋方塊或返回連線清單。

**注意**  
延伸模組會快取您的探索結果，以進行快速存取。如果快取的結果已過期或連線從您的清單中遺失，您可以選擇 SQL 延伸模組面板底部的**重新整理**按鈕來手動重新整理快取。如需連線快取的詳細資訊，請參閱[SQL 延伸模組連線快取](sagemaker-sql-extension-features-connection-caching.md)。

# JupyterLab SQL 延伸模組的 SQL 編輯器功能
<a name="sagemaker-sql-extension-features-editor"></a>

SQL 延伸模組提供魔術命令，可在 JupyterLab 筆記本儲存格內啟用 SQL 編輯器功能。

如果您是 SageMaker Distribution 映像 1.6 版的使用者，您必須透過在 JupyterLab 筆記本中執行 `%load_ext amazon_sagemaker_sql_magic` 來載入 SQL 延伸模組魔術程式庫。這會開啟 SQL 編輯功能。

對於 SageMaker Distribution 映像 1.7 版和更新版本的使用者，不需要任何動作，SQL 延伸模組會自動載入。

一旦載入了延伸模組，請在儲存格開頭新增 `%%sm_sql` 魔術命令，以啟用 SQL 編輯器的下列功能。
+ **連線選擇下拉式清單**：將 `%%sm_sql` 魔術命令新增至儲存格時，下拉式功能表會出現在儲存格頂端，其中包含可用的資料來源連線。選取連線以自動填入查詢該資料來源所需的參數。以下是選取名為 `connection-name` 的連線所產生的 `%%sm_sql` 魔術命令字串範例。

  ```
  %%sm_sql --metastore-type GLUE_CONNECTION --metastore-id connection-name
  ```

  使用 SQL 編輯器的以下功能來建置您的 SQL 查詢，然後執行儲存格來執行查詢。如需 SQL 執行功能的詳細資訊，請參閱 [JupyterLab SQL 延伸模組的 SQL 執行功能](sagemaker-sql-extension-features-sql-execution.md)。
+ **查詢結果下拉式清單**：您可以從連線選擇下拉式功能表旁邊的下拉式功能表中選取結果類型，以指定如何轉譯查詢結果。從下列兩種替代方案中選擇：
  + **儲存格輸出**：(預設) 此選項會在筆記本儲存格輸出區域中顯示查詢的結果。
  + **Pandas Dataframe**：此選項會將查詢結果填入 Pandas DataFrame。額外的輸入方塊可讓您在選擇此選項時命名 DataFrame。
+ **SQL 語法醒目提示**：儲存格會自動依顏色和樣式，以視覺方式區分 SQL 關鍵字、子句、運算子等。這可讓 SQL 程式碼更容易閱讀和理解。關鍵字 (例如 `SELECT`、`FROM`、`WHERE`) 和內建函數 (例如 `SUM` 和 `COUNT`) 或子句 (例如 `GROUP BY`) 等，會以不同的顏色和粗體樣式醒目提示。
+ **SQL 格式**：您可以採取下列其中一種方式，將一致的縮排、大寫、間距和換行套用至群組或個別的 SQL 陳述式和子句。這可讓 SQL 程式碼更容易閱讀和理解。
  + 在 SQL 儲存格上按一下滑鼠右鍵，然後選擇**格式化 SQL**。
  + 當 SQL 儲存格成為焦點時，請在 Windows 上使用 *ALT \$1 F* 捷徑，或在 MacOS 上使用 *Option \$1 F*。
+ **SQL 自動完成**：延伸模組會在您輸入時提供 SQL 關鍵字、函數、資料表名稱、資料欄名稱等的自動建議和完成。當您開始輸入 SQL 關鍵字，例如 `SELECT` 或 `WHERE` 時，延伸模組會顯示快顯視窗，其中包含自動完成字詞的其餘部分。例如，輸入資料表或資料欄名稱時，其會建議比對資料庫結構描述中定義的資料表和資料欄名稱。
**重要**  
若要在 JupyterLab 筆記本中啟用 SQL 自動完成，SageMaker AI Distribution 映像版本 1.6 的使用者必須在終端機中執行下列 `npm install -g vscode-jsonrpc sql-language-server` 命令。安裝完成後，執行 `restart-jupyter-server` 以重新啟動 JupyterLab 伺服器。  
對於 SageMaker Distribution 映像 1.7 版和更新版本的使用者，不需要採取任何動作。

  儲存格提供兩種自動完成已辨識 SQL 關鍵字的方法：
  + 明確調用 (建議)：選擇 **Tab** 鍵以啟動內容感知建議功能表，然後選擇**輸入**以接受建議的項目。
  + 持續提示：儲存格會在您輸入時自動建議完成。
**注意**  
只有在 SQL 關鍵字為大寫時，才會觸發自動完成。例如，輸入 `SEL` 提示 `SELECT`，但輸入 `sel` 不會。
您第一次連線到資料來源時，SQL 自動完成會為資料來源的中繼資料編製索引。此編製索引程序可能需要一些時間才能完成，視您的資料庫大小而定。

# JupyterLab SQL 延伸模組的 SQL 執行功能
<a name="sagemaker-sql-extension-features-sql-execution"></a>

您可以在 JupyterLab 的 SQL 延伸模組中針對連線的資料來源執行 SQL 查詢。下列各節說明在 JupyterLab 筆記本內執行 SQL 查詢的最常見參數：
+ 在[建立簡單的魔術命令連線字串](sagemaker-sql-extension-features-sql-execution-create-connection.md)中建立簡單的連線。
+ 在[在 Pandas DataFrame 中儲存 SQL 查詢結果](sagemaker-sql-extension-features-sql-execution-save-dataframe.md)中將您的查詢結果儲存在 Pandas DataFrame 中。
+ 在[覆寫連線屬性](sagemaker-sql-extension-features-sql-execution-override-connection.md)中覆寫或新增至管理員定義的連線屬性。
+ [使用查詢參數以在 SQL 查詢中提供動態值](sagemaker-sql-extension-features-sql-execution-query-parameters.md).

當您使用 `%%sm_sql` 魔術命令執行儲存格時，SQL 延伸模組引擎會針對魔術命令參數中指定的資料來源，在儲存格中執行 SQL 查詢。

若要查看魔術命令參數和支援格式的詳細資訊，請執行 `%%sm_sql?`。

**重要**  
若要使用 Snowflake，SageMaker Distribution 映像 1.6 版的使用者必須在其 JupyterLab 應用程式的終端機中執行下列 `micromamba install snowflake-connector-python -c conda-forge` 命令來安裝 Snowflake Python 相依性。安裝完成後，在終端機中執行 `restart-jupyter-server` 以重新啟動 JupyterLab 伺服器。  
若為 SageMaker Distribution 映像 1.7 版和更新版本，會預先安裝 Snowflake 相依性。不需採取任何動作。

# 建立簡單的魔術命令連線字串
<a name="sagemaker-sql-extension-features-sql-execution-create-connection"></a>

如果您的管理員已設定與資料來源的連線，請遵循下列步驟，在筆記本儲存格中輕鬆建立連線字串：

1. 開啟使用 `%%sm_sql` 的筆記本儲存格。

1. 從儲存格上方的連線下拉式功能表中選取您所需資料來源的預先設定連線。

1. 這會自動填入查詢該資料來源所需的參數。

或者，您可以在儲存格中指定內嵌連線屬性。

從下拉式選單中選擇連線，可將下列兩個參數插入至預設魔術命令字串。參數包含管理員設定的連線資訊。
+ `--metastore-id`：保留連線參數的連線物件名稱。
+ `--metastore-type`：對應至 `--metastore-id` 的中繼存放區類型。SQL 延伸模組使用 AWS Glue 連線做為連線中繼存放區。此數字會自動設定為 `GLUE_CONNECTION`。

例如，預先設定的 Amazon Athena 資料存放區的連線字串如下所示：

```
%%sm_sql --metastore-id athena-connection-name --metastore-type GLUE_CONNECTION 
```

# 在 Pandas DataFrame 中儲存 SQL 查詢結果
<a name="sagemaker-sql-extension-features-sql-execution-save-dataframe"></a>

您可以將 SQL 查詢的結果儲存在 Pandas DataFrame 中。將查詢結果輸出到 DataFrame 的最簡單方法是使用 [JupyterLab SQL 延伸模組的 SQL 編輯器功能](sagemaker-sql-extension-features-editor.md) 查詢結果下拉式清單，然後選擇 **Pandas Dataframe** 選項。

或者，您可以將參數 `--output '{"format": "DATAFRAME", "dataframe_name": "dataframe_name"}'` 新增至連線字串。

例如，下列查詢會使用 pandas 和 SQL，從 Snowflake `TPCH_SF1` 資料庫中的 `Customer` 資料表擷取餘額最高的客戶詳細資訊：
+ 在此範例中，我們從客戶資料表擷取所有資料，然後將其儲存在名為 `all_customer_data` 的 DataFrame 中。

  ```
  %%sm_sql --output '{"format": "DATAFRAME", "dataframe_name": "all_customer_data"}' --metastore-id snowflake-connection-name --metastore-type GLUE_CONNECTION
  SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER
  ```

  ```
  Saved results to all_customer_data
  ```
+ 接著，我們會從 DataFrame 擷取最高帳戶餘額的詳細資訊。

  ```
  all_customer_data.loc[all_customer_data['C_ACCTBAL'].idxmax()].values
  ```

  ```
  array([61453, 'Customer#000061453', 'RxNgWcyl5RZD4qOYnyT3', 15,
  '25-819-925-1077', Decimal('9999.99'), 'BUILDING','es. carefully regular requests among the blithely pending requests boost slyly alo'],
  dtype=object)
  ```

# 覆寫連線屬性
<a name="sagemaker-sql-extension-features-sql-execution-override-connection"></a>

管理員預先定義的連線定義可能沒有您連線到特定資料存放區所需的確切參數。您可以使用 `--connection-properties` 引數在連線字串中新增或覆寫參數。

依下列優先順序套用引數：

1. 以內嵌引數提供的覆寫連線屬性。

1. 中存在的連線屬性 AWS Secrets Manager。

1. 連線中的 AWS Glue 連線屬性。

如果這三個 (命令列引數、Secrets Manager 和連線) 中都存在相同的連線屬性，則命令列引數中提供的值優先。

如需每個資料來源可用連線屬性的詳細資訊，請參閱[連線參數](sagemaker-sql-extension-connection-properties.md)。

下列範例說明為 Amazon Athena 設定結構描述名稱的連線屬性引數。

```
%%sm_sql --connection-properties '{"schema_name": "athena-db-name"}' --metastore-id athena-connection-name --metastore-type GLUE_CONNECTION
```

# 使用查詢參數以在 SQL 查詢中提供動態值
<a name="sagemaker-sql-extension-features-sql-execution-query-parameters"></a>

查詢參數可以用來在 SQL 查詢中提供動態值。

在下列範例中，我們會將查詢參數傳遞至查詢的 `WHERE` 子句。

```
# How to use '--query-parameters' with ATHENA as a data store
%%sm_sql --metastore-id athena-connection-name --metastore-type GLUE_CONNECTION --query-parameters '{"parameters":{"name_var": "John Smith"}}'
SELECT * FROM my_db.my_schema.my_table WHERE name = (%(name_var)s);
```

# SQL 延伸模組連線快取
<a name="sagemaker-sql-extension-features-connection-caching"></a>

SQL 延伸模組預設為快取連線，以防止為同一組連線屬性建立多個連線。您可以使用 `%sm_sql_manage` 魔術命令來管理快取連線。

下列主題描述如何管理您的快取連線。

**Topics**
+ [建立快取連線](sagemaker-sql-extension-features-create-cached-connection.md)
+ [列出快取連線](sagemaker-sql-extension-features-list-cached-connection.md)
+ [清除快取連線](sagemaker-sql-extension-features-clear-cached-connection.md)
+ [停用快取連線](sagemaker-sql-extension-features-disable-cached-connection.md)

# 建立快取連線
<a name="sagemaker-sql-extension-features-create-cached-connection"></a>

您可以在連線字串的 `--connection-name` 參數中指定連線名稱，以建立快取連線。當針對特定使用案例覆寫多個連線屬性，並且需要重複使用相同的屬性而無需重新輸入它們時，這特別有用。

例如，以下程式碼會使用名稱 `--connection-name my_athena_conn_with_schema` 儲存具有覆寫結構描述連線屬性的 Athena 連線，然後在另一個儲存格中重複使用該連線：

```
%%sm_sql --connection-name my_athena_conn_with_schema --connection-properties '{"schema_name": "sm-sql-private-beta-db"}' --metastore-id sm-sql-private-beta-athena-connection --metastore-type GLUE_CONNECTION 
SELECT * FROM "covid_table" LIMIT 2
```

```
%%sm_sql --connection-name my_athena_conn_with_schema
SELECT * FROM "covid_table" LIMIT 2
```

# 列出快取連線
<a name="sagemaker-sql-extension-features-list-cached-connection"></a>

您可以執行下列命令來列出快取連線：

```
%sm_sql_manage --list-cached-connections
```

# 清除快取連線
<a name="sagemaker-sql-extension-features-clear-cached-connection"></a>

若要清除所有快取連線，請執行下列命令：

```
%sm_sql_manage --clear-cached-connections
```

# 停用快取連線
<a name="sagemaker-sql-extension-features-disable-cached-connection"></a>

若要停用連線快取，請執行下列命令：

```
%sm_sql_manage --set-connection-reuse False
```

# 設定 Studio 與資料來源之間的網路存取 (適用於管理員)
<a name="sagemaker-sql-extension-networking"></a>

本節提供管理員如何設定網路以在 Amazon SageMaker Studio 與 [Amazon Redshift](https://aws.amazon.com/redshift/) 或 [Amazon Athena](https://aws.amazon.com/athena/) 之間啟用通訊的相關資訊，無論是在私有 Amazon VPC 內還是透過網際網路。聯網指示會根據 Studio 網域與資料存放區是在私有 [Amazon 虛擬私有雲端](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) (VPC) 內部署，還是透過網際網路進行通訊而有所不同。

根據預設，Studio 會在具有[網際網路存取](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-and-internet-access.html#studio-notebooks-and-internet-access-default)的 AWS 受管 VPC 中執行。使用網際網路連線時，Studio 會透過網際網路存取 AWS 資源，例如 Amazon S3 儲存貯體。不過，如果您有安全要求來控制對資料和任務容器的存取，建議您設定 Studio 和資料存放區 (Amazon Redshift 或 Athena)，以便無法透過網際網路存取資料和容器。若要控制對資源的存取或在沒有公有網際網路存取的情況下執行 Studio，您可以在加入 [Amazon SageMaker AI 網域](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio-onboard.html)時指定 `VPC only` 網路存取類型。在此案例，Studio 會透過私有 [VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)與其他 AWS 服務建立連線。如需在 `VPC only` 模式下設定 Studio 的相關資訊，請參閱[將 Studio 連線至 VPC 中的外部資源](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-and-internet-access.html#studio-notebooks-and-internet-access-vpc-only)。

**注意**  
若要連線至 Snowflake，Studio 網域的 VPC 必須具有網際網路存取權。

前兩節描述如何確保 Studio 網域與 VPC 中資料存放區之間的通訊，而無需公有網際網路存取權。最後一節涵蓋如何確保 Studio 與資料存放區之間使用網際網路連線進行通訊。在沒有網際網路存取權的情況下連線 Studio 和資料存放區之前，請確定為 Amazon Simple Storage Service、Amazon Redshift 或 Athena、SageMaker AI，以及 Amazon CloudWatch 和 AWS CloudTrail (記錄和監控) 建立端點。
+ 如果 Studio 和資料存放區位於不同的 VPC 中，無論是在同一 AWS 帳戶中還是個別的帳戶中，請參閱 [Studio 和資料存放區部署在個別的 VPC 中](#sagemaker-sql-extension-networking-cross-vpc)。
+ 如果 Studio 和資料存放區位於相同的 VPC 中，請參閱 [Studio 和資料存放區部署在相同的 VPC 中](#sagemaker-sql-extension-networking-same-vpc)。
+ 如果您選擇透過公有網際網路連線 Studio 和資料存放區，請參閱[Studio 和資料存放區透過公有網際網路進行通訊](#sagemaker-sql-extension-networking-internet)。

## Studio 和資料存放區部署在個別的 VPC 中
<a name="sagemaker-sql-extension-networking-cross-vpc"></a>

若要允許 Studio 與部署在不同 VPC 中的資料存放區之間的通訊：

1. 首先，透過 VPC 對等互連連線您的 VPC。

1. 更新每個 VPC 中的路由表，以允許 Studio 子網路與資料存放區子網路之間的雙向網路流量。

1. 設定您的安全群組以允許傳入和傳出流量。

無論 Studio 和資料存放區部署在單一 AWS 帳戶或跨不同 AWS 帳戶，組態步驟都相同。

1. 

**VPC 對等互連**

   建立 [VPC 對等互連](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html)以促進兩個 VPC (Studio 與資料存放區) 之間的聯網。

   1. 從 Studio 帳戶中，在 VPC 儀表板上，選擇**對等互連**，然後選擇**建立對等互連**。

   1. 建立您的請求，使 Studio VPC 與資料存放區 VPC 對等互連。在另一個 AWS 帳戶中請求對等互連時，請在**選取要對等互連的另一個 VPC** 中選擇另一個**帳戶**。

      對於跨帳戶對等互連，管理員必須接受來自 SQL 引擎帳戶的請求。

      當對等私有子網路時，您應該在 VPC 對等連線層級啟用私有 IP DNS 解析。

1. 

**路由表**

   設定路由以允許 Studio 與資料存放區 VPC 子網路之間的雙向網路流量。

   在您建立對等互連之後，管理員 (在進行跨帳戶存取的每個帳戶上) 可以將路由新增至私有子網路路由表，以在 Studio 與資料存放區 VPC 子網路之間路由流量。您可以透過前往 VPC 儀表板每個 VPC 的**路由表**區段來定義這些路由。

1. 

**Security groups (安全群組)**

   最後，Studio 網域 VPC 的安全群組必須允許傳出流量，而資料存放區 VPC 的安全群組必須允許資料存放區連接埠上來自 Studio VPC 安全群組的傳入流量。

## Studio 和資料存放區部署在相同的 VPC 中
<a name="sagemaker-sql-extension-networking-same-vpc"></a>

 如果 Studio 和資料存放區位於相同 VPC 的不同私有子網路中，請在每個私有子網路的路由表中新增路由。路由應允許流量在 Studio 子網路與資料存放區子網路之間流動。您可以透過前往 VPC 儀表板每個 VPC 的**路由表**區段來定義這些路由。如果您已在相同的 VPC 和相同的子網路中部署 Studio 和資料存放區，則不需要路由流量。

無論任何路由表更新為何，Studio 網域 VPC 的安全群組都必須允許傳出流量，而資料存放區 VPC 的安全群組必須允許其連接埠上來自 Studio VPC 安全群組的傳入流量。

## Studio 和資料存放區透過公有網際網路進行通訊
<a name="sagemaker-sql-extension-networking-internet"></a>

根據預設，Studio 提供了一個網路介面，允許透過與 Studio 網域相關聯的 VPC 中的網際網路閘道與網際網路進行通訊。如果您選擇透過公有網際網路連線至資料存放區，則資料存放區需要接受其連接埠上的傳入流量。

必須使用 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-working-with)，允許多個 VPC 私有子網路中的執行個體在存取網際網路時共用[網際網路閘道](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)所提供的單一公有 IP 位址。

**注意**  
針對傳入流量開啟的每個連接埠都代表潛在的安全風險。請詳閱自訂安全群組，以確保您將漏洞數量降至最低。

# SQL 延伸模組資料來源連線
<a name="sagemaker-sql-extension-datasources-connection"></a>

在 JupyterLab 筆記本中使用 SQL 擴充功能之前，管理員或使用者必須建立與其資料來源的 AWS Glue 連線。SQL 延伸模組允許連線至資料來源，例如 Amazon Redshift Amazon Athena 或 Snowflake。

若要設定連線，管理員必須先確保其網路組態允許 Studio 與資料來源之間的通訊，然後授予必要的 IAM 許可，以允許 Studio 存取資料來源。如需管理員如何設定聯網的相關資訊，請參閱[設定 Studio 與資料來源之間的網路存取 (適用於管理員)](sagemaker-sql-extension-networking.md)。如需必須設定哪些政策的相關資訊，請參閱[設定 IAM 許可以存取資料來源 (適用於管理員)](sagemaker-sql-extension-datasources-connection-permissions.md)。一旦設定了連線，資料科學家就可以在其 JupyterLab 筆記本中使用 SQL 延伸模組，來瀏覽和查詢連線的資料來源。

**注意**  
我們建議您將資料庫存取憑證儲存為 Secrets Manager 中的秘密。若要了解如何建立用於儲存 Amazon Redshift 或 Snowflake 存取憑證的秘密，請參閱[在 Secrets Manager 中建立資料庫存取憑證的秘密](sagemaker-sql-extension-glue-connection-secrets.md)。

本節說明如何設定 AWS Glue 連線，並列出 Studio JupyterLab 應用程式透過連線存取資料所需的 IAM 許可。

**注意**  
[Amazon SageMaker Assets](sm-assets.md) 將 [Amazon DataZone](https://docs.aws.amazon.com/datazone/latest/userguide/what-is-datazone.html) 與 Studio 整合。它包含 SageMaker AI 藍圖，其中可讓管理員從 Amazon DataZone 網域內的 Amazon DataZone 專案建立 Studio 環境。  
使用 SQL 擴充功能時，從使用藍圖建立的 Studio 網域啟動的 JupyterLab 應用程式使用者可以自動存取其 Amazon DataZone 目錄中資料資產的 AWS Glue 連線。這允許查詢這些資料來源，而無需手動設定連線。

**Topics**
+ [在 Secrets Manager 中建立資料庫存取憑證的秘密](sagemaker-sql-extension-glue-connection-secrets.md)
+ [建立 AWS Glue 連線 （適用於管理員）](sagemaker-sql-extension-datasources-glue-connection.md)
+ [建立使用者定義的 AWS Glue 連線](sagemaker-sql-extension-datasources-glue-connection-user-defined.md)
+ [設定 IAM 許可以存取資料來源 (適用於管理員)](sagemaker-sql-extension-datasources-connection-permissions.md)

# 在 Secrets Manager 中建立資料庫存取憑證的秘密
<a name="sagemaker-sql-extension-glue-connection-secrets"></a>

建立連線之前，建議您將資料庫存取憑證儲存為 中的秘密 AWS Secrets Manager。或者，您可以根據透過 AWS Identity and Access Management (IAM) 許可政策授予的許可來產生臨時資料庫登入資料，以管理使用者對資料庫的存取。如需詳細資訊，請參閱[使用 IAM 驗證來產生資料庫使用者憑證](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-user-credentials.html)。

## 建立 Amazon Redshift 存取憑證的機密
<a name="sagemaker-sql-extension-redshift-secret"></a>

**在 AWS Secrets Manager 中存放 Amazon Redshift 資訊**

1. 從 AWS 管理主控台導覽至 Secrets Manager。

1. 選擇**儲存新機密**。

1. 在**機密類型**下，選擇 **Amazon Redshift 的憑證**。

1. 輸入啟動 Amazon Redshift 叢集時設定的管理員使用者名稱和密碼。

1. 選取與機密相關聯的 Amazon Redshift 叢集。

1. 為您的機密命名。

1. 其餘設定可保留為初始建立秘密時的預設值，或視需要自訂。

1. 建立機密並擷取其 ARN。

## 建立 Amazon Redshift Serverless 存取憑證的秘密
<a name="sagemaker-sql-extension-redshift-serverless-secret"></a>

**如果您需要連線至 Amazon Redshift Serverless，請遵循下列步驟**

1. 從 AWS 管理主控台導覽至 Secrets Manager。

1. 選擇**儲存新機密**。

1. 在**機密類型**下，選擇**其他類型的機密**。

1. 在**金鑰/值對**中，選擇**純文字**，然後複製下列 JSON 內容。將使用者和密碼取代為其實際值：

   ```
   {
     "user": "redshift_user",
     "password": "redshift_password"
   }
   ```

1. 建立秘密並擷取其 ARN。

1. 在 JupyterLab 的 SQL 延伸模組中建立新的連線時，請視需要提供所有其他 Amazon Redshift 連線參數。

## 建立 Snowflake 存取憑證的機密
<a name="sagemaker-sql-extension-snowflake-secret"></a>

本節提供有關 Snowflake 特定 JSON 定義檔案中秘密和連線屬性的詳細資訊。建立您的連線之前，建議您將 Snowflake 存取憑證儲存為 Secrets Manager 中的秘密。

**在 Secrets Manager 中存放 Amazon Redshift 資訊**

1. 從 AWS 管理主控台導覽至 Secrets Manager。

1. 選擇**儲存新機密**。

1. 在**機密類型**下，選擇**其他類型的機密**。

1. 在金鑰/值對中，選擇**純文字**，然後複製下列 JSON 內容。將 `user`、`password` 和 `account` 取代為其值。

   ```
   {
       "user":"snowflake_user",
       "password":"snowflake_password",
       "account":"account_id"
   }
   ```

1. 為機密命名。

1. 其餘設定可保留為初始建立秘密時的預設值，或視需要自訂。

1. 建立機密並擷取其 ARN。

# 建立 AWS Glue 連線 （適用於管理員）
<a name="sagemaker-sql-extension-datasources-glue-connection"></a>

若要搭配 SQL 擴充功能使用資料來源，管理員可以為每個資料來源設定 AWS Glue 連線。這些連線會存放必要的組態詳細資訊，以存取資料來源並與其互動。一旦建立了連線並授予[適當的許可](sagemaker-sql-extension-datasources-connection-permissions.md)，共用相同執行角色的 [Amazon SageMaker Studio 空間](studio-updated-spaces.md) 的所有使用者都可看見連線。

若要建立這些連線：
+ 首先，建立一個 JSON 檔案，定義每個資料來源的連線屬性。JSON 檔案包含詳細資訊，例如資料來源識別符、存取憑證和其他相關組態參數，以透過 AWS Glue 連線存取資料來源。
+ 然後使用 AWS Command Line Interface (AWS CLI) 建立 AWS Glue 連線，將 JSON 檔案做為參數傳遞。 AWS CLI 命令會從 JSON 檔案讀取連線詳細資訊，並建立適當的連線。
**注意**  
SQL 延伸模組僅支援使用 AWS CLI 建立連線。

建立 AWS Glue 連線之前，請確定您完成下列步驟：
+ 安裝和設定 AWS Command Line Interface (AWS CLI)。如需如何安裝和設定 的詳細資訊 AWS CLI，請參閱[關於第 2 AWS CLI 版](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)。確定用於設定 之 IAM 使用者或角色的存取金鑰和字符 AWS CLI 具有建立 AWS Glue 連線所需的許可。否則，新增一個允許 `glue:CreateConnection` 動作的政策。
+ 了解如何使用 AWS Secrets Manager。我們建議您使用 Secrets Manager 為資料存放區提供連線憑證和任何其他敏感資訊。如需使用 Secrets Manager 存放登入資料的詳細資訊，請參閱在 [AWS Secrets Manager 中存放連線登入](https://docs.aws.amazon.com/glue/latest/dg/connection-properties-secrets-manager.html)資料。

## 建立連線定義 JSON 檔案
<a name="sagemaker-sql-extension-glue-connection-config"></a>

若要建立 AWS Glue 連線定義檔案，請建立 JSON 檔案來定義已安裝和設定 之機器上的連線詳細資訊 AWS CLI。針對此範例，將檔案命名為 `sagemaker-sql-connection.json`。

連線定義檔案應遵循下列一般格式：
+ **Name** 是連線的名稱。
+ **Description** 是連線的文字描述。
+ **ConnectionType** 是連線的類型。選擇 `REDSHIFT`、`ATHENA` 或 `SNOWFLAKE`。
+ **ConnectionProperties** 是連線屬性的鍵值對映射，例如 AWS 秘密的 ARN 或資料庫的名稱。

```
{
    "ConnectionInput": {
        "Name": <GLUE_CONNECTION_NAME>,
        "Description": <GLUE_CONNECTION_DESCRIPTION>,
        "ConnectionType": "REDSHIFT | ATHENA | SNOWFLAKE",
        "ConnectionProperties": {
            "PythonProperties": "{\"aws_secret_arn\": <SECRET_ARN>, \"database\": <...>}"
        }
    }
}
```

**注意**  
`ConnectionProperties` 金鑰內的屬性由字串化金鑰/值對組成。以反斜線 (`\`) 字元逸出金鑰或值中使用的任何雙引號。
Secrets Manager 中可用的所有屬性也可以直接透過 `PythonProperties` 提供。不過，不建議在 `PythonProperties` 中包含密碼等敏感欄位。反之，偏好的方法是使用 Secrets Manager。

您可以在下列各節中找到不同資料存放區特有的連線定義檔案。

每個資料來源的連線定義檔案都包含從 SQL 延伸模組連線至這些資料存放區所需的特定屬性和組態。如需定義與該來源連線的詳細資訊，請參閱適當的一節。
+ 若要建立 Amazon Redshift 的 AWS Glue 連線，請參閱 中的範例定義檔案[設定 Amazon Redshift 的 AWS Glue 連線](#sagemaker-sql-extension-redshift-glue-connection-config)。
+ 若要建立 Amazon Athena 的 AWS Glue 連線，請參閱 中的範例定義檔案[設定 Athena 的 AWS Glue 連線](#sagemaker-sql-extension-athena-glue-connection-config)。
+ 若要建立 Snowflake 的 AWS Glue 連線，請參閱 中的範例定義檔案[設定 Snowflake 的 AWS Glue 連線](#sagemaker-sql-extension-snowflake-glue-connection-config)。

### 設定 Amazon Redshift 的 AWS Glue 連線
<a name="sagemaker-sql-extension-redshift-glue-connection-config"></a>

本節提供有關 Amazon Redshift 特定 JSON 定義檔案中秘密和連線屬性的詳細資訊。在建立您的連線組態檔案之前，建議您將 Amazon Redshift 存取憑證儲存為 Secrets Manager 中的秘密。或者，您可以根據透過 AWS Identity and Access Management (IAM) 許可政策授予的許可來產生臨時資料庫憑證，以管理使用者對 Amazon Redshift 資料庫的存取。如需詳細資訊，請參閱[使用 IAM 身分驗證產生資料庫使用者登入資料](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-user-credentials.html)。

#### 建立 Amazon Redshift 存取憑證的機密
<a name="sagemaker-sql-extension-redshift-secret"></a>

**在 AWS Secrets Manager 中存放 Amazon Redshift 資訊**

1. 從 AWS 主控台導覽至 Secrets Manager。

1. 選擇**儲存新機密**。

1. 在**機密類型**下，選擇 **Amazon Redshift 的憑證**。

1. 輸入啟動 Amazon Redshift 叢集時設定的管理員使用者名稱和密碼。

1. 選取與機密相關聯的 Amazon Redshift 叢集。

1. 為您的機密命名。

1. 其餘設定可保留為初始建立秘密時的預設值，或視需要自訂。

1. 建立機密並擷取其 ARN。

#### 設定 Amazon Redshift 的 AWS Glue 連線
<a name="sagemaker-sql-extension-redshift-glue-connection-creation"></a>

SQL 擴充功能會使用自訂連線連線至資料來源 AWS Glue 。如需建立 AWS Glue 連線以連接資料來源的一般資訊，請參閱 [建立 AWS Glue 連線 （適用於管理員）](#sagemaker-sql-extension-datasources-glue-connection)。下列範例是連線至 Amazon Redshift 的範例 AWS Glue 連線定義。

在建立新連線之前，請謹記下列建議：
+ `PythonProperties` 金鑰內的屬性由字串化金鑰/值對組成。以反斜線 (`\`) 字元逸出金鑰或值中使用的任何雙引號。
+ 在連線定義檔案中，輸入連線的名稱和描述，將 `aws_secret_arn` 中秘密的 ARN 取代為先前所建立秘密的 ARN。
+ 確定上述連線定義中透過其名稱宣告的資料庫符合叢集資料庫。您可以驗證這一點，方法是前往 [Amazon Redshift 主控台](https://console.aws.amazon.com/redshiftv2/)上的叢集詳細資訊頁面，並在**屬性**區段中的**資料庫組態**下驗證資料庫名稱。
+ 如需其他參數，請參閱 [Amazon Redshift 連線參數](sagemaker-sql-extension-connection-properties.md#sagemaker-sql-extension-connection-properties-redshift)中 Amazon Redshift 支援的連線屬性清單。
**注意**  
根據預設，除非連線屬性中的 `auto_commit` 設定為 `true`，否則 Python 的 SQL 延伸模組連接器會在交易中執行所有查詢。
您可以將包括 `database` 名稱在內的所有連線參數新增至秘密。

```
{
  "ConnectionInput": {
      "Name": "Redshift connection name",
      "Description": "Redshift connection description",
      "ConnectionType": "REDSHIFT",
      "ConnectionProperties": {
          "PythonProperties":"{\"aws_secret_arn\": \"arn:aws:secretsmanager:region:account_id:secret:secret_name\", \"database\":\"database_name\", \"database_metadata_current_db_only\": false}"
      }
  }
}
```

更新定義檔案後，請依照 中的步驟[建立 AWS Glue 連線](#sagemaker-sql-extension-datasources-glue-connection-creation)建立 AWS Glue 連線。

### 設定 Athena 的 AWS Glue 連線
<a name="sagemaker-sql-extension-athena-glue-connection-config"></a>

本節提供有關 Athena 特定 JSON 定義檔案中連線屬性的詳細資訊。

#### 設定 Athena 的 AWS Glue 連線
<a name="sagemaker-sql-extension-athena-glue-connection-creation"></a>

SQL 擴充功能會使用自訂連線連線至資料來源 AWS Glue 。如需建立 AWS Glue 連線以連接資料來源的一般資訊，請參閱 [建立 AWS Glue 連線 （適用於管理員）](#sagemaker-sql-extension-datasources-glue-connection)。下列範例是連線至 Athena 的範例 AWS Glue 連線定義。

在建立新連線之前，請謹記下列建議：
+ `ConnectionProperties` 金鑰內的屬性由字串化金鑰/值對組成。以反斜線 (`\`) 字元逸出金鑰或值中使用的任何雙引號。
+ 在連線定義檔案中，輸入連線的名稱和描述、將 `catalog_name` 取代為目錄的名稱、將 `s3_staging_dir` 取代為 Amazon S3 儲存貯體中輸出目錄的 Amazon S3 URI (統一資源識別碼)，並將 `region_name` 取代為 Amazon S3 儲存貯體的區域。
+ 如需其他參數，請參閱 [Athena 連線參數](sagemaker-sql-extension-connection-properties.md#sagemaker-sql-extension-connection-properties-athena)中 Athena 支援的連線屬性清單。
**注意**  
您可以將包括 `catalog_name` 或 `s3_staging_dir` 在內的所有連線參數新增至秘密。
如果您指定 `workgroup`，則不需要指定 `s3_staging_dir`。

```
{
    "ConnectionInput": {
        "Name": "Athena connection name",
        "Description": "Athena connection description",
        "ConnectionType": "ATHENA",
        "ConnectionProperties": {
            "PythonProperties": "{\"catalog_name\": \"catalog_name\",\"s3_staging_dir\": \"s3://amzn-s3-demo-bucket_in_same_region/output_query_results_dir/\", \"region_name\": \"region\"}"
        }
    }
}
```

更新定義檔案後，請依照 中的步驟[建立 AWS Glue 連線](#sagemaker-sql-extension-datasources-glue-connection-creation)建立 AWS Glue 連線。

### 設定 Snowflake 的 AWS Glue 連線
<a name="sagemaker-sql-extension-snowflake-glue-connection-config"></a>

本節提供有關 Snowflake 特定 JSON 定義檔案中秘密和連線屬性的詳細資訊。在建立您的連線組態檔案之前，建議您將 Snowflake 存取憑證儲存為 Secrets Manager 中的秘密。

#### 建立 Snowflake 存取憑證的機密
<a name="sagemaker-sql-extension-snowflake-secret"></a>

**在 Secrets Manager 中存放 Amazon Redshift 資訊**

1. 從 AWS 主控台導覽至 AWS Secrets Manager。

1. 選擇**儲存新機密**。

1. 在**機密類型**下，選擇**其他類型的機密**。

1. 在金鑰/值對中，選擇**純文字**，然後複製下列 JSON 內容。將 `user`、`password` 和 `account` 取代為其值。

   ```
   {
       "user":"snowflake_user",
       "password":"snowflake_password",
       "account":"account_id"
   }
   ```

1. 為機密命名。

1. 其餘設定可保留為初始建立秘密時的預設值，或視需要自訂。

1. 建立機密並擷取其 ARN。

#### 設定 Snowflake 的 AWS Glue 連線
<a name="sagemaker-sql-extension-snowflake-glue-connection-creation"></a>

SQL 擴充功能會使用自訂連線連線至資料來源 AWS Glue 。如需建立 AWS Glue 連線以連接資料來源的一般資訊，請參閱 [建立 AWS Glue 連線 （適用於管理員）](#sagemaker-sql-extension-datasources-glue-connection)。下列範例是連線至 Snowflake 的範例 AWS Glue 連線定義。

在建立新連線之前，請謹記下列建議：
+ `ConnectionProperties` 金鑰內的屬性由字串化金鑰/值對組成。以反斜線 (`\`) 字元逸出金鑰或值中使用的任何雙引號。
+ 在連線定義檔案中，輸入連線的名稱和描述，然後將 `aws_secret_arn` 中秘密的 ARN 取代為先前所建立秘密的 ARN，以及 `account` 中您的帳戶 ID。
+ 如需其他參數，請參閱 [Snowflake 連線參數](sagemaker-sql-extension-connection-properties.md#sagemaker-sql-extension-connection-properties-snowflake)中 Snowflake 支援的連線屬性清單。
**注意**  
您可以將包括 `account` 在內的所有連線參數新增至秘密。

```
{
    "ConnectionInput": {
        "Name": "Snowflake connection name",
        "Description": "Snowflake connection description",
        "ConnectionType": "SNOWFLAKE",
        "ConnectionProperties": {
            "PythonProperties":  "{\"aws_secret_arn\": \"arn:aws:secretsmanager:region:account_id:secret:secret_name\", \"account\":\"account_id\"}"}"
        }
    }
}
```

更新定義檔案後，請依照 中的步驟[建立 AWS Glue 連線](#sagemaker-sql-extension-datasources-glue-connection-creation)建立 AWS Glue 連線。

## 建立 AWS Glue 連線
<a name="sagemaker-sql-extension-datasources-glue-connection-creation"></a>

若要透過 建立 AWS Glue 連線 AWS CLI，請使用您的連線定義檔案並執行此 AWS CLI 命令。將`region`預留位置取代為您的 AWS 區域名稱，並提供定義檔案的本機路徑。

**注意**  
組態定義檔案的路徑前面必須有 `file://`。

```
aws --region region glue create-connection --cli-input-json file://path_to_file/sagemaker-sql-connection.json
```

執行下列命令，確認 AWS Glue 已建立連線，並檢查您的連線名稱。

```
aws --region region glue get-connections
```

或者，您可以更新現有的 AWS Glue 連線，如下所示：
+ 視需要修改 AWS Glue 連線定義檔案。
+ 執行下列命令來更新連線。

  ```
  aws --region region glue update-connection --name glue_connection_name --cli-input-json file://path_to_file/sagemaker-sql-connection.json
  ```

# 建立使用者定義的 AWS Glue 連線
<a name="sagemaker-sql-extension-datasources-glue-connection-user-defined"></a>

**注意**  
使用者透過 SQL 延伸 UI 建立的所有 AWS Glue 連線都會自動標記下列項目：  
`UserProfile: user-profile-name`
`AppType: "JL"`
這些標籤套用到透過 SQL 延伸 UI 建立的 AWS Glue 連線有兩種用途。`"UserProfile": user-profile-name` 標籤允許識別建立 AWS Glue 連線的特定使用者設定檔，提供負責連線之使用者的可見性。`"AppType": "JL"` 標籤會分類連線的來源，將其與 JupyterLab 應用程式建立關聯。這可讓這些連線與可能已透過其他方式建立的連線有所區別，例如 AWS CLI。

## 先決條件
<a name="sagemaker-sql-extension-datasources-glue-connection-user-defined-prerequisites"></a>

使用 SQL 擴充功能 UI 建立 AWS Glue 連線之前，請確定您已完成下列任務：
+ 請您的管理員：
  + 啟用 Studio 網域與您要連線的資料來源之間的網路通訊。若要了解聯網要求，請參閱 [設定 Studio 與資料來源之間的網路存取 (適用於管理員)](sagemaker-sql-extension-networking.md)。
  + 確保已設定必要的 IAM 許可，用於管理 AWS Glue 連線和對 Secrets Manager 的存取。若要了解必要的許可，請參閱[設定 IAM 許可以存取資料來源 (適用於管理員)](sagemaker-sql-extension-datasources-connection-permissions.md)。
**注意**  
管理員可以限制使用者只能存取使用者在 JupyterLab 應用程式內建立的連線。這可以透過設定範圍縮小至使用者設定檔的[標籤型存取控制](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-sql-extension-datasources-connection-permissions.html#user-defined-connections-permissions)來完成此操作。
+ 檢查連線屬性和指示，以在[在 Secrets Manager 中建立資料庫存取憑證的秘密](sagemaker-sql-extension-glue-connection-secrets.md)中為您的資料來源建立秘密。

## 使用者工作流程
<a name="sagemaker-sql-extension-datasources-glue-connection-user-defined-steps"></a>

下列步驟會在建立使用者連線時提供使用者工作流程：

1. **選取資料來源類型**：選擇*新增連線*圖示時，會開啟表單，提示使用者選取要連線的資料來源類型，例如 Amazon Redshift、Athena 或 Snowflake。

1. **提供連線屬性**：根據選取的資料來源，動態載入相關的連線屬性。表單會指出所選資料來源的必要或選用欄位。若要了解資料來源的可用屬性，請參閱[連線參數](sagemaker-sql-extension-connection-properties.md)。

1. **選取您的 AWS Secrets Manager ARN**：對於 Amazon Redshift 和 Snowflake 資料來源，系統會提示使用者選取儲存敏感資訊的 AWS Secrets Manager ARN，例如使用者名稱和密碼。若要了解如何為您的資料來源建立秘密，請參閱[在 Secrets Manager 中建立資料庫存取憑證的秘密](sagemaker-sql-extension-glue-connection-secrets.md)。

1. **儲存您的連線詳細資訊**：按一下**建立**時，提供的連線屬性會儲存為 AWS Glue 。連線。

1. **測試您的連線**：如果連線成功，則相關聯的資料庫和資料表會在瀏覽器中變成可見的。如果連線失敗，則會顯示一則錯誤訊息，提示使用者檢閱和更正連線詳細資訊。

1. **熟悉 SQL 延伸模組功能**：若要了解延伸模組的功能，請參閱 [SQL 延伸功能和用法](sagemaker-sql-extension-features.md)。

1. **(選用) 更新或刪除使用者建立的連線**：如果使用者已獲授予必要的許可，他們可以更新或刪除他們已建立的連線。若要進一步了解必要的許可，請參閱[使用者定義的連線需要 IAM 許可](sagemaker-sql-extension-datasources-connection-permissions.md#user-defined-connections-permissions)。

# 設定 IAM 許可以存取資料來源 (適用於管理員)
<a name="sagemaker-sql-extension-datasources-connection-permissions"></a>

管理員應確保 JupyterLab 應用程式使用的執行角色具有必要的 AWS IAM 許可，以透過設定的 AWS Glue 連線存取資料。
+ **管理員使用 建立的連線 AWS CLI**：若要檢視[管理員建立的](sagemaker-sql-extension-datasources-glue-connection.md) AWS Glue 連線並存取其資料，使用者需要讓管理員將特定許可連接到其 Studio 中 JupyterLab 應用程式所使用的 SageMaker AI 執行角色。這包括對 AWS Glue的存取、Secrets Manager 和資料庫特定的許可。共用執行角色的所有應用程式都可以看到管理員建立的連線，因為此執行角色獲授予檢視特定 AWS Glue 目錄或資料庫的許可。若要了解每種資料來源類型的必要許可清單，請參閱[管理員定義的連線需要 IAM 許可](#admin-defined-connections-permissions)中管理員定義的連線許可。
+ **使用者在 JupyterLab 中使用 SQL 延伸模組 UI 建立的連線**：除非連線的可見性範圍縮小至使用者建立的連線，否則也會列出共用相同執行角色的[使用者設定檔建立的](sagemaker-sql-extension-datasources-glue-connection-user-defined.md)連線。使用者建立的連線會透過建立它們的使用者設定檔加以標記。若要限制僅建立連線的使用者才能檢視、更新或刪除這些使用者建立的連線，管理員可以將其他標籤型存取控制限制新增至執行角色 IAM 許可。若要了解所需的其他標籤型存取控制，請參閱[使用者定義的連線需要 IAM 許可](#user-defined-connections-permissions)。

## 管理員定義的連線需要 IAM 許可
<a name="admin-defined-connections-permissions"></a>

若要授予 Studio 中 JupyterLab 應用程式使用的 SageMaker AI 執行角色透過 AWS Glue 連線存取資料來源，請將下列內嵌政策連接至角色。

若要檢視每個資料來源或驗證方法的特定許可和政策詳細資訊，請選擇下面的相關連線類型。

**注意**  
建議您將政策的許可限制為僅必要的資源和動作。  
若要縮小政策範圍並授予最低權限存取，請將政策中的 `"Resource": ["*"]` 萬用字元取代為需要存取的確切資源的特定 ARN。如需如何控制資源存取的詳細資訊，請參閱[使用精細 ARN 許可微調 AWS 資源存取](#resource-access-control)。

### 所有連線類型
<a name="datasources-connection-permissions-all"></a>

**注意**  
我們強烈建議將此政策範圍縮小到僅限必要的動作和資源。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetS3AndDataSourcesMetadata",
            "Effect": "Allow",
            "Action": [
                "glue:GetDatabases",
                "glue:GetSchema",
                "glue:GetTables",
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation",
                "glue:GetDatabase",
                "glue:GetTable",
                "glue:ListSchemas",
                "glue:GetPartitions"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "arn:aws:glue:us-east-1:111122223333:catalog",
    "arn:aws:glue:us-east-1:111122223333:connection/*"
            ]
        },
        {
            "Sid": "ExecuteQueries",
            "Effect": "Allow",
            "Action": [
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:ListTableMetadata",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:RunQuery",
                "athena:StartSession",
                "athena:GetQueryResults",
                "athena:ListWorkGroups",
                "s3:ListMultipartUploadParts",
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "athena:GetDataCatalog",
                "s3:AbortMultipartUpload",
                "s3:GetObject",
                "s3:PutObject",
                "athena:GetWorkGroup"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "arn:aws:athena:us-east-1:111122223333:workgroup/workgroup-name"
            ]
        },
        {
            "Sid": "GetGlueConnections",
            "Effect": "Allow",
            "Action": [
                "glue:GetConnections",
                "glue:GetConnection"
            ],
            "Resource": [
                "arn:aws:glue:us-east-1:111122223333:catalog",
                "arn:aws:glue:us-east-1:111122223333:connection/*"
            ]
        },
        {
            "Sid": "GetSecrets",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret-name"
            ]
        },
        {
            "Sid": "GetClusterCredentials",
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:111122223333:cluster:cluster-name"
            ]
        }
    ]
}
```

------

### Athena
<a name="datasources-connection-permissions-athena"></a>

**注意**  
我們強烈建議將此政策的範圍縮小到僅所需的資源。

如需詳細資訊，請參閱 [Athena 文件](https://docs.aws.amazon.com/athena/latest/ug/federated-query-iam-access.html)中的*範例 IAM 許可政策*。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetS3AndDataSourcesMetadata",
            "Effect": "Allow",
            "Action": [
                "glue:GetDatabases",
                "glue:GetSchema",
                "glue:GetTables",
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation",
                "glue:GetDatabase",
                "glue:GetTable",
                "glue:ListSchemas",
                "glue:GetPartitions"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*",                
                "arn:aws:glue:us-east-2:111122223333:catalog",
                "arn:aws:glue:us-east-2:111122223333:connection/*"
            ]
        },
        {
            "Sid": "ExecuteAthenaQueries",
            "Effect": "Allow",
            "Action": [
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:ListTableMetadata",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:RunQuery",
                "athena:StartSession",
                "athena:GetQueryResults",
                "athena:ListWorkGroups",
                "s3:ListMultipartUploadParts",
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "athena:GetDataCatalog",
                "s3:AbortMultipartUpload",
                "s3:GetObject",
                "s3:PutObject",
                "athena:GetWorkGroup"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "arn:aws:athena:us-east-2:111122223333:workgroup/workgroup-name"
            ]
        },
        {
            "Sid": "GetGlueConnections",
            "Effect": "Allow",
            "Action": [
                "glue:GetConnections",
                "glue:GetConnection"
            ],
            "Resource": [
                "arn:aws:glue:us-east-2:111122223333:catalog",
                "arn:aws:glue:us-east-2:111122223333:connection/*"
            ]
        },
        {
            "Sid": "GetSecrets",
            "Effect": "Allow",
            "Action": [                
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret-name"       
            ]
        }
    ]
}
```

------

### Amazon Redshift 和 Amazon Redshift Serverless (使用者名稱和密碼驗證) / Snowflake
<a name="datasources-connection-permissions-snowflake-redshift-user-password"></a>

**注意**  
我們強烈建議將此政策的範圍縮小到僅所需的資源。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetS3Metadata",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Sid": "GetGlueConnections",
            "Effect": "Allow",
            "Action": [
                "glue:GetConnections",
                "glue:GetConnection"
            ],
            "Resource": [
                "arn:aws:glue:us-east-2:111122223333:catalog",
                "arn:aws:glue:us-east-2:111122223333:connection/*"
            ]
        },
        {
            "Sid": "GetSecrets",
            "Effect": "Allow",
            "Action": [                
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret-name"            
            ]
        }
    ]
}
```

------

### Amazon Redshift (IAM 驗證)
<a name="datasources-connection-permissions-redshift-iam"></a>

**注意**  
我們強烈建議將此政策的範圍縮小到僅所需的資源。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetS3Metadata",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Sid": "GetGlueConnections",
            "Effect": "Allow",
            "Action": [
                "glue:GetConnections",
                "glue:GetConnection"
            ],
            "Resource": [
                "arn:aws:glue:us-east-1:111122223333:catalog",
                "arn:aws:glue:us-east-1:111122223333:connection/*",
                "arn:aws:glue:us-east-1:111122223333:connection/connection-name"
            ]
        },
        {
            "Sid": "GetSecrets",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret-name",
                "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret-name-with-suffix"
            ]
        },
        {
            "Sid": "GetClusterCredentials",
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:111122223333:cluster:cluster-name",
                "arn:aws:redshift:us-east-1:111122223333:dbuser:cluster-name/db-user-name"
            ]
        }
    ]
}
```

------

### Amazon Redshift Serverless (IAM 驗證)
<a name="datasources-connection-permissions-redshift-serverless-iam"></a>

**注意**  
我們強烈建議將此政策的範圍縮小到僅所需的資源。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetS3Metadata",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Sid": "GetGlueConnections",
            "Effect": "Allow",
            "Action": [
                "glue:GetConnections",
                "glue:GetConnection"
            ],
            "Resource": [
                "arn:aws:glue:us-east-2:111122223333:catalog",
                "arn:aws:glue:us-east-2:111122223333:connection/*"
            ]
        },
        {
            "Sid": "GetSecrets",
            "Effect": "Allow",
            "Action": [                
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret-name"         
            ]
        },
        {
            "Sid": "GetRedshiftServerlessCredentials",
            "Effect": "Allow",
            "Action": [
                "redshift-serverless:GetCredentials"
            ],
            "Resource": [
                "arn:aws:redshift-serverless:us-east-2:111122223333:namespace/namespace-id"           
            ]
        }
    ]
}
```

------

## 使用者定義的連線需要 IAM 許可
<a name="user-defined-connections-permissions"></a>

使用者的 IAM 政策許可可以考慮 AWS Glue 連線資源上是否存在`UserProfile`標籤。
+ **若要檢視 AWS Glue 連線**：
  + 使用者可以檢視沒有 `UserProfile` 標籤的所有連線 (由管理員建立)。
  + 使用者可以檢視其具有的 `UserProfile` 標籤含有與其使用者設定檔相同值的連線。
  + 使用者無法檢視其具有的 `UserProfile` 標籤含有與其使用者設定檔不同值的連線。
+ **若要更新或刪除 AWS Glue 連線**：
  + 使用者可以更新或刪除其具有的 `UserProfile` 標籤含有與其使用者設定檔相同值的連線。
  + 使用者無法更新或刪除其具有的 `UserProfile` 標籤含有與其使用者設定檔不同值的連線。
  + 使用者無法更新或刪除沒有 `UserProfile` 標籤的連線。

若要達成此目的，管理員必須授予使用者設定檔的 JupyterLab 應用程式所使用的執行角色，超出其現有[管理員定義連線許可](#admin-defined-connections-permissions)的額外許可。具體而言，除了存取管理員定義 AWS Glue 連線所需的許可之外，還必須授予以下兩個額外的 IAM 許可給使用者的執行角色：
+ 建立 AWS Glue 連線並將`UserProfile`標籤與使用者設定檔名稱的值建立關聯的許可。
+ 檢視、更新和刪除標籤`UserProfile`符合使用者設定檔名稱之 AWS Glue 連線的許可。

此許可會根據特定使用者設定檔標籤值，限制對 AWS Glue 連線的存取。使用您要設為目標之使用者的設定檔名稱更新 `UserProfile` 標籤值。

```
"Action": [
    "glue:GetConnection",
    "glue:GetConnections"    
],
"Resource": [
    "arn:aws:glue:region:account_id:connection/*"
],
"Condition": {
    "StringEqualsIfExists": {
        "aws:ResourceTag/UserProfile": "user_profile_name"
    }
}
```

此許可將建立、更新和刪除使用者所建立連線的能力限制為僅限具有指定 `UserProfile` 標籤值的使用者設定檔案所建立的連線。

```
"Action": [
    "glue:DeleteConnection",
    "glue:UpdateConnection",
    "glue:CreateConnection",
    "glue:TagResource"
],
"Resource": [
    "arn:aws:glue:region:account_id:connection/*"
],
"Condition": {
    "StringEquals": {
        "aws:ResourceTag/UserProfile": "user_profile"
    }
}
```

## 使用精細 ARN 許可微調 AWS 資源存取
<a name="resource-access-control"></a>

若要更精細地控制對 AWS 資源的存取，請將政策`"Resource": ["*"]`中的萬用字元資源取代為僅需要存取之資源的特定 Amazon Resource Name (ARNs)。使用確切 ARN 而非萬用字元可限制對預期資源的存取。
+ **使用特定的 Amazon S3 儲存貯體 ARN**

  例如，儲存貯體層級或物件層級操作的 ` "arn:aws:s3:::bucket-name/*"` 或 `"arn:aws:s3:::bucket-name"`。

  如需 Amazon S3 中所有資源類型的相關資訊，請參閱 [Amazon S3 定義的資源類型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-resources-for-iam-policies)。
+ **使用特定 AWS Glue 資料庫 ARNs**

  例如 ` "arn:aws:glue:region:account-id:catalog"` 或 ` "arn:aws:glue:region:account-id:database/db-name"`。如需 中所有資源類型的資訊 AWS Glue，請參閱 [定義的資源類型 AWS Glue](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsglue.html#awsglue-resources-for-iam-policies)。
+ **使用特定的 Athena 工作群組 ARN**

  例如 `"arn:aws:athena:region:account-id:workgroup/workgroup-name"`。如需 Athena 中所有資源類型的相關資訊，請參閱 [Athena 定義的資源類型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html#amazonathena-resources-for-iam-policies)。
+ **使用特定的 AWS Secrets Manager 秘密 ARNs**

  例如 `"arn:aws:secretsmanager:region:account-id:secret:secret-name"`。如需 AWS Secrets Manager 中所有資源類型的資訊，請參閱 [AWS Secrets Manager 定義的資源類型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssecretsmanager.html#awssecretsmanager-resources-for-iam-policies)
+ **使用特定的 Amazon Redshift 叢集 ARN**

  例如 `"arn:aws:redshift:region:account-id:cluster:cluster-name"`。如需 Amazon Redshift 中所有資源類型的相關資訊，請參閱 [Amazon Redshift 定義的資源類型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshift.html#amazonredshift-resources-for-iam-policies)。如需 Redshift Serverless 中所有資源類型的相關資訊，請參閱 [Redshift Serverless 定義的資源類型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftserverless.html#amazonredshiftserverless-resources-for-iam-policies)。

# 常見問答集
<a name="sagemaker-sql-extension-faqs"></a>

下列常見問答集會回答 JupyterLab 中 SQL 延伸模組的常見問題。

## 問：在哪裡可以找到 SQL 延伸模組的日誌？
<a name="sagemaker-sql-extension-faqs-0"></a>

答：SQL 延伸模組會將其日誌寫入 Studio 中 JupyterLab 應用程式的一般日誌檔案中。您可以在 `/var/log/apps/app_container.log` 找到這些日誌。

## 問：我收到錯誤：「UsageError：儲存格魔術 `%%sm\$1sql` 找不到。」
<a name="sagemaker-sql-extension-faqs-1"></a>

答：建立新的儲存格，並使用 `%load_ext amazon_sagemaker_sql_magic` 再次載入延伸模組。

## 問：如何列出 `%%sm_sql` 命令的各種參數？
<a name="sagemaker-sql-extension-faqs-2"></a>

答：使用 `%%sm_sql?` 取得命令的說明內容。

## 問：我看不到右側面板上的資料探索檢視。
<a name="sagemaker-sql-extension-faqs-3"></a>

答：確保您的空間使用 SageMaker Distribution 映像 1.6 版或更新版本。這些 SageMaker 映像已預先安裝延伸模組。

如果您在 Studio 中更新了 JupyterLab 應用程式空間的映像，請重新整理瀏覽器。

## 問：右側面板未準確反映設定的 AWS Glue 連線。
<a name="sagemaker-sql-extension-faqs-4"></a>

答：嘗試使用筆記本中 SQL 延伸模組 UI 右下角的**重新整理**按鈕重新整理右側面板。

## 問：SQL 陳述式未如預期執行或未正確執行。
<a name="sagemaker-sql-extension-faqs-5"></a>

答：執行下列魔術命令 `%sm_sql_manage --clear-cached-connections`，嘗試清除快取連線。

## 問：我收到錯誤：「實際陳述式計數 2 未符合所需的陳述式計數 1。」
<a name="sagemaker-sql-extension-faqs-6"></a>

答：SQL 延伸模組一次僅支援執行一個 SQL 查詢。

## Snowflake 常見問答集
<a name="sagemaker-sql-extension-faqs-snowflake"></a>

下列常見問答集使用 Snowflake 做為資料來源，為 SQL 延伸模組的使用者回答常見的一般問題。

### 問：我收到錯誤：「目前工作階段中未選取任何作用中的倉儲。」 使用 'use warehouse' 命令選取作用中的倉儲。
<a name="sagemaker-sql-extension-faqs-snowflake-1"></a>

答：如果未選取使用者的預設倉儲，則可能發生這種情況。為每個工作階段執行命令 `USE WAREHOUSE warehouse_name`。

### 問：我收到錯誤：「物件 '*foo*' 不存在或未授權」。
<a name="sagemaker-sql-extension-faqs-snowflake-2"></a>

答：確保您的 Snowflake 使用者可以存取指定的物件。

# 連線參數
<a name="sagemaker-sql-extension-connection-properties"></a>

下表詳細說明每個資料存放區 AWS Glue 連線支援的 Python 屬性。

## Amazon Redshift 連線參數
<a name="sagemaker-sql-extension-connection-properties-redshift"></a>

Amazon Redshift 的連線支援下列 Python AWS Glue 連線參數。


| 金錀 | Type | 說明 | Constraints | 必要 | 
| --- | --- | --- | --- | --- | 
| auto\$1create | 類型：boolean | 指出若使用者不存在，是否應建立他們。預設為 false。 | true, false | 否 | 
| aws\$1secret\$1arn | 類型：string | 用來擷取連線之其他參數的機密 ARN。 | 有效 ARN | 否 | 
| cluster\$1identifier | 類型：string - maxLength：63 | Amazon Redshift 叢集的叢集識別碼。 | ^(?\$1.\$1—)[a-z][a-z0-9-]\$10,61\$1[a-z0-9]\$1 | 否 | 
| database | 類型：string - maxLength：127 | 要連線到之資料庫的名稱。 |  | 否 | 
| database\$1metadata\$1current\$1db\$1only | 類型：boolean | 指出應用程式是否支援多資料庫資料共用目錄。預設為 true 以指出應用程式不會為了回溯相容性而支援多資料庫資料共用目錄。 | true, false | 否 | 
| db\$1groups | 類型：string | db\$1user 針對目前工作階段所聯結之現有資料庫群組名稱的逗號分隔清單。 |  | 否 | 
| db\$1user | 類型：string | 要與 Amazon Redshift 搭配使用的使用者 ID。 |  | 否 | 
| host | 類型：string - maxLength：256 | Amazon Redshift 叢集的主機名稱。 |  | 否 | 
| iam | 類型：boolean | 為連線啟用或停用 IAM 型驗證的旗標。預設為 false。 | true, false | 否 | 
| iam\$1disable\$1cache | 類型：boolean | 此選項會指定是否快取 IAM 憑證。預設為 true。當對於 API 閘道的請求遭到限流時，這可以提高效能。 | true, false | 否 | 
| max\$1prepared\$1statements | 類型：integer | 可以一次開啟的預備陳述式數量上限。 |  | 否 | 
| numeric\$1to\$1float | 小數轉浮點數 | 指定是否將從小數轉換 NUMERIC 資料類型值。根據預設，會將 NUMERIC 值做為 decimal.Decimal Python 物件接收。對於偏好最高精確度的使用案例，不建議啟用此選項，因為結果可能會四捨五入。啟用此選項之前，請參閱 [https://docs.python.org/3/library/decimal.html#decimal-objects](https://docs.python.org/3/library/decimal.html#decimal-objects) 上的 Python 文件，以了解 decimal.Decimal 與 float 之間的權衡。預設為 false。 | true, false | 否 | 
| port | 類型：integer | Amazon Redshift 叢集的連接埠號碼。 | 範圍 1150-65535 | 否 | 
| profile | 類型：string - maxLength：256 | 包含 AWS CLI使用的憑證和設定的設定檔名稱。 |  | 否 | 
| region | 類型：string | 叢集所在的 AWS 區域。 | 有效 AWS 區域 | 否 | 
| serverless\$1acct\$1id | 類型：string - maxLength：256 | 與 Amazon Redshift 無伺服器資源相關聯的 AWS 帳戶 ID。 |  | 否 | 
| serverless\$1work\$1group | 類型：string - maxLength：256 | Amazon Redshift Serverless 端點的工作群組名稱。 |  | 否 | 
| ssl | 類型：boolean | 如果已啟用 SSL，則為 true。 | true, false | 否 | 
| ssl\$1mode | 類型：enum[verify-ca, verify-full, null]) | Amazon Redshift 的連線安全性。verify-ca(必須使用 SSL，且必須驗證伺服器憑證。) 和 verify-full (必須使用 SSL。伺服器憑證必須經過驗證，且伺服器主機名稱必須符合憑證上的主機名稱屬性。) 受到支援。如需詳細資訊，請參閱 Amazon Redshift 文件中的[設定連線的安全選項](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-ssl-support.html)。預設為 verify-ca。 | verify-ca, verify-full | 否 | 
| timeout | 類型：integer | 對伺服器的連線在逾時前要經過的秒數。 | 0 | 否 | 

## Athena 連線參數
<a name="sagemaker-sql-extension-connection-properties-athena"></a>

Athena 的連線支援下列 Python AWS Glue 連線參數。


| 金錀 | Type | 說明 | Constraints | 必要 | 
| --- | --- | --- | --- | --- | 
| aws\$1access\$1key\$1id | 類型：string - maxLength：256 | 指定與 IAM 帳戶相關聯的 AWS 存取金鑰。建議您將此資訊存放在 aws\$1secret 中。 | 長度：16-128 | 否 | 
| aws\$1secret\$1access\$1key | 類型：string - maxLength：256 |  AWS 存取金鑰的私密部分。建議您將此資訊存放在 aws\$1secret 中。 |  | 否 | 
| aws\$1secret\$1arn | 類型：string | 用來擷取連線之其他參數的機密 ARN。 | 有效 ARN | 否 | 
| catalog\$1name | 類型：string - maxLength：256 | 包含透過驅動程式存取的資料庫和資料表的目錄。如需有關目錄的資訊，請參閱 [DataCatalog](https://docs.aws.amazon.com/athena/latest/APIReference/API_DataCatalog.html)。 |  | 否 | 
| duration\$1seconds | 類型：number | 角色工作階段的持續時間 (以秒為單位)。此設定的值可介於 1 小時至 12 小時。根據預設，持續時間設定為 3600 秒 (1 小時）。 | 範圍從 900 秒 (15 分鐘) 到角色的工作階段持續時間上限設定。 | 否 | 
| encryption\$1option | 類型：enum[SSE\$1S3, SSE\$1KMS, CSE\$1KMS, null]) | Amazon S3 的靜態加密 請參閱 [Athena 指南](https://docs.aws.amazon.com/athena/latest/ug/encryption.html)中的靜態加密一節。 | SSE\$1S3, SSE\$1KMS, CSE\$1KMS | 否 | 
| kms\$1key | 類型：string - maxLength：256 | AWS KMS 如果在 CSE\$1KMS中使用 金鑰encrytion\$1option。 |  | 否 | 
| poll\$1interval | 類型：number | 在 Athena 中輪詢查詢結果狀態的間隔，以秒為單位。 |  | 否 | 
| profile\$1name | 類型：string - maxLength：256 |  AWS 組態設定檔的名稱，其登入資料應該用來驗證對 Athena 的請求。 |  | 否 | 
| region\$1name | 類型：string | 執行查詢 AWS 的區域。 | 有效 AWS 區域 | 否 | 
| result\$1reuse\$1enable | 類型：boolean | 啟用重複使用先前的查詢結果。 | true, false | 否 | 
| result\$1reuse\$1minutes | 類型：integer | 指定 Athena 應考慮重複使用的之前查詢結果的最長期限 (以分鐘為單位)。預設為 60。 | >= 1 | 否 | 
| role\$1arn | 類型：string | 要用於執行查詢的角色。 | 有效 ARN | 否 | 
| schema\$1name | 類型：string - maxLength：256 | 要用於資料庫的預設結構描述名稱。 |  | 否 | 
| s3\$1staging\$1dir | 類型：string - maxLength：1024 | Amazon S3 中存放查詢結果的位置。 |  | 需要 s3\$1staging\$1dir 或 work\$1group | 
| work\$1group | 類型：string | 將在其中執行查詢的工作群組。如需有關工作群組的資訊，請參閱[工作群組](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroup.html)。 | ^[a-zA-Z0-9.\$1-]\$11,128\$1\$1 | 需要 s3\$1staging\$1dir 或 work\$1group | 

## Snowflake 連線參數
<a name="sagemaker-sql-extension-connection-properties-snowflake"></a>

Snowflake 的連線支援下列 Python AWS Glue 連線參數。

Snowflake 連線參數


| 金錀 | Type | 說明 | Constraints | 必要 | 
| --- | --- | --- | --- | --- | 
| account | 類型：string - maxLength：256 | Snowflake 帳戶識別碼。帳戶識別碼不包含 snowflakecomputing.com 尾碼。 |  | 是 | 
| arrow\$1number\$1to\$1decimal | 類型：boolean | 預設為 False，這表示 NUMBER 資料欄值會以雙精度浮點數 (float64) 傳回。將此設定為 True，以在呼叫 fetch\$1pandas\$1all() 和 fetch\$1pandas\$1batches() 方法時傳回 DECIMAL 資料欄值做為十進位數 (decimal.Decimal)。 | true, false | 否 | 
| autocommit | 類型：boolean | 預設為 false，這會遵守 Snowflake 參數 AUTOCOMMIT。設定為 true 或 false，分別在工作階段中啟用或停用 autocommit 模式。 | true, false | 否 | 
| aws\$1secret\$1arn | 類型：string | 用來擷取連線之其他參數的機密 ARN。 | 有效 ARN | 否 | 
| client\$1prefetch\$1threads | 類型：integer | 用來下載結果集的執行緒數量 (預設為 4)。增加值可改善擷取效能，但需要更多記憶體。 |  | 否 | 
| database | 類型：string - maxLength：256 | 要使用的資料庫名稱。 |  | 否 | 
| login\$1timeout | 類型：integer | 登入請求的逾時，以秒為單位。預設為 60 秒。如果 HTTP 回應不是 success，則登入請求會在逾時長度之後放棄。 |  | 否 | 
| network\$1timeout | 類型：integer | 所有其他操作的逾時，以秒為單位。預設為 none (無限)。如果 HTTP 回應不是 success，一般請求會在逾時長度之後放棄。 |  | 否 | 
| paramstyle | 類型：string - maxLength：256 | 從 Python 程式碼執行 SQL 查詢時，用於參數替換的預留位置語法。用戶端繫結預設為 pyformat。指定 qmark 或 numeric 以變更伺服器端繫結的繫結變數格式。 |  | 否 | 
| role | 類型：string - maxLength：256 | 要使用的預設角色名稱。 |  | 否 | 
| schema | 類型：string - maxLength：256 | 要用於資料庫的預設結構描述名稱。 |  | 否 | 
| timezone | 類型：string - maxLength：128 | 預設為無，它會遵守 Snowflake 參數 TIMEZONE。設定為有效的時區 (例如 America/Los\$1Angeles) 以設定工作階段時區。 | 格式類似於 America/Los\$1Angeles 的時區 | 否 | 
| validate\$1default\$1parameters | 類型：boolean | 如果指定的資料庫、結構描述或倉儲不存在，請設定為 true 以引發例外狀況。預設為 false。 |  | 否 | 
| warehouse | 類型：string - maxLength：256 | 要使用的預設倉儲名稱。 |  | 否 | 

# 在 Studio 中使用 Amazon EMR Serverless 應用程式或 Amazon EMR 叢集大規模準備資料
<a name="studio-emr-data-preparation"></a>

Amazon SageMaker Studio 及其舊版 (Studio Classic) 為資料科學家和機器學習 (ML) 工程師提供大規模執行資料分析和資料準備的工具。分析、轉換和準備大量資料是任何資料科學和機器學習 (ML) 工作流程的基礎步驟。Studio 和 Studio Classic 都隨附與 Amazon EMR 的內建整合，可讓使用者在其 JupyterLab 筆記本內管理大規模的互動式資料準備和機器學習工作流程。

[Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) 是一項受管的巨量資料平台，提供資源以協助您使用 AWS 上的開放原始碼分析架構 (例如 [Apache Spark](https://aws.amazon.com/emr/features/spark)、[Apache Hive](https://aws.amazon.com/emr/features/hive)、[Presto](https://aws.amazon.com/emr/features/presto)、HBase 和 Flink 等) 執行 PB 級分散式資料處理任務。透過 Studio 和 Studio Classic 與 Amazon EMR 整合，您可以建立、瀏覽、探索和連線至 Amazon EMR 叢集，而無需離開 JupyterLab 或 Studio Classic 筆記本。您還可以透過直接從筆記本中一鍵式存取 Spark UI，來監控和偵錯 Spark 工作負載。

如果您有大規模、長時間執行或複雜資料處理要求，其中涉及大量資料、需要廣泛的自訂以及與其他服務的整合、需要執行自訂應用程式，或計劃執行 Apache Spark 以外的各種分散式資料處理架構，則應考慮為您的資料準備工作負載使用 Amazon EMR 叢集。

或者，您也可以使用 [SageMaker Distribution 映像](sagemaker-distribution.md) `1.10` 或更新版本，直接從 SageMaker AI Studio 中的 JupyterLab 筆記本連線至互動式 [EMR Serverless](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless.html) 應用程式。Studio 與 EMR Serverless 的整合可讓您執行開放原始碼巨量資料分析架構，例如 [Apache Spark](https://aws.amazon.com/emr/features/spark) 和 [Apache Hive](https://aws.amazon.com/emr/features/hive)，而無需設定、管理或擴展 Amazon EMR 叢集。EMR Serverless 會根據 EMR Serverless 應用程式的需求，自動佈建和管理基礎運算和記憶體資源。它會動態擴增和縮減資源，根據應用程式所耗用的 vCPU、記憶體和儲存資源數量向您收費。這種無伺服器方法可讓您從 JupyterLab 筆記本[執行互動式資料準備工作負載](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/interactive-workloads.html)，而無需擔心叢集管理，同時實現高執行個體使用率和成本效益。

如果您的工作負載是短期或間歇性，而且不需要持久性叢集，則您應該考慮為您的互動式資料準備工作負載使用 EMR Serverless；您偏好自動資源佈建和終止的無伺服器體驗，以避免管理基礎設施的負荷；或者您的互動式資料準備任務主要圍繞 Apache Spark 進行。

**Topics**
+ [設定 Amazon EMR 叢集的網路存取](studio-notebooks-emr-networking.md)
+ [使用 EMR Serverless 準備資料](studio-notebooks-emr-serverless.md)
+ [使用 Amazon EMR 進行資料準備](studio-notebooks-emr-cluster.md)

# 設定 Amazon EMR 叢集的網路存取
<a name="studio-notebooks-emr-networking"></a>

在您開始使用 Amazon EMR 或 EMR Serverless 進行 Studio 中的資料準備任務之前，請確定您或您的管理員已設定您的網路，以允許 Studio 和 Amazon EMR 之間的通訊。一旦啟用了此通訊，您就可以選擇：
+ [使用 EMR Serverless 準備資料](studio-notebooks-emr-serverless.md)
+ [使用 Amazon EMR 進行資料準備](studio-notebooks-emr-cluster.md)

**注意**  
對於 EMR Serverless 使用者，最簡單的設定涉及在 Studio UI 中建立應用程式，而無需修改**虛擬私有雲端 (VPC)** 選項的預設設定。此方法可讓您在 SageMaker 網域的 VPC 內建立應用程式，無需額外的聯網組態。如果選擇此選項，您可以略過下列聯網設定區段。

聯網指示會根據 Studio 與 Amazon EMR 是在私有 [Amazon 虛擬私有雲端](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) (VPC) 內部署，還是透過網際網路進行通訊而有所不同。

根據預設，Studio 或 Studio Classic 會在具有[網際網路存取](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-and-internet-access.html#studio-notebooks-and-internet-access-default)的 AWS 受管 VPC 中執行。使用網際網路連線時，Studio 和 Studio Classic 會透過網際網路存取 AWS 資源，例如 Amazon S3 儲存貯體。但是，如果您有安全要求來控制對資料和任務容器的存取，建議您設定 Studio 或 Studio Classic 和 Amazon EMR，以便無法透過網際網路存取資料和容器。若要控制對資源的存取或在沒有公有網際網路存取的情況下執行 Studio 或 Studio Classic，您可以在加入 [Amazon SageMaker AI 網域](gs-studio-onboard.md)時指定 `VPC only` 網路存取類型。在此案例中，Studio 和 Studio Classic 透過私有 [VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)與其他 AWS 服務建立連線。如需在 `VPC only` 模式下設定 Studio 或 Studio Classic 的相關資訊，請參閱[將 VPC 中的 SageMaker Studio 或 Studio Classic 筆記本連線至外部資源](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-and-internet-access.html#studio-notebooks-and-internet-access-vpc-only)。

前兩節描述如何確保 Studio 或 Studio Classic 與 VPC 中 Amazon EMR 之間的通訊，而無需公有網際網路存取。最後一節涵蓋如何確保在 Studio 或 Studio Classic 與 Amazon EMR 之間使用網際網路連線進行通訊。在無需存取網際網路的情況下連線 Studio 或 Studio Classic 及 Amazon EMR 之前，請務必先為 Amazon Simple Storage Service (資料儲存)、Amazon CloudWatch (記錄與監控) 及 Amazon SageMaker Runtime (微調角色型存取控制 (RBAC)) 建立端點。

若要連線 Studio 或 Studio Classic 和 Amazon EMR：
+ 如果 Studio 或 Studio Classic 和 Amazon EMR 位於不同的 VPCs 中，無論是在同一 AWS 帳戶或不同帳戶中，請參閱 [Studio 及 Amazon EMR 位於不同的 VPC 中](#studio-notebooks-emr-networking-requirements-cross-vpc)。
+ 如果 Studio 或 Studio Classic 和 Amazon EMR 位於相同的 VPC 中，請參閱 [Studio 與 Amazon EMR 位於相同的 VPC 中](#studio-notebooks-emr-networking-requirements-same-vpc)。
+ 如果您選擇透過公有網際網路連線 Studio 或 Studio Classic 與 Amazon EMR，請參閱 [Studio 和 Amazon EMR 透過公有網際網路進行通訊](#studio-notebooks-emr-networking-requirements-internet)。

## Studio 及 Amazon EMR 位於不同的 VPC 中
<a name="studio-notebooks-emr-networking-requirements-cross-vpc"></a>

若要允許 Studio 或 Studio Classic 與 Amazon EMR 部署在不同 VPC 中時彼此通訊：

1. 首先，透過 VPC 對等互連連線您的 VPC。

1. 更新每個 VPC 的路由表，以在 Studio 或 Studio Classic 子網路與 Amazon EMR 子網路之間雙向路由網路流量。

1. 設定您的安全群組以允許傳入和傳出流量。

無論資源部署在單一 AWS 帳戶 （單一帳戶使用案例） 或跨多個 AWS 帳戶 （跨帳戶使用案例），連線 Studio 或 Studio Classic 和 Amazon EMR 的步驟都相同。

1. 

**VPC 對等互連**

   建立 [VPC 對等互連](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html)以促進兩個 VPC (Studio 或 Studio Classic 及 Amazon EMR) 之間的聯網。

   1. 從您的 Studio 或 Studio Classic 帳戶中，在 VPC 儀表板上，選擇**對等互連**，然後選擇**建立對等互連**。

   1. 建立您的請求，將 Studio 或 Studio Classic VPC 與 Amazon EMR VPC 進行對等互連。在另一個 AWS 帳戶中請求對等互連時，請在**選取要對等的另一個 VPC** 中選擇**另一個帳戶**。

      對於跨帳戶對等互連，管理員必須接受來自 Amazon EMR 帳戶的請求。

      當對等私有子網路時，您應該在 VPC 對等連線層級啟用私有 IP DNS 解析。

1. 

**路由表**

   在 Studio 或 Studio Classic 子網路與 Amazon EMR 子網路之間雙向傳送網路流量。

   在您建立對等互連之後，管理員 (在進行跨帳戶存取權的每個帳戶上) 可以將路由新增至私有子網路路由表，以在 Studio 或 Studio Classic 與 Amazon EMR 子網路之間路由流量。您可以透過前往 VPC 儀表板每個 VPC 的**路由表**區段來定義這些路由。

   下列 Studio VPC 子網路的路由表圖顯示透過對等互連從 Studio 帳戶到 Amazon EMR VPC IP 範圍 (此處 `2.0.1.0/24`) 的傳出路由範例。  
![\[Studio VPC 子網路的路由表，顯示透過對等連線從 Studio 帳戶到 Amazon EMR VPC IP 範圍 (此處2.0.1.0/24) 的傳出路由\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-return-route.png)

   下列 Amazon EMR VPC 子網路的路由表示透過對等連線從 Amazon EMR VPC 到 Studio VPC IP 範圍 (此處 `10.0.20.0/24`) 的傳回路由範例。  
![\[Amazon EMR VPC 子網路的路由表，其中顯示透過對等互連從 Amazon EMR 帳戶到 Studio VPC IP 範圍 (此處 10.0.20.0/24) 的傳回路由\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-outbound-route.png)

1. 

**Security groups (安全群組)**

   最後，Studio 或 Studio Classic 網域的安全群組必須允許傳出流量，而 Amazon EMR 主節點的安全群組必須允許來自 Studio 或 Studio Classic 執行個體安全群組的 *Apache Livy*、*Hive* 或 *Presto* TCP 連接埠 (分別為 `8998`、`10000` 與 `8889`) 的傳入流量。[Apache Livy](https://livy.apache.org/) 是透過 REST 介面啟用與 Amazon EMR 互動的服務。

下圖顯示 Amazon VPC 設定的範例，可讓 JupyterLab 或 Studio Classic 筆記本從 Service Catalog 中的 CloudFormation 範本佈建 Amazon EMR 叢集，然後連線到相同 AWS 帳戶中的 Amazon EMR 叢集。圖表提供當 VPCs 無法存取網際網路時，直接連線至各種 AWS 服務所需的端點的額外圖解，例如 Amazon S3 或 Amazon CloudWatch。或者，必須使用 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-working-with)，允許多個 VPC 私有子網路中的執行個體在存取網際網路時共用[網際網路閘道](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)所提供的單一公有 IP 地址。

![\[架構圖說明簡單的 Amazon VPC 設定範例，可讓 Studio 或 Studio Classic 筆記本從 Service Catalog 中的 CloudFormation 範本佈建 Amazon EMR 叢集，然後連線到相同 AWS 帳戶中的 Amazon EMR 叢集。圖表提供當 VPCs 無法存取網際網路時，直接連線至各種 AWS 服務所需的端點的額外圖解，例如 Amazon S3 或 Amazon CloudWatch。或者，必須使用 NAT 閘道，允許多個 VPC 私有子網路中的執行個體在存取網際網路時共用網際網路閘道所提供的單一公有 IP 地址。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-architecture-singleaccount-vpcendpoints.png)


## Studio 與 Amazon EMR 位於相同的 VPC 中
<a name="studio-notebooks-emr-networking-requirements-same-vpc"></a>

如果 Studio or Studio Classic 與 Amazon EMR 位於不同的子網路中，請將路由新增至每個私有子網路路由表，以在 Studio 或 Studio Classic 與 Amazon EMR 子網路之間路由流量。您可以透過前往 VPC 儀表板每個 VPC 的**路由表**區段來定義這些路由。如果您在相同 VPC 和相同子網路中部署了 Studio 或 Studio Classic 和 Amazon EMR，則不需要在 Studio 與 Amazon EMR 之間路由流量。

無論您是否需要更新路由表，Studio 或 Studio Classic 網域的安全群組都必須允許傳出流量，而 Amazon EMR 主節點的安全群組必須允許來自 Studio 或 Studio Classic 執行個體安全群組的 *Apache Livy*、*Hive* 或 *Presto* TCP 連接埠 (分別為 `8998`、`10000` 與 `8889`) 的傳入流量。[Apache Livy](https://livy.apache.org/) 是透過 REST 介面與 Amazon EMR 啟用互動的服務。

## Studio 和 Amazon EMR 透過公有網際網路進行通訊
<a name="studio-notebooks-emr-networking-requirements-internet"></a>

根據預設，Studio 和 Studio Classic 提供了一個網路介面，允許透過與 SageMaker 網域相關聯的 VPC 中的網際網路閘道與網際網路進行通訊。如果您選擇透過公有網際網路連線至 Amazon EMR，Amazon EMR 必須接受來自其網際網路閘道的 *Apache Livy*、*Hive* 或*Presto* TCP 連接埠 (分別為 `8998`、`10000` 與 `8889`) 的傳入流量。[Apache Livy](https://livy.apache.org/) 是透過 REST 介面啟用與 Amazon EMR 互動的服務。

請注意，允許傳入流量的任何連接埠都代表潛在安全漏洞。請詳閱自訂安全群組，以確保您將漏洞數量降至最低。如需更多資訊，請參閱[使用安全群組控制網路流量](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-groups.html)。

或者，請參閱[部落格和白皮書](studio-notebooks-emr-resources.md)以取得如何在 [Amazon EMR 啟用 Kerberos](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)、在私有子網路設定叢集，以及使用 [Network Load Balancer (NLB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 存取叢集以僅公開特定連接埠 (透過安全群組進行存取控制) 的詳細演練。

**注意**  
透過公有網際網路連線至 Apache Livy 端點時，我們建議您使用 TLS 確保 Studio 或 Studio Classic 與 Amazon EMR 叢集之間的通訊安全。  
如需使用 Apache Livy 設定 HTTPS 的相關資訊，請參閱[使用 Apache Livy 啟用 HTTPS](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/enabling-https.html)。如需設定啟用傳輸加密的 Amazon EMR 叢集的相關資訊，請參閱[提供用於使用 Amazon EMR 加密對傳輸中的資料進行加密的憑證](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates)。此外，您需要設定 Studio 或 Studio Classic 以存取您的憑證金鑰，如 [透過 HTTPS 連線至 Amazon EMR 叢集](connect-emr-clusters.md#connect-emr-clusters-ssl) 所指定。

# 使用 EMR Serverless 準備資料
<a name="studio-notebooks-emr-serverless"></a>

從 [SageMaker Distribution 映像](sagemaker-distribution.md)版本 `1.10` 開始，Amazon SageMaker Studio 與 EMR Serverless 整合。在 SageMaker Studio 的 JupyterLab 筆記本內，資料科學家和資料工程師可以探索並連線至 EMR Serverless 應用程式，然後以互動方式探索、視覺化和準備大規模 Apache Spark 或 Apache Hive 工作負載。此整合允許大規模執行互動式資料預先處理，以準備 ML 模型訓練和部署。

具體而言，[SageMaker AI Distribution](https://github.com/aws/sagemaker-distribution/tree/main/build_artifacts/v1) 映像版本 `1.10` 中的更新版本 [https://pypi.org/project/sagemaker-studio-analytics-extension/](https://pypi.org/project/sagemaker-studio-analytics-extension/) 會利用 Apache Livy 與 EMR Serverless 之間的整合，允許透過 JupyterLab 筆記本連線至 Apache Livy 端點。本節假設事先了解 [EMR Serverless 互動式應用程式](https://docs.aws.amazon.com/EMR-Serverless-UserGuide/interactive-workloads.html)。

**重要**  
使用 Studio 時，您只能針對從私有空間啟動的 JupyterLab 應用程式探索並連線至 EMR Serverless 應用程式。確保 EMR Serverless 應用程式與您的 Studio 環境位於相同的 AWS 區域。

## 先決條件
<a name="studio-set-up-emr-serverless-prerequisites"></a>

開始從 JupyterLab 筆記本中使用 EMR Serverless 執行互動式工作負載之前，請確定您符合下列先決條件：

1. 您的 JupyterLab 空間必須使用 SageMaker Distribution 映像版本 `1.10` 或更高版本。

1. 使用 Amazon EMR 版本 `6.14.0` 或更新版本建立 EMR Serverless 互動式應用程式。您可以遵循[從 Studio 建立 EMR Serverless 應用程式](create-emr-serverless-application.md)中的步驟，從 Studio 使用者介面建立 EMR Serverless 應用程式。
**注意**  
如需最簡單的設定，您可以在 Studio UI 中建立 EMR Serverless 應用程式，而無需變更**虛擬私有雲端 (VPC)** 選項的任何預設設定。這允許在您的網域 VPC 內建立應用程式，而不需要任何聯網組態。在此情況下，您可以略過下列聯網設定步驟。

1. 在[設定 Amazon EMR 叢集的網路存取](studio-notebooks-emr-networking.md)中檢閱聯網和安全要求。具體而言，請確定您：
   + 在 Studio 帳戶與 EMR Serverless 帳戶之間建立 VPC 對等互連。
   + 將路由新增至這兩個帳戶中的私有子網路路由表。
   + 設定連接到 Studio 網域的安全群組以允許傳出流量，以及設定 VPC 的安全群組，您計劃在其中執行 EMR Serverless，以允許來自 Studio 執行個體安全群組的傳入 TCP 流量。

1. 若要在 EMR Serverless 上存取您的互動式應用程式，並在 SageMaker Studio 中執行從 JupyterLab 筆記本提交的工作負載，您必須指派特定許可和角色。如需必要角色和許可的詳細資訊，請參閱[設定許可，以啟用從 SageMaker Studio 列出和啟動 Amazon EMR 應用程式](studio-emr-serverless-permissions.md)一節。

**Topics**
+ [先決條件](#studio-set-up-emr-serverless-prerequisites)
+ [設定許可，以啟用從 SageMaker Studio 列出和啟動 Amazon EMR 應用程式](studio-emr-serverless-permissions.md)
+ [從 Studio 建立 EMR Serverless 應用程式](create-emr-serverless-application.md)
+ [從 Studio 連線至 EMR Serverless 應用程式](connect-emr-serverless-application.md)
+ [從 Studio UI 停止或刪除 EMR Serverless 應用程式](terminate-emr-serverless-application.md)

# 設定許可，以啟用從 SageMaker Studio 列出和啟動 Amazon EMR 應用程式
<a name="studio-emr-serverless-permissions"></a>

在本節中，我們會詳細說明從 SageMaker Studio 列出和連線至 EMR Serverless 應用程式所需的角色和許可，並考量 Studio 和 EMR Serverless 應用程式部署在同一 AWS 帳戶或跨不同帳戶的情況。

您必須新增必要許可的角色取決於 Studio 和 EMR Serverless 應用程式是否位於相同 AWS 帳戶 (*單一帳戶*) 或個別帳戶 (*跨帳戶*)。涉及兩種類型的角色：
+ 執行角色
  + EMR Serverless 使用的[執行時間執行角色](https://docs.aws.amazon.com/http://emr/latest/EMR-Serverless-UserGuide/jobs-spark.html#spark-defaults-executionRoleArn) （以角色為基礎的存取控制角色）：這些是 EMR Serverless 任務執行環境用來存取執行時間期間所需其他服務 AWS 和資源的 IAM 角色，例如 Amazon S3 用於資料存取、CloudWatch 用於記錄、存取 AWS Glue Data Catalog 或根據您的工作負載需求的其他 服務。我們建議您在 EMR Serverless 應用程式執行所在的帳戶中建立這些角色。

    若要進一步了解執行時期角色，請參閱《EMR Serverless 使用者指南》**中的[工作執行時期角色](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)。
**注意**  
您可以為 EMR Serverless 應用程式定義多個 RBAC 角色。這些角色可以基於您組織內不同使用者或群組所需的責任和存取層級。如需 RBAC 許可的詳細資訊，請參閱 [Amazon EMR Serverless 的安全最佳實務](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-best-practices.html#security-practice-rbac)。
  + SageMaker AI 執行角色：執行角色允許 SageMaker AI 執行特定任務，例如從 Amazon S3 儲存貯體讀取資料、將日誌寫入 CloudWatch，以及存取工作流程可能需要的其他 AWS 服務。SageMaker AI 執行角色也具有稱為 `iam:PassRole` 的特殊許可，允許 SageMaker AI 將臨時執行時期執行角色傳遞至 EMR Serverless 應用程式。這些角色提供 EMR Serverless 應用程式在執行時與其他 AWS 資源互動所需的許可。
+ 可擔任的角色 (也稱為*服務存取角色*)：
  + 這些是 SageMaker AI 執行角色可以擔任的 IAM 角色，以執行與管理 EMR Serverless 應用程式相關的操作。這些角色定義列出、連線至或管理 EMR Serverless 應用程式時所需的許可和存取政策。它們通常用於跨帳戶案例，其中 EMR Serverless 應用程式位於與 SageMaker AI 網域不同的 AWS 帳戶中。擁有 EMR Serverless 應用程式的專用 IAM 角色有助於遵循最低權限原則，並確保 Amazon EMR 僅擁有執行任務所需的許可，同時保護 AWS 帳戶中的其他資源。

透過正確了解和設定這些角色，您可以確保 SageMaker Studio 具有與 EMR Serverless 應用程式互動的必要許可，無論它們是部署在相同的帳戶中還是跨不同的帳戶部署。

## 單一帳戶
<a name="studio-set-up-emr-serverless-permissions-singleaccount"></a>

下圖說明當 Studio 和應用程式部署在同一個 AWS 帳戶中時，從 Studio 列出和連線至 EMR Serverless 應用程式所需的角色和許可。

![\[此圖表顯示當 Studio 和應用程式位於相同 AWS 帳戶中時，從 Studio 列出和連接 EMR Serverless 應用程式所需的角色和許可。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-serverless-permissions-setup-singleaccount.png)


如果您的 Amazon EMR 應用程式和 Studio 部署在相同的 AWS 帳戶中，請遵循下列步驟：

1. **步驟 1**：擷取您在 [Amazon S3 主控台](https://console.aws.amazon.com/S3)中用於資料來源和輸出資料儲存的 Amazon S3 儲存貯體 ARN。

   若要了解如何依名稱尋找儲存貯體，請參閱[存取和列出 Amazon S3 儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html)。如需如何建立 Amazon S3 儲存貯體的相關資訊，請參閱[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。

1. **步驟 2**：在您的帳戶中為您的 EMR Serverless 應用程式建立至少一個任務執行時期執行角色 (上述*單一帳戶*使用案例圖表中的 `EMRServerlessRuntimeExecutionRoleA`)。選擇**自訂信任政策**作為信任的實體。新增任務所需的許可 您至少需要完整存取 Amazon S3 儲存貯體，並建立和讀取 AWS Glue Data Catalog 的存取權。

   如需如何為 EMR Serverless 應用程式建立新執行時期執行角色的詳細指示，請遵循下列步驟：

   1. 導覽至 [IAM 主控台](https://console.aws.amazon.com/iam)。

   1. 在左側導覽窗格中，選擇**政策**，然後選擇**建立政策**。

   1. 新增執行時期角色所需的許可、為政策命名，然後選擇**建立政策**。

      您可以參考 [EMR Serverless 的任務執行時期角色](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)，以尋找 EMR Serverless 執行時期角色的範例執行時期政策。

   1. 在左側導覽窗格中，選擇**角色**，然後選擇**建立角色**。

   1. 在**建立角色**頁面上，選擇**自訂信任政策**作為信任的實體。

   1. 在**自訂信任政策**區段中貼入下列 JSON 文件，然後選擇**下一步**。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "emr-serverless.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. 在**許可**頁面中，新增您建立的政策，然後選擇**下一步**。

   1. 在**檢閱**頁面上，輸入角色名稱 (例如 `EMRServerlessAppRuntimeRoleA`) 和選用描述。

   1. 檢閱角色詳細資訊，並選擇 **Create role (建立角色)**。

   透過這些角色，您和團隊成員可以連線到同一個應用程式，每個應用程式都使用執行時期角色，其許可範圍將與您個別的資料存取層級相符。
**注意**  
Spark 工作階段以不同方式操作。Spark 工作階段會根據從 Studio 使用的執行角色進行隔離，因此具有不同執行角色的使用者將具有個別隔離的 Spark 工作階段。此外，如果您已啟用網域的來源身分，則會進一步隔離不同來源身分的 Spark 工作階段。

1. **步驟 3**：擷取私有空間所使用的 SageMaker AI 執行角色 ARN。

   如需 SageMaker AI 中空間和執行角色的相關資訊，請參閱 [了解網域空間許可和執行角色](execution-roles-and-spaces.md)。

   如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊，請參閱 [取得您的執行角色](sagemaker-roles.md#sagemaker-roles-get-execution-role)。
**注意**  
 或者，SageMaker AI 的新手可以透過使用適當的許可自動建立新的 SageMaker AI 執行角色來簡化其設定程序。在此情況下，請略過步驟 3 和 4。反之，使用者可以：  
從 [SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)左側導覽中的**網域**功能表建立新網域時，選擇**為組織設定**選項。
從主控台的**角色管理員**功能表建立新的執行角色，然後將角色連接到現有的網域或使用者設定檔。
建立角色時，請在**使用者將執行哪些 ML 活動？**中選擇**執行 Studio EMR Serverless 應用程式**選項 然後，提供 Amazon S3 儲存貯體的名稱，以及您想要 EMR Serverless 應用程式使用的任務執行時期執行角色 (步驟 2)。  
SageMaker Role Manager 會自動將執行和連線至 EMR Serverless 應用程式所需的許可新增至新的執行角色。使用 [SageMaker Role Manager]()，您只能將一個執行時期角色指派給您的 EMR Serverless 應用程式，而且應用程式必須在 Studio 部署所在的相同帳戶中執行，從而使用在該相同帳戶內建立的執行時期角色。

1. **步驟 4**：將下列許可連接至存取 EMR Serverless 應用程式的 SageMaker AI 執行角色。

   1. 在 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/) 開啟 IAM 主控台。

   1. 選擇**角色**，然後在**搜尋**欄位中依名稱搜尋您的執行角色。角色名稱是 ARN 的最後一部分，在最後一個正斜線 (/) 之後。

   1. 遵循角色的連結。

   1. 選擇**新增許可**，然後選擇**建立內嵌政策**。

   1. 在 **JSON** 索引標籤中，新增允許 EMR Serverless 存取和操作的 Amazon EMR Serverless 許可。如需政策文件的詳細資訊，請參閱 [參考政策](#studio-set-up-emr-serverless-permissions-reference) 中的 *EMR Serverless 政策*。將陳述式清單複製到您角色的內嵌政策之前，請將 *region*、*accountID* 和傳遞的 *EMRServerlessAppRuntimeRole* 取代為其實際值。
**注意**  
您可以視需要在許可內包含任意數量的執行時間角色 ARN 字串，以逗號分隔。

   1. 選擇**下一步**，然後提供**政策名稱**。

   1. 選擇**建立政策**。

   1. 重複**建立內嵌政策**步驟，以新增另一個內嵌政策，授予角色更新網域、使用者設定檔和空間的許可。如需 `SageMakerUpdateResourcesPolicy` 政策文件的詳細資訊，請參閱 [參考政策](#studio-set-up-emr-serverless-permissions-reference) 中的*網域、使用者設定檔和空間更新動作政策*。將陳述式清單複製到角色的內嵌政策之前，請將 *region* 和 *accountID* 取代為實際值。

1. **步驟 5**：

   將執行時期角色清單與您的使用者設定檔或網域建立關聯，以便您以視覺化方式瀏覽角色清單，並選取從 JupyterLab [連線至 EMR Serverless 應用程式](connect-emr-serverless-application.md)時要使用的角色。您可以使用 SageMaker AI 主控台或下列指令碼。接著，從筆記本建立的所有 Apache Spark 或 Apache Hive 任務，只會存取連接至所選執行時期角色的政策所允許的資料及資源。
**重要**  
若無法完成此步驟，將阻止您將 JupyterLab 筆記本連線至 EMR Serverless 應用程式。

------
#### [ SageMaker AI console ]

   若要使用 SageMaker AI 主控台，將您的執行時期角色與使用者設定檔或網域建立關聯：

   1. 導覽至 SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

   1. 在左側導覽窗格中，選擇**網域**，然後使用您更新其許可的 SageMaker AI 執行角色選取網域。

   1. 
      + 若要在**網域詳細資訊**頁面的**應用程式組態**索引標籤中，將您的執行時期角色新增至您的網域，請導覽至 **JupyterLab** 區段。
      + 若要將您的執行時期角色新增至您的使用者設定檔：在**網域詳細資訊**頁面上，選擇**使用者設定檔**索引標籤，然後使用您已更新其許可的 SageMaker AI 執行角色選取使用者設定檔。在**應用程式組態**索引標籤中，導覽至 **JupyterLab** 區段。

   1. 選擇**編輯**並新增 EMR Serverless 執行時期執行角色的 ARN。

   1. 選擇**提交**。

   當您下次透過 JupyterLab 連線至 EMR Serverless 應用程式時，執行時期角色應該會出現在下拉式功能表中以供選取。

------
#### [ Python script ]

   在使用您已更新其許可的 SageMaker AI 執行角色，從私有空間啟動的 JupyterLab 應用程式中，請在終端機中執行下列命令。將 `domainID`、`user-profile-name`、`studio-accountID` 和 `EMRServerlessRuntimeExecutionRole` 取代為其適當的值。此程式碼片段會更新特定使用者設定檔 (`client.update_user_profile`) 或網域設定 (`client.update_domain`) 的使用者設定檔設定，特別是關聯您先前建立的 EMR Serverless 執行時期執行角色。

   ```
   import botocore.session
   import json
   sess = botocore.session.get_session()
   client = sess.create_client('sagemaker')
   
   client.update_user_profile(
   DomainId="domainID", 
   UserProfileName="user-profile-name",
   DefaultUserSettings={
       'JupyterLabAppSettings': {
           'EmrSettings': {
               'ExecutionRoleArns': ["arn:aws:iam::studio-accountID:role/EMRServerlessRuntimeExecutionRoleA", 
                                "arn:aws:iam::studio-accountID:role/EMRServerlessRuntimeExecutionRoleAA"]
           }
           
       }
   })
   resp = client.describe_domain(DomainId="domainID")
   
   resp['CreationTime'] = str(resp['CreationTime'])
   resp['LastModifiedTime'] = str(resp['LastModifiedTime'])
   print(json.dumps(resp, indent=2))
   ```

------

## 跨帳戶
<a name="studio-set-up-emr-serverless-permissions-crossaccount"></a>

下圖說明當 Studio 和應用程式部署在不同 AWS 帳戶中時，從 Studio 列出和連線至 EMR Serverless 應用程式所需的角色和許可。

![\[此圖表顯示當 Studio 和應用程式位於不同 AWS 帳戶中時，從 Studio 列出和連接 EMR Serverless 應用程式所需的角色和許可。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-serverless-permissions-setup-crossaccount.png)


如需在 AWS 帳戶上建立角色的詳細資訊，請參閱[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)建立 IAM 角色 （主控台）。

開始之前：
+ 擷取私有空間所使用的 SageMaker AI 執行角色 ARN。如需 SageMaker AI 中空間和執行角色的相關資訊，請參閱 [了解網域空間許可和執行角色](execution-roles-and-spaces.md)。如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊，請參閱 [取得您的執行角色](sagemaker-roles.md#sagemaker-roles-get-execution-role)。
+ 擷取您將用於 [Amazon S3 主控台](https://console.aws.amazon.com/S3)中資料來源和輸出資料儲存的 Amazon S3 儲存貯體 ARN。

  如需如何建立 Amazon S3 儲存貯體的相關資訊，請參閱[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。若要了解如何依名稱尋找儲存貯體，請參閱[存取和列出 Amazon S3 儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html)。

如果您的 EMR Serverless 應用程式和 Studio 部署在不同的 AWS 帳戶中，您可以在這兩個帳戶上設定許可。

### 在 EMR Serverless 帳戶上
<a name="studio-set-up-emr-serverless-permissions-crossaccount-emraccount"></a>

請遵循下列步驟，在 EMR Serverless 應用程式執行所在的帳戶 (也稱為*信任帳戶*) 上建立必要的角色和政策：

1. **步驟 1**：在您的帳戶中為您的 EMR Serverless 應用程式建立至少一個任務執行時期執行角色 (上述*跨帳戶*圖表中的 `EMRServerlessRuntimeExecutionRoleB`)。選擇**自訂信任政策**作為信任的實體。新增任務所需的許可 您至少需要完整存取 Amazon S3 儲存貯體，並建立和讀取 AWS Glue Data Catalog 的存取權。

   如需如何為 EMR Serverless 應用程式建立新執行時期執行角色的詳細指示，請遵循下列步驟：

   1. 導覽至 [IAM 主控台](https://console.aws.amazon.com/iam)。

   1. 在左側導覽窗格中，選擇**政策**，然後選擇**建立政策**。

   1. 新增執行時期角色所需的許可、為政策命名，然後選擇**建立政策**。

      如需 EMR Serverless 執行時期角色的範例執行時期政策，請參閱 [Amazon EMR Serverless 的任務執行時期角色](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)。

   1. 在左側導覽窗格中，選擇**角色**，然後選擇**建立角色**。

   1. 在**建立角色**頁面上，選擇**自訂信任政策**作為信任的實體。

   1. 在**自訂信任政策**區段中貼入下列 JSON 文件，然後選擇**下一步**。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "emr-serverless.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. 在**許可**頁面中，新增您建立的政策，然後選擇**下一步**。

   1. 在**檢閱**頁面上，輸入角色名稱 (例如 `EMRServerlessAppRuntimeRoleB`) 和選用描述。

   1. 檢閱角色詳細資訊，並選擇 **Create role (建立角色)**。

   透過這些角色，您和團隊成員可以連線到同一個應用程式，每個應用程式都使用執行時期角色，其許可範圍將與您個別的資料存取層級相符。
**注意**  
Spark 工作階段以不同方式操作。Spark 工作階段會根據從 Studio 使用的執行角色進行隔離，因此具有不同執行角色的使用者將具有個別隔離的 Spark 工作階段。此外，如果您已啟用網域的來源身分，則會進一步隔離不同來源身分的 Spark 工作階段。

1. **步驟 2**：使用下列組態建立名為 `AssumableRole` 的自訂 IAM 角色：
   + 許可：將必要的許可 (Amazon EMR Serverless 政策) 授予 `AssumableRole`，以允許存取 EMR Serverless 資源。此角色也稱為*存取角色*。
   + 信任關係：設定 `AssumableRole` 的信任政策，以允許從需要存取的 Studio 帳戶擔任執行角色 (跨帳戶圖表中的 `SageMakerExecutionRole`)。

   透過擔任該角色，Studio 可以暫時存取其在 EMR Serverless 帳戶中所需的許可。

   如需如何在 EMR Serverless `AssumableRole` AWS 帳戶中建立新 的詳細說明，請遵循下列步驟：

   1. 導覽至 [IAM 主控台](https://console.aws.amazon.com/iam)。

   1. 在左側導覽窗格中，選擇**政策**，然後選擇**建立政策**。

   1. 在 **JSON** 索引標籤中，新增允許 EMR Serverless 存取和操作的 Amazon EMR Serverless 許可。如需政策文件的詳細資訊，請參閱 [參考政策](#studio-set-up-emr-serverless-permissions-reference) 中的 *EMR Serverless 政策*。將陳述式清單複製到您角色的內嵌政策之前，請將 `region`、`accountID` 和傳遞的 `EMRServerlessAppRuntimeRole` 取代為其實際值。
**注意**  
這裡的 `EMRServerlessAppRuntimeRole` 是在步驟 1 中建立的任務執行時期執行角色 (上述*跨帳戶*圖表中的 `EMRServerlessAppRuntimeRoleB`)。您可以視需要在許可內包含任意數量的執行時間角色 ARN 字串，以逗號分隔。

   1. 選擇**下一步**，然後提供**政策名稱**。

   1. 選擇**建立政策**。

   1. 在左側導覽窗格中，選擇**角色**，然後選擇**建立角色**。

   1. 在**建立角色**頁面上，選擇**自訂信任政策**作為信任的實體。

   1. 在**自訂信任政策**區段中貼入下列 JSON 文件，然後選擇**下一步**。

      將 `studio-account` 取代為 Studio 帳戶 ID，並將 `AmazonSageMaker-ExecutionRole` 取代為 JupyterLab 空間使用的執行角色。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. 在**新增許可**頁面中，新增您在步驟 2 中建立的許可 `EMRServerlessAppRuntimeRoleB`，然後選擇**下一步**。

   1. 在**檢閱**頁面上，輸入角色名稱 (例如 `AssumableRole`) 和選用描述。

   1. 檢閱角色詳細資訊，並選擇 **Create role (建立角色)**。

   如需在 AWS 帳戶上建立角色的詳細資訊，請參閱[建立 IAM 角色 （主控台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)。

### 在 Studio 帳戶上
<a name="studio-set-up-emr-serverless-permissions-crossaccount-studioaccount"></a>

在部署 Studio 的帳戶 (也稱為*信任帳戶*) 上，請使用存取信任帳戶中資源所需的許可，更新存取 EMR Serverless 應用程式的 SageMaker AI 執行角色。

1. **步驟 1**：擷取您空間所使用的 SageMaker AI 執行角色 ARN。

   如需 SageMaker AI 中空間和執行角色的相關資訊，請參閱 [了解網域空間許可和執行角色](execution-roles-and-spaces.md)。

   如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊，請參閱 [取得您的執行角色](sagemaker-roles.md#sagemaker-roles-get-execution-role)。

1. **步驟 2**：將下列許可連接至存取 EMR Serverless 應用程式的 SageMaker AI 執行角色。

   1. 在 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

   1. 選擇**角色**，然後在**搜尋**欄位中依名稱搜尋您的執行角色。角色名稱是 ARN 的最後一部分，在最後一個正斜線 (/) 之後。

   1. 遵循角色的連結。

   1. 選擇**新增許可**，然後選擇**建立內嵌政策**。

   1. 在 **JSON** 索引標籤中，新增內嵌政策，授與角色更新網域、使用者設定檔和空間的許可。如需 `SageMakerUpdateResourcesPolicy` 政策文件的詳細資訊，請參閱 [參考政策](#studio-set-up-emr-serverless-permissions-reference) 中的*網域、使用者設定檔和空間更新動作政策*。將陳述式清單複製到您角色的內嵌政策之前，請將 `region` 和 `accountID` 取代為其實際值。

   1. 選擇**下一步**，然後提供**政策名稱**。

   1. 選擇**建立政策**。

   1. 重複**建立內嵌政策**步驟，以新增另一個政策，授與執行角色擔任 `AssumableRole` 的許可，然後執行角色存取政策所允許的動作。

      將 `emr-account` 取代為 Amazon EMR Serverless 帳戶 ID，並將 `AssumableRole` 取代為 Amazon EMR Serverless 帳戶中建立的可擔任角色名稱。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": {
              "Sid": "AllowSTSToAssumeAssumableRole",
              "Effect": "Allow",
              "Action": "sts:AssumeRole",
              "Resource": "arn:aws:iam::111122223333:role/AssumableRole"
          }
      }
      ```

------

1. **步驟 3**：

   將執行時期角色清單與您的網域或使用者設定檔建立關聯，以便您以視覺化方式瀏覽角色清單，並選取從 JupyterLab [連線至 EMR Serverless 應用程式](connect-emr-serverless-application.md)時要使用的角色。您可以使用 SageMaker AI 主控台或下列指令碼。接著，從筆記本建立的所有 Apache Spark 或 Apache Hive 任務，只會存取連接至所選執行時期角色的政策所允許的資料及資源。
**重要**  
若無法完成此步驟，將阻止您將 JupyterLab 筆記本連線至 EMR Serverless 應用程式。

------
#### [ SageMaker AI console ]

   若要使用 SageMaker AI 主控台，將您的執行時期角色與使用者設定檔或網域建立關聯：

   1. 導覽至 SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

   1. 在左側導覽窗格中，選擇**網域**，然後使用您更新其許可的 SageMaker AI 執行角色選取網域。

   1. 
      + 若要在**網域詳細資訊**頁面的**應用程式組態**索引標籤中，將您的執行時期角色新增至您的網域，請導覽至 **JupyterLab** 區段。
      + 若要將您的執行時期角色新增至您的使用者設定檔：在**網域詳細資訊**頁面上，選擇**使用者設定檔**索引標籤，然後使用您已更新其許可的 SageMaker AI 執行角色選取使用者設定檔。在**應用程式組態**索引標籤中，導覽至 **JupyterLab** 區段。

   1. 選擇**編輯**並新增可擔任角色和 EMR Serverless 執行時期執行角色的 ARNs。

   1. 選擇**提交**。

   當您下次透過 JupyterLab 連線至 EMR Serverless 應用程式時，執行時期角色應該會出現在下拉式功能表中以供選取。

------
#### [ Python script ]

    在使用您已更新其許可的 SageMaker AI 執行角色，從私有空間啟動的 JupyterLab 應用程式中，請在終端機中執行下列命令。將 `domainID`、`user-profile-name`、`studio-accountID` 和 `EMRServerlessRuntimeExecutionRole` 取代為其適當的值。此程式碼片段會更新 SageMaker AI 網域內特定使用者設定檔 (`client.update_user_profile`) 或網域設定 (`client.update_domain`) 的使用者設定檔設定。具體而言，它會為您先前建立的 Amazon EMR Serverless 設定執行時期執行角色。它還允許 JupyterLab 應用程式擔任 Amazon EMR 帳戶內用於執行 EMR Serverless 應用程式的特定 IAM 角色 (`AssumableRole`)。

   ```
   import botocore.session
   import json
   sess = botocore.session.get_session()
   client = sess.create_client('sagemaker')
   
   client.update_user_profile(
   DomainId="domainID", 
   UserProfileName="user-profile-name",
   DefaultUserSettings={
       'JupyterLabAppSettings': {
           'EmrSettings': {
               'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"],
               'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServerlessRuntimeExecutionRoleA", 
                                "arn:aws:iam::emr-accountID:role/AnotherRuntimeExecutionRole"]
           }
           
       }
   })
   resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name")
   
   resp['CreationTime'] = str(resp['CreationTime'])
   resp['LastModifiedTime'] = str(resp['LastModifiedTime'])
   print(json.dumps(resp, indent=2))
   ```

------

## 參考政策
<a name="studio-set-up-emr-serverless-permissions-reference"></a>
+ **EMR Serverless 政策**：此政策允許管理 EMR Serverless 應用程式，包括列出、建立 (使用必要的 SageMaker AI 標籤)、啟動、停止、取得詳細資訊、刪除、存取 Livy 端點，以及取得任務執行儀表板。它也允許將所需的 EMR Serverless 應用程式執行時期角色傳遞至服務。
  + `EMRServerlessListApplications`：允許指定區域和 AWS 帳戶中所有 EMR Serverless 資源的 ListApplications 動作。
  + `EMRServerlessPassRole`：允許在提供的 AWS 帳戶中傳遞指定的執行期角色 （僅當角色傳遞至 時）`emr-serverless.amazonaws.com service`。
  + `EMRServerlessCreateApplicationAction`：允許對指定區域和 AWS 帳戶中的 EMR Serverless 資源執行 CreateApplication 和 TagResource 動作。不過，它需要建立或標記的資源具有非 null 值的特定標籤金鑰 (`sagemaker:domain-arn`、`sagemaker:user-profile-arn` 和 `sagemaker:space-arn`)。
  + `EMRServerlessDenyTaggingAction`：如果資源未設定任何指定的標籤索引鍵 (`sagemaker:domain-arn`、 和 `sagemaker:space-arn`)`sagemaker:user-profile-arn`，則指定區域和 AWS 帳戶中 EMR Serverless 資源上的 TagResource 和 UntagResource 動作。
  + `EMRServerlessActions`：允許 EMR Serverless 資源上的各種動作 (`StartApplication`、`StopApplication`、`GetApplication`、`DeleteApplication`、`AccessLivyEndpoints` 和 `GetDashboardForJobRun`)，但僅在資源設定了非 null 值的指定標籤金鑰 (`sagemaker:domain-arn`、`sagemaker:user-profile-arn` 和 `sagemaker:space-arn`)。

  所提供 JSON 文件中定義的 IAM 政策會授予這些許可，但會限制對 EMR Serverless 應用程式上存在的特定 SageMaker AI 標籤的存取，以確保只可以管理與特定 SageMaker AI 網域、使用者設定檔和空間相關聯的 Amazon EMR Serverless 資源。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "EMRServerlessListApplications",
              "Effect": "Allow",
              "Action": [
                  "emr-serverless:ListApplications"
              ],
              "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/*"
          },
          {
              "Sid": "EMRServerlessPassRole",
              "Effect": "Allow",
              "Action": "iam:PassRole",
              "Resource": "arn:aws:iam::111122223333:role/EMRServerlessAppRuntimeRole",
              "Condition": {
                  "StringLike": {
                      "iam:PassedToService": "emr-serverless.amazonaws.com"
                  }
              }
          },
          {
              "Sid": "EMRServerlessCreateApplicationAction",
              "Effect": "Allow",
              "Action": [
                  "emr-serverless:CreateApplication",
                  "emr-serverless:TagResource"
              ],
              "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/*",
              "Condition": {
                  "ForAllValues:StringEquals": {
                      "aws:TagKeys": [
                          "sagemaker:domain-arn",
                          "sagemaker:user-profile-arn",
                          "sagemaker:space-arn"
                      ]
                  },
                  "Null": {
                      "aws:RequestTag/sagemaker:domain-arn": "false",
                      "aws:RequestTag/sagemaker:user-profile-arn": "false",
                      "aws:RequestTag/sagemaker:space-arn": "false"
                  }
              }
          },
          {
              "Sid": "EMRServerlessDenyTaggingAction",
              "Effect": "Deny",
              "Action": [
                  "emr-serverless:TagResource",
                  "emr-serverless:UntagResource"
              ],
              "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/*",
              "Condition": {
                  "Null": {
                      "aws:ResourceTag/sagemaker:domain-arn": "true",
                      "aws:ResourceTag/sagemaker:user-profile-arn": "true",
                      "aws:ResourceTag/sagemaker:space-arn": "true"
                  }
              }
          },
          {
              "Sid": "EMRServerlessActions",
              "Effect": "Allow",
              "Action": [
                  "emr-serverless:StartApplication",
                  "emr-serverless:StopApplication",
                  "emr-serverless:GetApplication",
                  "emr-serverless:DeleteApplication",
                  "emr-serverless:AccessLivyEndpoints",
                  "emr-serverless:GetDashboardForJobRun"
              ],
              "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/applications/*",
              "Condition": {
                  "Null": {
                      "aws:ResourceTag/sagemaker:domain-arn": "false",
                      "aws:ResourceTag/sagemaker:user-profile-arn": "false",
                      "aws:ResourceTag/sagemaker:space-arn": "false"
                  }
              }
          }
      ]
  }
  ```

------
+ **網域、使用者設定檔和空間更新動作政策**：下列政策授與許可，以更新指定區域和 AWS 帳戶內的 SageMaker AI 網域、使用者設定檔和空間。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "SageMakerUpdateResourcesPolicy",
              "Effect": "Allow",
              "Action": [
                  "sagemaker:UpdateDomain",
                  "sagemaker:UpdateUserprofile",
                  "sagemaker:UpdateSpace"
              ],
              "Resource": [
                  "arn:aws:sagemaker:us-east-1:111122223333:domain/*",
                  "arn:aws:sagemaker:us-east-1:111122223333:user-profile/*"
              ]
          }
      ]
  }
  ```

------

# 從 Studio 建立 EMR Serverless 應用程式
<a name="create-emr-serverless-application"></a>

資料科學家和資料工程師可以直接從 Studio 使用者介面建立 EMR Serverless 應用程式。開始之前，請確定您已如 [設定許可，以啟用從 SageMaker Studio 列出和啟動 Amazon EMR 應用程式](studio-emr-serverless-permissions.md) 一節所述設定必要的許可。這些許可授予 Studio 建立、啟動、檢視、存取和終止應用程式的能力。

若要從 Studio 建立 EMR Serverless 應用程式：

1. 在 Studio UI 中，導覽至左側面板，並在左側導覽功能表中選取**資料**節點。然後，捲動並選擇 **Amazon EMR 應用程式和叢集**選項。這會開啟一個頁面，其中顯示您可以從 Studio 環境內**無伺服器應用程式**索引標籤下存取的 Amazon EMR 應用程式。

1. 選擇右上角的**建立無伺服器應用程式**按鈕。這會開啟**建立應用程式**頁面，類似於您在**應用程式設定選項**中選擇**使用自訂設定**時，將在 [EMR Serverless 主控台](https://console.aws.amazon.com/emrserverless)中看到的檢視。

1. 提供應用程式的必要詳細資訊，包括名稱和您要設定的任何特定可設定參數，然後選擇**建立應用程式**。  
![\[從 Studio 建立 EMR Serverless 應用程式的表單。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-serverless-create-app.png)

   所有組態設定都有預設值，而且可選擇性地修改。如需每個可用參數的詳細資訊，請參閱 EMR Serverless 使用者指南中的[設定應用程式](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/application-capacity.html)。
**注意**  
在 Studio UI 中建立應用程式的過程中，您可以選擇**建立應用程式**或**建立和啟動應用程式**。根據您的選擇，應用程式將分別進入 `Creating` 或 `Starting` 狀態。  
如果您選擇建立應用程式而不立即將其啟動，請確保**在任務提交時自動啟動應用程式**選項保持選取狀態。這將確保當您稍後提交要在其上執行的任務時，應用程式會自動轉換為 `Starting` 狀態。
如需最簡單的設定，建議您將**虛擬私有雲端 (VPC)** 選項設定為其預設值，即**網路連線**區段下的 **VPC 中的資源沒有網路連線**。這允許在您的網域 VPC 內建立應用程式，而不需要任何額外的聯網組態。  
 在任何其他情況下，請確定您執行下列步驟：  
對等互連您的 VPC。
將路由新增至您的私有子網路路由表。
設定您的安全群組，如[設定 Amazon EMR 叢集的網路存取](studio-notebooks-emr-networking.md)中所述。
這確保您的應用程式進行適當的聯網設定，超出了預設的**無網路連線**選項。
對於從 Studio Classic UI 建立的應用程式，會自動套用下列組態：  
已啟用的 Apache Livy 端點。
應用程式會加上下列標籤：  
sagemaker:user-profile-arn
sagemaker:domain-arn
sagemaker:space-arn
如果您在 Studio 外部建立應用程式，請確定您手動啟用 Apache Livy 端點，並將相同的標籤集套用至應用程式。

一旦建立了應用程式，Studio Classic UI 會顯示*應用程式已成功建立*訊息，而新的應用程式會出現在**無伺服器應用程式**清單中。

若要連線至 EMR Serverless 應用程式，請參閱[從 Studio 連線至 EMR Serverless 應用程式](connect-emr-serverless-application.md)

# 從 Studio 連線至 EMR Serverless 應用程式
<a name="connect-emr-serverless-application"></a>

資料科學家和資料工程師可以直接從 Studio 使用者介面探索 EMR Serverless 應用程式，然後連線至其中。開始之前，請先遵循[從 Studio 建立 EMR Serverless 應用程式](create-emr-serverless-application.md)中的指示，確認您已建立 EMR Serverless 應用程式。

您可以將 EMR Serverless 應用程式直接從 Studio UI 連線至新的 JupyterLab 筆記本，或選擇在執行中 JupyterLab 應用程式的筆記本中啟動連線。

**重要**  
使用 Studio 時，您只能針對從私有空間啟動的 JupyterLab 應用程式探索並連線至 EMR Serverless 應用程式。確保 EMR Serverless 應用程式與您的 Studio 環境位於相同的 AWS 區域。您的 JupyterLab 空間必須使用 SageMaker Distribution 映像版本 `1.10` 或更高版本。

**若要從 Studio UI 將 EMR Serverless 應用程式連線至新的 JupyterLab 筆記本：**

1. 在 Studio UI 中，導覽至左側面板，並在左側導覽功能表中選取**資料**節點。然後，捲動並選擇 **Amazon EMR 應用程式和叢集**選項。這會開啟一個頁面，其中顯示您可以從 Studio 環境內**無伺服器應用程式**索引標籤下存取的 Amazon EMR 應用程式。
**注意**  
如果您或您的管理員已設定允許跨帳戶存取 EMR Serverless 應用程式的許可，您可以檢視您已授予 Studio 存取權之所有帳戶的合併應用程式清單。

1. 選取您要將其連線至新筆記本的 EMR Serverless 應用程式，然後選擇**連接至筆記本**。這會開啟一個模態視窗，其中顯示 JupyterLab 空間的清單。

1. 
   + 選取您要從中啟動 JupyterLab 應用程式的私有空間，然後選擇**開啟筆記本**。這會從您選擇的空間啟動 JupyterLab 應用程式，並開啟新的筆記本。
   + 或者，您也可以選擇模態視窗頂端的**建立新空間**按鈕來建立新的私有空間。輸入空間的名稱，然後選擇**建立空間並開啟筆記本**。這會建立一個具有預設執行個體類型和最新可用 SageMaker Distribution 映像的私有空間、啟動 JupyterLab 應用程式，並開啟新的筆記本。

1. 選擇 EMR Serverless 應用程式可以為任務執行而擔任的 IAM 執行時期執行角色名稱。選擇後，連線命令會填入筆記本的第一個儲存格，並啟動與 EMR Serverless 應用程式的連線。
**重要**  
若要成功將 JupyterLab 筆記本連線至 EMR Serverless 應用程式，您必須先將執行時期角色清單與您的網域或使用者設定檔建立關聯，如[設定許可，以啟用從 SageMaker Studio 列出和啟動 Amazon EMR 應用程式](studio-emr-serverless-permissions.md)中所述。若無法完成此步驟，將阻止您建立連線。

   一旦連線成功，訊息就會確認連線、啟動 EMR Serverless 應用程式，以及啟動 Spark 工作階段。
**注意**  
當您連線至 EMR Serverless 應用程式時，其狀態會從 `Stopped` 或 `Created` 轉換為 `Started`。

**或者，您可以從 JupyterLab 筆記本連線至叢集。**

1. 選擇筆記本右上角的**叢集**按鈕。這會開啟模態視窗，列出您可以存取的 EMR Serverless 應用程式。您可以在**無伺服器應用程式索引標籤中**查看應用程式。

1. 選取要連線的叢集，然後選擇**連線**。

1. EMR Serverless 支援在設定所需許可時預先載入的執行時期 IAM 角色，如[設定許可，以啟用從 SageMaker Studio 列出和啟動 Amazon EMR 應用程式](studio-emr-serverless-permissions.md)中所述。若無法完成此步驟，將阻止您建立連線。

   您可以從 **Amazon EMR 執行角色**下拉式功能表中選取您的角色。當您連線至叢集時，Studio 會將程式碼區塊新增至筆記本的作用中儲存格，以建立連線。

1. 作用中儲存格會填入並執行。此儲存格包含連線魔術命令，可將您的筆記本連線至應用程式。

   一旦連接成功，將顯示一則訊息確認連線並啟動 Spark 應用程式。您可以開始將資料處理任務提交至 EMR Serverless 應用程式。

# 從 Studio UI 停止或刪除 EMR Serverless 應用程式
<a name="terminate-emr-serverless-application"></a>

您可以從 Studio UI 中的應用程式清單中停止 (轉換至 `Stopped` 狀態) 或刪除 (轉換至 `Deleted` 狀態) EMR Serverless 應用程式。

**若要停止或刪除應用程式，請導覽至可用的 EMR Serverless 應用程式清單。**

1. 在 Studio UI 中，導覽至左側面板，並在左側導覽功能表中選取**資料**節點。然後，捲動並選擇 **Amazon EMR 應用程式和叢集**選項。這會開啟一個頁面，其中顯示您可以從 Studio 環境內**無伺服器應用程式**索引標籤下存取的 Amazon EMR 應用程式。

1. 選取您要停止或刪除的應用程式名稱，然後選擇對應的**停止**或**刪除**按鈕。

1. 確認訊息會通知您，任何待定任務都將永久失去。

# 使用 Amazon EMR 進行資料準備
<a name="studio-notebooks-emr-cluster"></a>

**重要**  
Amazon SageMaker Studio 和 Amazon SageMaker Studio Classic 是兩種機器學習環境，可用來與 SageMaker AI 互動。  
如果您的網域是在 2023 年 11 月 30 日之後建立的，則 Studio 是您的預設體驗。  
如果您的網域是在 2023 年 11 月 30 日之前建立的，Amazon SageMaker Studio Classic 是您的預設體驗。若要在 Amazon SageMaker Studio Classic 是您的預設體驗時使用 Studio，請參閱[從 Amazon SageMaker Studio Classic 遷移](studio-updated-migrate.md)。  
當您從 Amazon SageMaker Studio Classic 遷移至 Amazon SageMaker Studio 時，功能可用性不會有任何損失。Studio Classic 也會以應用程式的形式存在於 Amazon SageMaker Studio 內，以協助您執行舊版機器學習工作流程。

Amazon SageMaker Studio 和 Studio Classic 隨附與 [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) 的內建整合。在 JupyterLab 和 Studio Classic 筆記本內，資料科學家和資料工程師可以探索並連線至現有的 Amazon EMR 叢集，然後使用 [Apache Spark](https://aws.amazon.com/emr/features/spark)、[Apache Hive](https://aws.amazon.com/emr/features/hive) 或 [Presto](https://aws.amazon.com/emr/features/presto)，以互動方式探索、視覺化和準備機器學習的大規模資料。只需按一下，他們就可以存取 Spark UI 來監控 Spark 任務的狀態和指標，而無需離開筆記本。

管理員可以建立定義 Amazon EMR 叢集的 [CloudFormation 範本](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)。然後，他們可以在 [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/userguide/end-user-console.html) 中將這些叢集範本提供給 Studio 和 Studio Classic 使用者以啟動。然後，資料科學家可以選擇預先定義的範本，直接從其Studio 環境自行佈建 Amazon EMR 叢集。管理員可以進一步參數化範本，讓使用者在預先定義值內選擇叢集的各個層面。例如，使用者可能想要指定核心節點的數量，或從下拉式功能表中選取節點的執行個體類型。

 CloudFormation管理員可以使用 控制 Amazon EMR 叢集的組織、安全和聯網設定。然後，資料科學家和資料工程師可以為其工作負載自訂這些範本，直接從 Studio 和 Studio Classic 建立隨需 Amazon EMR 叢集，而無需設定複雜的組態。使用者也可以在使用之後終止 Amazon EMR 叢集。
+ **如果您是管理員**：

  確定您已啟用 Studio 或 Studio Classic 與 Amazon EMR 叢集之間的通訊。如需指示，請參閱[設定 Amazon EMR 叢集的網路存取](studio-notebooks-emr-networking.md)區段。一旦啟用了此通訊，您就可以：
  + [在 Service Catalog 中設定 Amazon EMR CloudFormation 範本](studio-notebooks-set-up-emr-templates.md)
  + [設定列出 Amazon EMR 叢集](studio-notebooks-configure-discoverability-emr-cluster.md)
+ **如果您是資料科學家或資料工程師**，您可以：
  + [從 Studio 或 Studio Classic 啟動 Amazon EMR 叢集](studio-notebooks-launch-emr-cluster-from-template.md)
  + [從 Studio 或 Studio Classic 列出 Amazon EMR 叢集](discover-emr-clusters.md)
  + [從 SageMaker Studio 或 Studio Classic 連線至 Amazon EMR 叢集](connect-emr-clusters.md)
  + [從 Studio 或 Studio Classic 終止 Amazon EMR 叢集](terminate-emr-clusters.md)
  + [從 Studio 或 Studio Classic 存取 Spark UI](studio-notebooks-access-spark-ui.md)

**Topics**
+ [快速入門：建立 SageMaker AI 沙盒網域以在 Studio 中啟動 Amazon EMR 叢集](studio-notebooks-emr-cluster-quickstart.md)
+ [管理員指南](studio-emr-admin-guide.md)
+ [使用者指南](studio-emr-user-guide.md)
+ [部落格和白皮書](studio-notebooks-emr-resources.md)
+ [疑難排解](studio-notebooks-emr-troubleshooting.md)

# 快速入門：建立 SageMaker AI 沙盒網域以在 Studio 中啟動 Amazon EMR 叢集
<a name="studio-notebooks-emr-cluster-quickstart"></a>

本節會逐步引導您在 Amazon SageMaker Studio 中快速設定完整的測試環境。您將建立新的 Studio 網域，讓使用者直接從 Studio 啟動新的 Amazon EMR 叢集。這些步驟提供範例筆記本，您可以將其連線到 Amazon EMR 叢集以開始執行 Spark。工作負載。使用此筆記本，您將使用 Amazon EMR Spark 分散式處理和 OpenSearch 向量資料庫來建置檢索增強生成系統 (RAG)。

**注意**  
若要開始使用，請使用具有管理員許可的 AWS Identity and Access Management (IAM) 使用者帳戶登入 AWS 管理主控台。如需如何註冊 AWS 帳戶並建立具有管理存取權之使用者的相關資訊，請參閱 [完成 Amazon SageMaker AI 先決條件](gs-set-up.md)。

**若要設定 Studio 測試環境並開始執行 Spark 任務：**
+ [步驟 1：建立 SageMaker AI 網域以在 Studio 中啟動 Amazon EMR 叢集](#studio-notebooks-emr-cluster-quickstart-setup)
+ [步驟 2：從 Studio UI 啟動新的 Amazon EMR 叢集](#studio-notebooks-emr-cluster-quickstart-launch)
+ [步驟 3：將 JupyterLab 筆記本連線至 Amazon EMR 叢集](#studio-notebooks-emr-cluster-quickstart-connect)
+ [步驟 4：清除 CloudFormation 堆疊](#studio-notebooks-emr-cluster-quickstart-clean-stack)

## 步驟 1：建立 SageMaker AI 網域以在 Studio 中啟動 Amazon EMR 叢集
<a name="studio-notebooks-emr-cluster-quickstart-setup"></a>

在下列步驟中，您會套用 CloudFormation 堆疊來自動建立新的 SageMaker AI 網域。堆疊也會建立使用者設定檔，並設定所需的環境和許可。SageMaker AI 網域會設定為讓您直接從 Studio 啟動 Amazon EMR 叢集。在此範例中，Amazon EMR 叢集是在與 SageMaker AI 相同的 AWS 帳戶中建立，無需驗證。您可以在 [get\$1started](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started) GitHub 儲存庫中找到支援 Kerberos 等各種身分驗證方法的其他 CloudFormation 堆疊。

**注意**  
SageMaker AI AWS 區域 預設允許每個 AWS 帳戶 5 個 Studio 網域。在您建立堆疊之前，請確定您的帳戶在您的區域中具有不超過 4 個網域。

**請遵循下列步驟設定 SageMaker AI 網域，以從 Studio 啟動 Amazon EMR 叢集。**

1. 從 `sagemaker-studio-emr` GitHub 儲存庫下載此 [CloudFormation 範本](https://github.com/aws-samples/sagemaker-studio-foundation-models/blob/main/workshop-artifacts/cfn/workshop-cfn.yaml)的原始檔案。

1. 前往 CloudFormation 主控台：https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)

1. 選擇**建立堆疊**，然後從下拉式功能表中選取**使用新資源 (標準)**。

1. 在**步驟 1** 中。

   1. 在**準備範本**區段中，選取**選擇現有範本**。

   1. 在 **Specify template (指定範本)** 區段中，選擇 **Upload a template file (上傳範本檔案)**。

   1. 上傳下載的 CloudFormation 範本，然後選擇**下一步**。

1. 在**步驟 2** 中，輸入**堆疊名稱**和 **SageMakerDomainName**，然後選擇**下一步**。

1. 在**步驟 3** 中，保留所有預設值，然後選擇**下一步**。

1. 在**步驟 4** 中，勾選方塊以確認資源建立，然後選擇**建立堆疊**。這會在您的帳戶和區域中建立 Studio 網域。

## 步驟 2：從 Studio UI 啟動新的 Amazon EMR 叢集
<a name="studio-notebooks-emr-cluster-quickstart-launch"></a>

在下列步驟中，您可以從 Studio UI 建立新的 Amazon EMR 叢集。

1. 前往 SageMaker AI 主控台 (網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/))，然後在左側功能表中選擇**網域**。

1. 按一下您的網域名稱 **GenerativeAIDomain** 以開啟**網域詳細資訊**頁面。

1. 從使用者設定檔 `genai-user` 中啟動 Studio。

1. 在左側導覽窗格中，前往**資料**，然後前往 **Amazon EMR 叢集**。

1. 在 Amazon EMR 叢集頁面上，選擇**建立**。選取 CloudFormation 堆疊建立的範本 **SageMaker Studio Domain No Auth EMR**，然後選擇**下一步**。

1. 輸入新 Amazon EMR 叢集的名稱。選擇性地更新其他參數，例如核心節點和主節點的執行個體類型、閒置逾時或核心節點數量。

1. 選擇**建立資源**以啟動新的 Amazon EMR 叢集。

   建立 Amazon EMR 叢集後，請遵循 **EMR 叢集**頁面上的狀態。當狀態變更為 `Running/Waiting` 時，您的 Amazon EMR 叢集已準備好在 Studio 中使用。

## 步驟 3：將 JupyterLab 筆記本連線至 Amazon EMR 叢集
<a name="studio-notebooks-emr-cluster-quickstart-connect"></a>

在下列步驟中，您將 JupyterLab 中的筆記本連線至執行中的 Amazon EMR 叢集。在此範例中，您匯入筆記本，讓您可以使用 Amazon EMR Spark 分散式處理和 OpenSearch 向量資料庫建置檢索增強生成 (RAG) 系統。

1. 

**啟動 JupyterLab**

   從 Studio 啟動 JupyterLab 應用程式。

1. 

**建立私有空間**

   如果您尚未為 JupyterLab 應用程式建立空間，請選擇**建立 JupyterLab 空間**。輸入空間的名稱，並將空間保留為**私有**。將所有其他設定保留為預設值，然後選擇**建立空間**。

   否則，執行您的 JupyterLab 空間以啟動 JupyterLab 應用程式。

1. 

**部署您的 LLM 和嵌入模型以進行推論**
   + 在頂端功能表中，依序選擇**檔案**、**新增**、**終端機**。
   + 在終端機中，執行下列命令。

     ```
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-00-setup/Lab_0_Warm_Up_Deploy_EmbeddingModel_Llama2_on_Nvidia.ipynb
     mkdir AWSGuides
     cd AWSGuides
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/AWSGuides/AmazonSageMakerDeveloperGuide.pdf
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/AWSGuides/EC2DeveloperGuide.pdf
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/AWSGuides/S3DeveloperGuide.pdf
     ```

     這會將 `Lab_0_Warm_Up_Deploy_EmbeddingModel_Llama2_on_Nvidia.ipynb` 筆記本擷取至您的本機目錄，並將三個 PDF 檔案下載到本機 `AWSGuides` 資料夾。
   + 開啟 `lab-00-setup/Lab_0_Warm_Up_Deploy_EmbeddingModel_Llama2_on_Nvidia.ipynb`、保留 `Python 3 (ipykernel)` 核心，然後執行每個儲存格。
**警告**  
在 **Llama 2 授權合約**區段中，確保接受 Llama2 EULA 再繼續。  
筆記本會在 `ml.g5.2xlarge` 上部署兩個模型 (`Llama 2` 和 `all-MiniLM-L6-v2 Models`) 以進行推論。

     部署模型和建立端點可能需要一些時間。

1. 

**開啟您的主要筆記本**

   在 JupyterLab 中，開啟您的終端機並執行下列命令。

   ```
   cd ..
   wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb
   ```

   您應該會在 JupyterLab 的左側面板中看到額外的 `Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb` 筆記本。

1. 

**選擇 `PySpark` 核心**

   開啟您的 `Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb` 筆記本，並確保您使用的是 `SparkMagic PySpark` 核心。您可以在筆記本的右上角切換核心。選擇目前的核心名稱以開啟核心選擇模式，然後選擇 `SparkMagic PySpark`。

1. 

**將您的筆記本連線至叢集**

   1. 在筆記本的右上角，選擇**叢集**。此動作會開啟模態視窗，其中列出您有權存取的所有執行中叢集。

   1. 選取您的叢集，然後選擇**連線**。新的憑證類型選擇模態視窗隨即開啟。

   1. 選擇**無憑證**，然後選擇**連線**。  
![\[顯示如何為 JupyterLab 筆記本選取 Amazon EMR 憑證的模態。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-credential-selection.png)

   1. 筆記本儲存格會自動填入並執行。筆記本儲存格會載入 `sagemaker_studio_analytics_extension.magics` 延伸模組，其中提供連線至 Amazon EMR 叢集的功能。然後，它會使用 `%sm_analytics` 魔術命令來啟動與 Amazon EMR 叢集和 Spark 應用程式的連線。
**注意**  
確定 Amazon EMR 叢集的連線字串已將驗證類型設定為 `None`。這是由下列範例中的值 `--auth-type None` 說明。如有必要，您可以修改欄位。  

      ```
      %load_ext sagemaker_studio_analytics_extension.magics
      %sm_analytics emr connect --verify-certificate False --cluster-id your-cluster-id --auth-type None --language python
      ```

   1. 一旦您成功建立了連線，您的連線儲存格輸出訊息應會顯示您的 `SparkSession` 詳細資訊，包括叢集 ID、`YARN` 應用程式 ID，以及 Spark UI 的連結，以監控您的 Spark 任務。

您已準備好使用 `Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb`。筆記本。此範例筆記本會執行分散式 PySpark 工作負載，以使用 LangChain 和 OpenSearch 建置 RAG 系統。

## 步驟 4：清除 CloudFormation 堆疊
<a name="studio-notebooks-emr-cluster-quickstart-clean-stack"></a>

完成後，請務必終止您的兩個端點並刪除您的 CloudFormation 堆疊，以避免繼續收費。刪除堆疊會清除堆疊已佈建的所有資源。

**在完成 CloudFormation 堆疊時將其刪除**

1. 前往 CloudFormation 主控台：https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)

1. 選取您要刪除的模型。您可以依名稱進行搜尋，或在堆疊清單中尋找該堆疊。

1. 按一下**刪除**按鈕以完成刪除堆疊，然後再次按一下**刪除**，以確認這將刪除堆疊建立的所有資源。

   等待堆疊刪除完成。這可能需要幾分鐘的時間。 CloudFormation 會自動清除堆疊範本中定義的所有資源。

1. 驗證堆疊建立的所有資源是否都已刪除。例如，檢查是否有任何剩餘的 Amazon EMR 叢集。

**移除模型的 API 端點**

1. 前往 SageMaker AI 主控台：[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 在左側導覽窗格中，開啟**推論**，然後選擇**端點**。

1. 選取端點 `hf-allminil6v2-embedding-ep`，然後在**動作**下拉式清單中選擇**刪除**。針對端點 `meta-llama2-7b-chat-tg-ep` 重複步驟。

# 管理員指南
<a name="studio-emr-admin-guide"></a>

本節提供允許 Studio 或 Studio Classic 與 Amazon EMR 叢集之間通訊的先決條件和聯網指示。它涵蓋不同的部署案例 - 當 Studio 和 Amazon EMR 在私有 Amazon VPC 內佈建而沒有公有網際網路存取時，以及它們需要透過網際網路通訊時。

它會逐步解說管理員如何使用 AWS Service Catalog 將 CloudFormation 範本提供給 Studio，讓資料科學家直接從 Studio 中探索和自行佈建 Amazon EMR 叢集。這涉及建立 Service Catalog 產品組合、授予必要許可、參考 Amazon EMR 範本，以及將這些範本參數化，以在叢集建立期間啟用自訂。

最後，它提供從 Studio 和 Studio Classic 設定現有執行中 Amazon EMR 叢集可探索性的指引，涵蓋單一帳戶和跨帳戶存取案例，以及必要的 IAM 許可。

**Topics**
+ [在 Service Catalog 中設定 Amazon EMR CloudFormation 範本](studio-notebooks-set-up-emr-templates.md)
+ [設定列出 Amazon EMR 叢集](studio-notebooks-configure-discoverability-emr-cluster.md)
+ [在 Studio 中設定用於 Amazon EMR 叢集存取的 IAM 執行時期角色](studio-notebooks-emr-cluster-rbac.md)
+ [參考政策](studio-set-up-emr-permissions-reference.md)

# 在 Service Catalog 中設定 Amazon EMR CloudFormation 範本
<a name="studio-notebooks-set-up-emr-templates"></a>

本主題假設管理員熟悉 [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)、[產品組合和產品 AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-portfolio.html)，以及 [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html)。

為了簡化從 Studio 建立 Amazon EMR 叢集的操作，管理員可以將 [Amazon EMR CloudFormation 範本](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html)註冊為 [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) 產品組合中的產品。為了讓資料科學家可以使用範本，他們必須將產品組合與 Studio 或 Studio Classic 中使用的 SageMaker AI 執行角色建立關聯。最後，若要允許使用者探索範本、佈建叢集，以及從 Studio 或 Studio Classic 連線至 Amazon EMR 叢集，管理員需要設定適當的存取許可。

Amazon EMR CloudFormation 範本可讓最終使用者自訂各種叢集層面。例如，管理員可以定義核准的執行個體類型清單，使用者可以在建立叢集時從中選擇執行個體類型。

下列指示會使用端對端 [CloudFormation 堆疊](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started)來設定 Studio 或 Studio Classic 網域、使用者設定檔、Service Catalog 產品組合，並填入 Amazon EMR 啟動範本。下列步驟強調了管理員必須在其端對端堆疊中套用的特定設定，這些設定可讓 Studio 或 Studio Classic 存取 Service Catalog 產品和佈建 Amazon EMR 叢集。

**注意**  
GitHub 儲存庫 [aws-samples/sagemaker-studio-emr](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started) 包含端對端 CloudFormation 堆疊，其中部署必要的 IAM 角色、聯網、SageMaker 網域、使用者設定檔、Service Catalog 產品組合，以及新增 Amazon EMR 啟動 CloudFormation 範本。這些範本會在 Studio 或 Studio Classic 與 Amazon EMR 叢集之間提供不同的驗證選項。在這些範例中，父系 CloudFormation 堆疊會將 SageMaker AI VPC、安全群組及子網路參數傳遞至 Amazon EMR 叢集範本。  
[sagemaker-studio-emr/cloudformation/emr\$1servicecatalog\$1templates](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/emr_servicecatalog_templates) 儲存庫包含各種範例 Amazon EMR CloudFormation 啟動範本，包括單一帳戶和跨帳戶部署的選項。  
如需您可以用來連線至 Amazon EMR 叢集之驗證方法的詳細資訊，請參閱[從 SageMaker Studio 或 Studio Classic 連線至 Amazon EMR 叢集](connect-emr-clusters.md)。

若要讓資料科學家探索 Amazon EMR CloudFormation 範本，並從 Studio 或 Studio Classic 佈建叢集，請遵循下列步驟。

## 步驟 0：檢查您的聯網並準備您的 CloudFormation 堆疊
<a name="studio-set-up-emr-prereq"></a>

開始之前：
+ 確定您已檢閱[設定 Amazon EMR 叢集的網路存取](studio-notebooks-emr-networking.md)中的聯網和安全要求。
+ 您必須具有一個現有的端對端 CloudFormation 堆疊，支援您選擇的驗證方法。您可以在 [aws-samples/sagemaker-studio-emr](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started) 中找到這類 CloudFormation 範本的範例。下列步驟會醒目提示端對端堆疊中的特定組態，讓您可在 Studio 或 Studio Classic 內使用 Amazon EMR 範本。

## 步驟 1：將您的 Service Catalog 產品組合與 SageMaker AI 建立關聯
<a name="studio-set-up-emr-service-catalog-portfolio"></a>

**在您的 Service Catalog 產品組合中**，將您的產品組合 ID 與存取您叢集的 SageMaker AI 執行角色建立關聯。

若要這麼做，請將以下區段 (此處為 YAML 格式) 新增至您的堆疊。這會授予 SageMaker AI 執行角色存取指定 Service Catalog 產品組合的權限，其中包含 Amazon EMR 範本等產品。它允許 SageMaker AI 擔任的角色啟動這些產品。

 將 *SageMakerExecutionRole.Arn* 和 *SageMakerStudioEMRProductPortfolio.ID* 取代為其實際值。

```
SageMakerStudioEMRProductPortfolioPrincipalAssociation:
    Type: AWS::ServiceCatalog::PortfolioPrincipalAssociation
    Properties:
      PrincipalARN: SageMakerExecutionRole.Arn
      PortfolioId: SageMakerStudioEMRProductPortfolio.ID
      PrincipalType: IAM
```

如需必要 IAM 許可集的詳細資訊，請參閱[許可](#studio-emr-permissions)一節。

## 步驟 2：參考 Service Catalog 產品中的 Amazon EMR 範本
<a name="studio-set-up-emr-service-catalog-product"></a>

**在產品組合的 Service Catalog 產品**中，參考 Amazon EMR 範本資源，並確保其在 Studio 或 Studio Classic 中的可見性。

若要這樣做，請參考 Service Catalog 產品定義中的 Amazon EMR 範本資源，然後新增下列設定為值 `"true"` 的標籤金鑰 `"sagemaker:studio-visibility:emr"` (請參閱 YAML 格式的範例)。

在 Service Catalog 產品定義中，透過 URL 參考叢集的 CloudFormation 範本。設定為 true 的其他標籤可確保 Studio 或 Studio Classic 中 Amazon EMR 範本的可見性。

**注意**  
範例中所提供 URL 參考的 Amazon EMR 範本在啟動時不會強制執行任何驗證要求。此選項用於示範和學習目的。因此不建議用於實際執行環境中。

```
SMStudioEMRNoAuthProduct:
    Type: AWS::ServiceCatalog::CloudFormationProduct
    Properties:
      Owner: AWS
      Name: SageMaker Studio Domain No Auth EMR
      ProvisioningArtifactParameters:
        - Name: SageMaker Studio Domain No Auth EMR
          Description: Provisions a SageMaker domain and No Auth EMR Cluster
          Info:
            LoadTemplateFromURL: Link to your CloudFormation template. For example, https://aws-blogs-artifacts-public.s3.amazonaws.com/artifacts/astra-m4-sagemaker/end-to-end/CFN-EMR-NoStudioNoAuthTemplate-v3.yaml
      Tags:
        - Key: "sagemaker:studio-visibility:emr"
          Value: "true"
```

## 步驟 3：參數化 Amazon EMR CloudFormation 範本
<a name="studio-set-up-emr-cfn-template"></a>

**用來在 Service Catalog 產品內定義 Amazon EMR 叢集的 CloudFormation 範本**可讓管理員指定可設定的參數。管理員可以在範本的 `Parameters` 區段中定義這些參數的 `Default` 值和 `AllowedValues` 範圍。在叢集啟動過程中，資料科學家可以提供自訂輸入，或從這些預先定義的選項中進行選擇，以自訂其 Amazon EMR 叢集的某些層面。

下列範例說明管理員在建立 Amazon EMR 範本時可設定的其他輸入參數。

```
"Parameters": {
    "EmrClusterName": {
      "Type": "String",
      "Description": "EMR cluster Name."
    },
    "MasterInstanceType": {
      "Type": "String",
      "Description": "Instance type of the EMR master node.",
      "Default": "m5.xlarge",
      "AllowedValues": [
        "m5.xlarge",
        "m5.2xlarge",
        "m5.4xlarge"
      ]
    },
    "CoreInstanceType": {
      "Type": "String",
      "Description": "Instance type of the EMR core nodes.",
      "Default": "m5.xlarge",
      "AllowedValues": [
        "m5.xlarge",
        "m5.2xlarge",
        "m5.4xlarge",
        "m3.medium",
        "m3.large",
        "m3.xlarge",
        "m3.2xlarge"
      ]
    },
    "CoreInstanceCount": {
      "Type": "String",
      "Description": "Number of core instances in the EMR cluster.",
      "Default": "2",
      "AllowedValues": [
        "2",
        "5",
        "10"
      ]
    },
    "EmrReleaseVersion": {
      "Type": "String",
      "Description": "The release version of EMR to launch.",
      "Default": "emr-5.33.1",
      "AllowedValues": [
        "emr-5.33.1",
        "emr-6.4.0"
      ]
    }
  }
```

在管理員使 Amazon EMR CloudFormation 範本可在 Studio 內使用之後，資料科學家可以使用它們自行佈建 Amazon EMR 叢集。範本中定義的 `Parameters` 區段會轉換為 Studio 或 Studio Classic 內叢集建立表單上的輸入欄位。對於每個參數，資料科學家可以將自訂值輸入至輸入方塊，或從下拉式功能表中列出的預先定義選項中選取，該值對應至範本中指定的 `AllowedValues`。

下圖顯示了從 CloudFormation Amazon EMR 範本組合的動態表單，以在 Studio 或 Studio Classic 中建立 Amazon EMR 叢集。

![\[從 CloudFormation Amazon EMR 範本組合的動態表單圖，該表單可從 Studio 或 Studio Classic 中建立 Amazon EMR 叢集。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-cluster-creation.png)


造訪 [從 Studio 或 Studio Classic 啟動 Amazon EMR 叢集](studio-notebooks-launch-emr-cluster-from-template.md) 以了解如何使用這些 Amazon EMR 範本從 Studio 或 Studio Classic 啟動叢集。

## 步驟 4：設定許可，以啟用從 Studio 列出和啟動 Amazon EMR 叢集
<a name="studio-emr-permissions"></a>

最後，連接必要的 IAM 許可，以啟用從 Studio 或 Studio Classic 列出現有的執行中 Amazon EMR 叢集，以及自行佈建新叢集。

您必須將這些政策新增至其中的角色取決於 Studio 及 Amazon EMR 是部署在同一帳戶 (選擇*單一帳戶*) 還是不同帳戶 (選擇*跨帳戶*)。

**重要**  
您只能探索並連線至從私有空間啟動的 JupyterLab 和 Studio Classic 應用程式的 Amazon EMR 叢集。確保 Amazon EMR 叢集與您的 Studio 環境位於相同的 AWS 區域。

### 單一帳戶
<a name="studio-set-up-emr-permissions-singleaccount"></a>

如果您的 Amazon EMR 叢集和 Studio 或 Studio Classic 部署在同一個 AWS 帳戶中，請將下列許可連接到存取叢集的 SageMaker AI 執行角色。

1. **步驟 1**：擷取私有空間所使用的 SageMaker AI 執行角色 ARN。

   如需 SageMaker AI 中空間和執行角色的相關資訊，請參閱 [了解網域空間許可和執行角色](execution-roles-and-spaces.md)。

   如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊，請參閱 [取得您的執行角色](sagemaker-roles.md#sagemaker-roles-get-execution-role)。

1. **步驟 2**：將下列許可附加至存取 Amazon EMR 叢集的 SageMaker AI 執行角色。

   1. 導覽至 [IAM 主控台](https://console.aws.amazon.com/iam)。

   1. 選擇**角色**，然後在**搜尋**欄位中依名稱搜尋您的執行角色。角色名稱是 ARN 的最後一部分，在最後一個正斜線 (/) 之後。

   1. 遵循角色的連結。

   1. 選擇**新增許可**，然後選擇**建立內嵌政策**。

   1. 在 **JSON** 索引標籤中，新增允許 Amazon EMR 存取和操作的 Amazon EMR 許可。如需政策文件的詳細資訊，請參閱 [參考政策](studio-set-up-emr-permissions-reference.md) 中的*列出 Amazon EMR 政策*。將陳述式清單複製到角色的內嵌政策之前，請將 `region` 和 `accountID` 取代為其實際值。

   1. 選擇**下一步**，然後提供**政策名稱**。

   1. 選擇**建立政策**。

   1. 重複**建立內嵌政策**步驟，以新增另一個政策，授與執行角色使用 CloudFormation 範本佈建新 Amazon EMR 叢集的許可。如需政策文件的詳細資訊，請參閱 [參考政策](studio-set-up-emr-permissions-reference.md) 中的*建立 Amazon EMRclusters 政策*。將陳述式清單複製到您角色的內嵌政策之前，請將 `region` 和 `accountID` 取代為其實際值。

**注意**  
連線至 Amazon EMR 叢集的角色型存取控制 (RBAC) 使用者也應該參閱 [當您的 Amazon EMR 叢集和 Studio 位於相同帳戶時，設定執行期的角色身分驗證](studio-notebooks-emr-cluster-rbac.md#studio-notebooks-emr-cluster-iam-same)。

### 跨帳戶
<a name="studio-set-up-emr-permissions-crossaccount"></a>

開始使用之前，請先擷取私有空間所使用的 SageMaker AI 執行角色 ARN。

如需 SageMaker AI 中空間和執行角色的相關資訊，請參閱 [了解網域空間許可和執行角色](execution-roles-and-spaces.md)。

如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊，請參閱 [取得您的執行角色](sagemaker-roles.md#sagemaker-roles-get-execution-role)。

如果您的 Amazon EMR 叢集和 Studio 或 Studio Classic 部署在不同的 AWS 帳戶中，您可以在這兩個帳戶上設定許可。

**注意**  
連線至 Amazon EMR 叢集的角色型存取控制 (RBAC) 使用者也應該參閱 [當叢集和 Studio 位於不同帳戶時，設定執行期角色驗證](studio-notebooks-emr-cluster-rbac.md#studio-notebooks-emr-cluster-iam-diff)。

#### 在 Amazon EMR 叢集帳戶上
<a name="studio-set-up-emr-permissions-crossaccount-emraccount"></a>

請遵循下列步驟，在部署 Amazon EMR 的帳戶 (也稱為*信任帳戶*) 上建立必要的角色和政策：

1. **步驟 1**：擷取 [Amazon EMR 叢集服務角色](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role.html)的 ARN。

   若要了解如何尋找叢集服務角色的 ARN，請參閱[設定 IAM 服務角色以取得 Amazon EMR 對 AWS 服務和資源的許可](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html#emr-iam-role-landing)。

1. **步驟 2**：使用下列組態建立名為 `AssumableRole` 的自訂 IAM 角色：
   + 許可：將必要的許可授與 `AssumableRole`，以允許存取 Amazon EMR 資源。在涉及跨帳戶存取的案例中，此角色也稱為*存取角色*。
   + 信任關係：設定 `AssumableRole` 的信任政策，以允許從需要存取的 Studio 帳戶中擔任執行角色 (跨帳戶圖表中的 `SageMakerExecutionRole`)。

   透過擔任該角色，Studio 或 Studio Classic 可以暫時存取其在 Amazon EMR 中所需的許可。

   如需如何在 `AssumableRole` Amazon EMR AWS 帳戶中建立新 的詳細說明，請遵循下列步驟：

   1. 導覽至 [IAM 主控台](https://console.aws.amazon.com/iam)。

   1. 在左側導覽窗格中，選擇**政策**，然後選擇**建立政策**。

   1. 在 **JSON** 索引標籤中，新增允許 Amazon EMR 存取和操作的 Amazon EMR 許可。如需政策文件的詳細資訊，請參閱 [參考政策](studio-set-up-emr-permissions-reference.md) 中的*列出 Amazon EMR 政策*。將陳述式清單複製到角色的內嵌政策之前，請將 `region` 和 `accountID` 取代為其實際值。

   1. 選擇**下一步**，然後提供**政策名稱**。

   1. 選擇**建立政策**。

   1. 在左側導覽窗格中，選擇**角色**，然後選擇**建立角色**。

   1. 在**建立角色**頁面上，選擇**自訂信任政策**作為信任的實體。

   1. 在**自訂信任政策**區段中貼入下列 JSON 文件，然後選擇**下一步**。

------
#### [ For users of Studio and JupyterLab ]

      將 `studio-account` 取代為 Studio 帳戶 ID，並將 `AmazonSageMaker-ExecutionRole` 取代為 JupyterLab 空間使用的執行角色。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

------
#### [ For users of Studio Classic ]

      將 `studio-account` 取代為 Studio Classic 帳戶 ID。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:root"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

------

   1. 在**新增許可**頁面中，新增您剛建立的許可，然後選擇**下一步**。

   1. 在**檢閱**頁面上，輸入角色名稱 (例如 `AssumableRole`) 和選用描述。

   1. 檢閱角色詳細資訊，並選擇 **Create role (建立角色)**。

   如需在 AWS 帳戶建立角色的詳細資訊，請參閱[建立 IAM 角色 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)。

#### 在 Studio 帳戶上
<a name="studio-set-up-emr-permissions-crossaccount-studioaccount"></a>

在部署 Studio 的帳戶 (也稱為*信任帳戶*) 上，請使用存取信任帳戶中資源所需的許可，更新存取您叢集的 SageMaker AI 執行角色。

1. **步驟 1**：擷取私有空間所使用的 SageMaker AI 執行角色 ARN。

   如需 SageMaker AI 中空間和執行角色的相關資訊，請參閱 [了解網域空間許可和執行角色](execution-roles-and-spaces.md)。

   如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊，請參閱 [取得您的執行角色](sagemaker-roles.md#sagemaker-roles-get-execution-role)。

1. **步驟 2**：將下列許可附加至存取 Amazon EMR 叢集的 SageMaker AI 執行角色。

   1. 導覽至 [IAM 主控台](https://console.aws.amazon.com/iam)。

   1. 選擇**角色**，然後在**搜尋**欄位中依名稱搜尋您的執行角色。角色名稱是 ARN 的最後一部分，在最後一個正斜線 (/) 之後。

   1. 遵循角色的連結。

   1. 選擇**新增許可**，然後選擇**建立內嵌政策**。

   1. 在 **JSON** 索引標籤中，新增內嵌政策，授與角色更新網域、使用者設定檔和空間的許可。如需政策文件的詳細資訊，請參閱 [參考政策](studio-set-up-emr-permissions-reference.md) 中的*網域、使用者設定檔和空間更新動作政策*。將陳述式清單複製到您角色的內嵌政策之前，請將 `region` 和 `accountID` 取代為其實際值。

   1. 選擇**下一步**，然後提供**政策名稱**。

   1. 選擇**建立政策**。

   1. 重複**建立內嵌政策**步驟，以新增另一個政策，授與執行角色擔任 `AssumableRole` 的許可，然後執行角色存取政策所允許的動作。將 `emr-account` 取代為 Amazon EMR 帳戶 ID，並將 `AssumableRole` 取代為 Amazon EMR 帳戶中建立的可擔任角色名稱。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "AllowRoleAssumptionForCrossAccountDiscovery",
                  "Effect": "Allow",
                  "Action": "sts:AssumeRole",
                  "Resource": [
                      "arn:aws:iam::111122223333:role/AssumableRole"
                  ]
              }
          ]
      }
      ```

------

   1. 重複**建立內嵌政策**步驟，以新增另一個政策，授與執行角色使用 CloudFormation 範本佈建新 Amazon EMR 叢集的許可。如需政策文件的詳細資訊，請參閱 [參考政策](studio-set-up-emr-permissions-reference.md) 中的*建立 Amazon EMRclusters 政策*。將陳述式清單複製到您角色的內嵌政策之前，請將 `region` 和 `accountID` 取代為其實際值。

   1. (選用) 若要允許列出在與 Studio 相同的帳戶中部署的 Amazon EMR 叢集，請將額外的內嵌政策新增至 Studio 執行角色，如 [參考政策](studio-set-up-emr-permissions-reference.md) 中的*列出 Amazon EMR 政策*所定義。

1. **步驟 3**：將您的可擔任角色 (存取角色) 與您的網域或使用者設定檔建立關聯。Studio 中的 JupyterLab 使用者可以使用 SageMaker AI 主控台或提供的指令碼。

    選擇對應至使用案例的索引標籤。

------
#### [ Associate your assumable roles in JupyterLab using the SageMaker AI console ]

   若要使用 SageMaker AI 主控台，將您的可擔任角色與使用者設定檔或網域建立關聯：

   1. 導覽至 SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

   1. 在左側導覽窗格中，選擇**網域**，然後使用您更新其許可的 SageMaker AI 執行角色選取網域。

   1. 
      + 若要在**網域詳細資訊**頁面的**應用程式組態**索引標籤中，將您的可擔任角色 (存取角色) 新增至您的網域，請導覽至 **JupyterLab** 區段。
      + 若要將您的可擔任角色 (存取角色) 新增至您的使用者設定檔：在**網域詳細資訊**頁面上，選擇**使用者設定檔**索引標籤，然後使用您已更新其許可的 SageMaker AI 執行角色選取使用者設定檔。在**應用程式組態**索引標籤中，導覽至 **JupyterLab** 區段。

   1. 選擇**編輯**並新增您的可擔任角色 (存取角色) ARN。

   1. 選擇**提交**。

------
#### [ Associate your assumable roles in JupyterLab using a Python script ]

    在使用您已更新其許可的 SageMaker AI 執行角色，從空間啟動的 JupyterLab 應用程式中，請在終端機中執行下列命令。將 `domainID`、`user-profile-name`、`emr-accountID` 和 `AssumableRole` (`EMRServiceRole` 表示 [RBAC 執行時期角色]()) 取代為其適當的值。此程式碼片段會更新 SageMaker AI 網域內特定使用者設定檔 (使用 `client.update_userprofile`) 或網域設定 (使用 `client.update_domain`) 的使用者設定檔設定。具體而言，它允許 JupyterLab 應用程式擔任 Amazon EMR 帳戶內執行 Amazon EMR 叢集的特定 IAM 角色 (`AssumableRole`)。

   ```
   import botocore.session
   import json
   sess = botocore.session.get_session()
   client = sess.create_client('sagemaker')
   
   client.update_userprofile(
   DomainId="domainID", 
   UserProfileName="user-profile-name",
   DefaultUserSettings={
       'JupyterLabAppSettings': {
           'EmrSettings': {
               'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"],
               'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", 
                                "arn:aws:iam::emr-accountID:role/AnotherServiceRole"]
           }
           
       }
   })
   resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name")
   
   resp['CreationTime'] = str(resp['CreationTime'])
   resp['LastModifiedTime'] = str(resp['LastModifiedTime'])
   print(json.dumps(resp, indent=2))
   ```

------
#### [ For users of Studio Classic ]

   將 `AssumableRole` 的 ARN 提供給 Studio Classic 執行角色。ARN 會在啟動時由 Jupyter 伺服器載入。Studio 使用的執行角色擔任該跨帳戶角色，以探索並連線至*信任帳戶*中的 Amazon EMR 叢集。

   您可以使用生命週期組態 (LCC) 指令碼來指定此資訊。您可以將 LCC 附加至您的網域或特定使用者設定檔。您使用的 LCC 指令碼必須是 JupyterServer 組態。如需如何建立 LCC 指令碼的詳細資訊，請參閱[搭配 Studio Classic 使用生命週期組態](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lcc.html)。

   下列為範例 LCC 指令碼。若要修改指令碼，請將 `AssumableRole` 和 `emr-account` 取代為其各自的值。跨帳戶的數量限制為五個。

   ```
   # This script creates the file that informs Studio Classic that the role "arn:aws:iam::emr-account:role/AssumableRole" in remote account "emr-account" must be assumed to list and describe Amazon EMR clusters in the remote account.
   
   #!/bin/bash
   
   set -eux
   
   FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE"
   FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json"
   FILE="$FILE_DIRECTORY/$FILE_NAME"
   
   mkdir -p $FILE_DIRECTORY
   
   cat > "$FILE" <<- "EOF"
   {
     emr-cross-account1: "arn:aws:iam::emr-cross-account1:role/AssumableRole",
     emr-cross-account2: "arn:aws:iam::emr-cross-account2:role/AssumableRole"
   }
   EOF
   ```

    執行 LCC 並寫入檔案之後，伺服器會讀取檔案 `/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE/emr-discovery-iam-role-arns-DO_NOT_DELETE.json` 並儲存跨帳戶 ARN。

------

# 設定列出 Amazon EMR 叢集
<a name="studio-notebooks-configure-discoverability-emr-cluster"></a>

管理員可以設定 SageMaker Studio 執行角色的許可，以授予使用者檢視其可存取之 Amazon EMR 叢集清單的能力，讓他們能夠連線到這些叢集。您想要存取的叢集可以部署在與 Studio 相同的 AWS 帳戶 （選擇*單一帳戶*) 或個別帳戶 （選擇*跨帳戶*)。下頁描述如何授予從 Studio 或 Studio Classic 檢視 Amazon EMR 叢集的許可。

**重要**  
您只能探索並連線至從私有空間啟動的 JupyterLab 和 Studio Classic 應用程式的 Amazon EMR 叢集。確保 Amazon EMR 叢集與您的 Studio 環境位於相同的 AWS 區域。

若要讓資料科學家從 Studio 或 Studio Classic 探索 Amazon EMR 叢集，然後連線至其中，請遵循下列步驟。

## 單一帳戶
<a name="studio-set-up-emr-permissions-singleaccount-list-clusters"></a>

如果您的 Amazon EMR 叢集和 Studio 或 Studio Classic 部署在同一個 AWS 帳戶中，請將下列許可附加至存取您叢集的 SageMaker AI 執行角色。

1. **步驟 1**：擷取私有空間所使用的 SageMaker AI 執行角色 ARN。

   如需 SageMaker AI 中空間和執行角色的相關資訊，請參閱 [了解網域空間許可和執行角色](execution-roles-and-spaces.md)。

   如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊，請參閱 [取得您的執行角色](sagemaker-roles.md#sagemaker-roles-get-execution-role)。

1. **步驟 2**：將下列許可附加至存取 Amazon EMR 叢集的 SageMaker AI 執行角色。

   1. 導覽至 [IAM 主控台](https://console.aws.amazon.com/iam)。

   1. 選擇**角色**，然後在**搜尋**欄位中依名稱搜尋您的執行角色。角色名稱是 ARN 的最後一部分，在最後一個正斜線 (/) 之後。

   1. 遵循角色的連結。

   1. 選擇**新增許可**，然後選擇**建立內嵌政策**。

   1. 在 **JSON** 索引標籤中，新增允許 Amazon EMR 存取和操作的 Amazon EMR 許可。如需政策文件的詳細資訊，請參閱 [參考政策](studio-set-up-emr-permissions-reference.md) 中的*列出 Amazon EMR 政策*。將陳述式清單複製到角色的內嵌政策之前，請將 `region` 和 `accountID` 取代為其實際值。

   1. 選擇**下一步**，然後提供**政策名稱**。

   1. 選擇**建立政策**。

**注意**  
連線至 Amazon EMR 叢集的角色型存取控制 (RBAC) 使用者也應該參閱 [當您的 Amazon EMR 叢集和 Studio 位於相同帳戶時，設定執行期的角色身分驗證](studio-notebooks-emr-cluster-rbac.md#studio-notebooks-emr-cluster-iam-same)。

## 跨帳戶
<a name="studio-set-up-emr-permissions-crossaccount-list-clusters"></a>

開始使用之前，請先擷取私有空間所使用的 SageMaker AI 執行角色 ARN。

如需 SageMaker AI 中空間和執行角色的相關資訊，請參閱 [了解網域空間許可和執行角色](execution-roles-and-spaces.md)。

如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊，請參閱 [取得您的執行角色](sagemaker-roles.md#sagemaker-roles-get-execution-role)。

如果您的 Amazon EMR 叢集和 Studio 部署在不同的 AWS 帳戶中，您可以在這兩個帳戶上設定許可。

**注意**  
連線至 Amazon EMR 叢集的角色型存取控制 (RBAC) 使用者也應該參閱 [當叢集和 Studio 位於不同帳戶時，設定執行期角色驗證](studio-notebooks-emr-cluster-rbac.md#studio-notebooks-emr-cluster-iam-diff)。

**在 Amazon EMR 叢集帳戶上**

請遵循下列步驟，在部署 Amazon EMR 的帳戶 (也稱為*信任帳戶*) 上建立必要的角色和政策：

1. **步驟 1**：擷取 [Amazon EMR 叢集服務角色](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role.html)的 ARN。

   若要了解如何尋找叢集服務角色的 ARN，請參閱[設定 IAM 服務角色以取得 Amazon EMR 對 AWS 服務和資源的許可](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html#emr-iam-role-landing)。

1. **步驟 2**：使用下列組態建立名為 `AssumableRole` 的自訂 IAM 角色：
   + 許可：將必要的許可授與 `AssumableRole`，以允許存取 Amazon EMR 資源。在涉及跨帳戶存取的案例中，此角色也稱為*存取角色*。
   + 信任關係：設定 `AssumableRole` 的信任政策，以允許從需要存取的 Studio 帳戶中擔任執行角色 (跨帳戶圖表中的 `SageMakerExecutionRole`)。

   透過擔任該角色，Studio 或 Studio Classic 可以暫時存取其在 Amazon EMR 中所需的許可。

   如需如何在 `AssumableRole` Amazon EMR AWS 帳戶中建立新 的詳細說明，請遵循下列步驟：

   1. 導覽至 [IAM 主控台](https://console.aws.amazon.com/iam)。

   1. 在左側導覽窗格中，選擇**政策**，然後選擇**建立政策**。

   1. 在 **JSON** 索引標籤中，新增允許 Amazon EMR 存取和操作的 Amazon EMR 許可。如需政策文件的詳細資訊，請參閱 [參考政策](studio-set-up-emr-permissions-reference.md) 中的*列出 Amazon EMR 政策*。將陳述式清單複製到角色的內嵌政策之前，請將 `region` 和 `accountID` 取代為其實際值。

   1. 選擇**下一步**，然後提供**政策名稱**。

   1. 選擇**建立政策**。

   1. 在左側導覽窗格中，選擇**角色**，然後選擇**建立角色**。

   1. 在**建立角色**頁面上，選擇**自訂信任政策**作為信任的實體。

   1. 在**自訂信任政策**區段中貼入下列 JSON 文件，然後選擇**下一步**。

------
#### [ For users of Studio and JupyterLab ]

      將 `studio-account` 取代為 Studio 帳戶 ID，並將 `AmazonSageMaker-ExecutionRole` 取代為 JupyterLab 空間使用的執行角色。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

------
#### [ For users of Studio Classic ]

      將 `studio-account` 取代為 Studio Classic 帳戶 ID。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:root"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

------

   1. 在**新增許可**頁面中，新增您剛建立的許可，然後選擇**下一步**。

   1. 在**檢閱**頁面上，輸入角色名稱 (例如 `AssumableRole`) 和選用描述。

   1. 檢閱角色詳細資訊，並選擇 **Create role (建立角色)**。

   如需在 AWS 帳戶上建立角色的詳細資訊，請參閱[建立 IAM 角色 （主控台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)。

**在 Studio 帳戶上**

在部署 Studio 的帳戶 (也稱為*信任帳戶*) 上，請使用存取信任帳戶中資源所需的許可，更新存取您叢集的 SageMaker AI 執行角色。

1. **步驟 1**：擷取私有空間所使用的 SageMaker AI 執行角色 ARN。

   如需 SageMaker AI 中空間和執行角色的相關資訊，請參閱 [了解網域空間許可和執行角色](execution-roles-and-spaces.md)。

   如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊，請參閱 [取得您的執行角色](sagemaker-roles.md#sagemaker-roles-get-execution-role)。

1. **步驟 2**：將下列許可附加至存取 Amazon EMR 叢集的 SageMaker AI 執行角色。

   1. 導覽至 [IAM 主控台](https://console.aws.amazon.com/iam)。

   1. 選擇**角色**，然後在**搜尋**欄位中依名稱搜尋您的執行角色。角色名稱是 ARN 的最後一部分，在最後一個正斜線 (/) 之後。

   1. 遵循角色的連結。

   1. 選擇**新增許可**，然後選擇**建立內嵌政策**。

   1. 在 **JSON** 索引標籤中，新增內嵌政策，授與角色更新網域、使用者設定檔和空間的許可。如需政策文件的詳細資訊，請參閱 [參考政策](studio-set-up-emr-permissions-reference.md) 中的*網域、使用者設定檔和空間更新動作政策*。將陳述式清單複製到您角色的內嵌政策之前，請將 `region` 和 `accountID` 取代為其實際值。

   1. 選擇**下一步**，然後提供**政策名稱**。

   1. 選擇**建立政策**。

   1. 重複**建立內嵌政策**步驟，以新增另一個政策，授與執行角色擔任 `AssumableRole` 的許可，然後執行角色存取政策所允許的動作。將 `emr-account` 取代為 Amazon EMR 帳戶 ID，並將 `AssumableRole` 取代為 Amazon EMR 帳戶中建立的可擔任角色名稱。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "AllowRoleAssumptionForCrossAccountDiscovery",
                  "Effect": "Allow",
                  "Action": "sts:AssumeRole",
                  "Resource": [
                      "arn:aws:iam::111122223333:role/AssumableRole"
                  ]
              }
          ]
      }
      ```

------

   1. (選用) 若要允許列出在與 Studio 相同的帳戶中部署的 Amazon EMR 叢集，請將額外的內嵌政策新增至 Studio 執行角色，如 [參考政策](studio-set-up-emr-permissions-reference.md) 中的*列出 Amazon EMR 政策*所定義。

1. **步驟 3**：將您的可擔任角色 (存取角色) 與您的網域或使用者設定檔建立關聯。Studio 中的 JupyterLab 使用者可以使用 SageMaker AI 主控台或提供的指令碼。

    選擇對應至使用案例的索引標籤。

------
#### [ Associate your assumable roles in JupyterLab using the SageMaker AI console ]

   若要使用 SageMaker AI 主控台，將您的可擔任角色與使用者設定檔或網域建立關聯：

   1. 導覽至 SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

   1. 在左側導覽窗格中，選擇**網域**，然後使用您更新其許可的 SageMaker AI 執行角色選取網域。

   1. 
      + 若要在**網域詳細資訊**頁面的**應用程式組態**索引標籤中，將您的可擔任角色 (存取角色) 新增至您的網域，請導覽至 **JupyterLab** 區段。
      + 若要將您的可擔任角色 (存取角色) 新增至您的使用者設定檔：在**網域詳細資訊**頁面上，選擇**使用者設定檔**索引標籤，然後使用您已更新其許可的 SageMaker AI 執行角色選取使用者設定檔。在**應用程式組態**索引標籤中，導覽至 **JupyterLab** 區段。

   1. 選擇**編輯**並新增您的可擔任角色 (存取角色) ARN。

   1. 選擇**提交**。

------
#### [ Associate your assumable roles in JupyterLab using a Python script ]

    在使用您已更新其許可的 SageMaker AI 執行角色，從空間啟動的 JupyterLab 應用程式中，請在終端機中執行下列命令。將 `domainID`、`user-profile-name`、`emr-accountID` 和 `AssumableRole` (`EMRServiceRole` 表示 [RBAC 執行時期角色]()) 取代為其適當的值。此程式碼片段會更新 SageMaker AI 網域內特定使用者設定檔 (使用 `client.update_userprofile`) 或網域設定 (使用 `client.update_domain`) 的使用者設定檔設定。具體而言，它允許 JupyterLab 應用程式擔任 Amazon EMR 帳戶內執行 Amazon EMR 叢集的特定 IAM 角色 (`AssumableRole`)。

   ```
   import botocore.session
   import json
   sess = botocore.session.get_session()
   client = sess.create_client('sagemaker')
   
   client.update_userprofile(
   DomainId="domainID", 
   UserProfileName="user-profile-name",
   DefaultUserSettings={
       'JupyterLabAppSettings': {
           'EmrSettings': {
               'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"],
               'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", 
                                "arn:aws:iam::emr-accountID:role/AnotherServiceRole"]
           }
           
       }
   })
   resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name")
   
   resp['CreationTime'] = str(resp['CreationTime'])
   resp['LastModifiedTime'] = str(resp['LastModifiedTime'])
   print(json.dumps(resp, indent=2))
   ```

------
#### [ For users of Studio Classic ]

   將 `AssumableRole` 的 ARN 提供給 Studio Classic 執行角色。ARN 會在啟動時由 Jupyter 伺服器載入。Studio 使用的執行角色擔任該跨帳戶角色，以探索並連線至*信任帳戶*中的 Amazon EMR 叢集。

   您可以使用生命週期組態 (LCC) 指令碼來指定此資訊。您可以將 LCC 附加至您的網域或特定使用者設定檔。您使用的 LCC 指令碼必須是 JupyterServer 組態。如需如何建立 LCC 指令碼的詳細資訊，請參閱[搭配 Studio Classic 使用生命週期組態](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lcc.html)。

   下列為範例 LCC 指令碼。若要修改指令碼，請將 `AssumableRole` 和 `emr-account` 取代為其各自的值。跨帳戶的數量限制為五個。

   ```
   # This script creates the file that informs Studio Classic that the role "arn:aws:iam::emr-account:role/AssumableRole" in remote account "emr-account" must be assumed to list and describe Amazon EMR clusters in the remote account.
   
   #!/bin/bash
   
   set -eux
   
   FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE"
   FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json"
   FILE="$FILE_DIRECTORY/$FILE_NAME"
   
   mkdir -p $FILE_DIRECTORY
   
   cat > "$FILE" <<- "EOF"
   {
     emr-cross-account1: "arn:aws:iam::emr-cross-account1:role/AssumableRole",
     emr-cross-account2: "arn:aws:iam::emr-cross-account2:role/AssumableRole"
   }
   EOF
   ```

    執行 LCC 並寫入檔案之後，伺服器會讀取檔案 `/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE/emr-discovery-iam-role-arns-DO_NOT_DELETE.json` 並儲存跨帳戶 ARN。

------

請參閱[從 Studio 或 Studio Classic 列出 Amazon EMR 叢集](discover-emr-clusters.md)，以了解如何從 Studio 或 Studio Classic 筆記本探索並連線至 Amazon EMR 叢集。

# 在 Studio 中設定用於 Amazon EMR 叢集存取的 IAM 執行時期角色
<a name="studio-notebooks-emr-cluster-rbac"></a>

當您從 Studio 或 Studio Classic 筆記本連線到 Amazon EMR 叢集時，可以視覺化方式瀏覽 IAM 角色清單 (稱為執行時期角色)，然後即時選取一個角色。接著，從您的筆記本建立的所有 Apache Spark、Apache Hive 或 Presto 任務，只會存取連接至執行時期角色的政策所允許的資料及資源。此外，從使用 管理的資料湖存取資料時 AWS Lake Formation，您可以使用連接到執行期角色的政策來強制執行資料表層級和資料欄層級的存取。

透過這項功能，您和團隊成員可以連線到同一個叢集，每個叢集都使用執行期角色，其許可範圍將與您個別的資料存取層級相符。您的工作階段也會在共用叢集上彼此隔離。

若要使用 Studio Classic 試用此功能，請參閱[使用 AWS Lake Formation 和來自 Amazon SageMaker Studio Classic 的 Amazon EMR 套用精細資料存取控制](https://aws.amazon.com/blogs/machine-learning/apply-fine-grained-data-access-controls-with-aws-lake-formation-and-amazon-emr-from-amazon-sagemaker-studio/)。這篇部落格文章可協助您設定示範環境，方便您嘗試使用預先設定的執行期角色連線至 Amazon EMR 叢集。

## 先決條件
<a name="studio-notebooks-emr-cluster-rbac-prereq"></a>

開始之前，請確定您符合以下先決條件：
+ 使用 Amazon EMR 版本 6.9 或以上。
+ **若為 Studio Classic 使用者**：在 Studio Classic Jupyter 伺服器應用程式組態中使用 JupyterLab 第 3 版。此版本支援 Studio Classic 使用執行時期角色連線至 Amazon EMR 叢集。

  **若為 Studio 使用者**：使用 [SageMaker Distribution 映像](sagemaker-distribution.md)版本 `1.10` 或更新版本。
+ 允許在您叢集的安全組態中使用執行時期角色。如需詳細資訊，請參閱 [Amazon EMR 步驟的執行期角色](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-steps-runtime-roles.html)。
+ 使用 [支援的映像和核心，可從 Studio 或 Studio Classic 連線至 Amazon EMR 叢集](studio-emr-user-guide.md#studio-notebooks-emr-cluster-connect-kernels) 中列出的任何核心建立筆記本。
+ 確定您檢閱[設定 Studio 以使用執行期 IAM 角色](#studio-notebooks-emr-cluster-iam)中的指示，以設定您的執行時期角色。

## 跨帳戶連線案例
<a name="studio-notebooks-emr-cluster-rbac-scen"></a>

當您的資料位於 Studio 帳戶之外時，執行期角色驗證可支援各種跨帳戶連線案例。下列影像顯示您可以在 Studio 和資料帳戶之間指派 Amazon EMR 叢集、資料，甚至 Amazon EMR 執行時期執行角色的三種不同方式：

![\[執行期 IAM 角色驗證支援的跨帳戶案例。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio-emr-rbac-scenarios.png)


在選項 1 中，您的 Amazon EMR 叢集和 Amazon EMR 執行時期執行角色位於與 Studio 帳戶不同的資料帳戶中。您可以定義個別的 Amazon EMR 存取角色 (也稱為 `Assumable role`) 許可政策，該政策會授予 Studio 或 Studio Classic 執行角色擔任 Amazon EMR 存取角色的許可。接著，Amazon EMR 存取角色會代表您的 Studio 或 Studio Classic 執行角色呼叫 Amazon EMR API `GetClusterSessionCredentials`，讓您可以存取叢集。

在選項 2 中，您的 Amazon EMR 叢集和 Amazon EMR 執行時期執行角色位於您的 Studio 帳戶中。您的 Studio 執行角色具有使用 Amazon EMR API `GetClusterSessionCredentials` 存取叢集的許可。若要存取 Amazon S3 儲存貯體，請提供 Amazon EMR 執行時期執行角色跨帳戶 Amazon S3 儲存貯體存取許可 — 您可以在 Amazon S3 儲存貯體政策中授予這些許可。

在選項 3 中，您的 Amazon EMR 叢集位於您的 Studio 帳戶中，而 Amazon EMR 執行時期執行角色位於資料帳戶中。您的 Studio 或 Studio Classic 執行角色具有使用 Amazon EMR API `GetClusterSessionCredentials` 存取叢集的許可。將 Amazon EMR 執行時期執行角色新增到執行角色組態 JSON。接著即可在選擇叢集時在使用者介面中選取角色。如需如何設定執行角色設定 JSON 檔案的詳細資訊，請參閱[將您的執行角色預先載入至 Studio 或 Studio Classic](#studio-notebooks-emr-cluster-iam-preload)。

## 設定 Studio 以使用執行期 IAM 角色
<a name="studio-notebooks-emr-cluster-iam"></a>

若要為 Amazon EMR 叢集建立執行期角色身分驗證，請設定必要的 IAM 政策、網路和可用性增強功能。您的設定取決於您是否會處理任何跨帳戶作業，以及您的 Amazon EMR 叢集、Amazon EMR 執行時期執行角色或兩者是否都位於 Studio 帳戶之外。下節將引導您完成要安裝的政策，並說明如何設定網路以允許跨帳戶之間的流量，以及設定用於自動化 Amazon EMR 連線的本機組態檔案。

### 當您的 Amazon EMR 叢集和 Studio 位於相同帳戶時，設定執行期的角色身分驗證
<a name="studio-notebooks-emr-cluster-iam-same"></a>

如果您的 Amazon EMR 叢集位於您的 Studio 帳戶中，請完成下列步驟，將必要的許可新增至您的 Studio 執行政策：

1. 新增必要的 IAM 政策，以連線到 Amazon EMR 叢集。如需詳細資訊，請參閱[設定列出 Amazon EMR 叢集](studio-notebooks-configure-discoverability-emr-cluster.md)。

1. 當您傳遞政策中指定的一或多個允許的 Amazon EMR 執行時期執行角色時，授予呼叫 Amazon EMR API `GetClusterSessionCredentials` 的許可。

1. (選用) 授與許可，以傳遞遵循任何使用者定義命名慣例的 IAM 角色。

1. (選用) 授與許可，以存取使用特定使用者定義字串標記的 Amazon EMR 叢集。

1. 預先載入您的 IAM 角色，讓您可以選取要在連線至 Amazon EMR 叢集時使用的角色。如需有關預先載入 IAM 角色的詳細資訊，請參閱[將您的執行角色預先載入至 Studio 或 Studio Classic](#studio-notebooks-emr-cluster-iam-preload)。

下列範例政策允許屬於建模和訓練群組的 Amazon EMR 執行時期執行角色呼叫 `GetClusterSessionCredentials`。此外，政策擁有者可存取標記為字串 `modeling` 或 `training` 的 Amazon EMR 叢集。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "elasticmapreduce:GetClusterSessionCredentials",
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "elasticmapreduce:ExecutionRoleArn": [
                        "arn:aws:iam::111122223333:role/emr-execution-role-ml-modeling*",
                        "arn:aws:iam::111122223333:role/emr-execution-role-ml-training*"
			]},
		"StringLike":{
                    "elasticmapreduce:ResourceTag/group": [
                        "*modeling*",
                        "*training*"
                    ]
                }
            }
        }
    ]
}
```

------

### 當叢集和 Studio 位於不同帳戶時，設定執行期角色驗證
<a name="studio-notebooks-emr-cluster-iam-diff"></a>

如果您的 Amazon EMR 叢集不在您的 Studio 帳戶中，請允許您的 SageMaker AI 執行角色扮演跨帳戶 Amazon EMR 存取角色，以便您可以連線到叢集。若要設定跨帳戶組態，請完成以下步驟：

1. 建立您的 SageMaker AI 執行角色許可政策，以便執行角色可以擔任 Amazon EMR 存取角色。以下為政策的範例：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowAssumeCrossAccountEMRAccessRole",
               "Effect": "Allow",
               "Action": "sts:AssumeRole",
               "Resource": "arn:aws:iam::111122223333:role/emr-access-role-name"
           }
       ]
   }
   ```

------

1. 建立信任政策以指定哪些 Studio 帳戶 ID 受信任，以擔任 Amazon EMR 存取角色。以下為政策的範例：

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
           "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole",
           "Effect": "Allow",
           "Principal": {
             "AWS": "arn:aws:iam::111122223333:role/studio_execution_role"
           },
           "Action": "sts:AssumeRole"
         }
       ]
   }
   ```

------

1. 建立 Amazon EMR 存取角色許可政策，該政策授予 Amazon EMR 執行時期執行角色在叢集上執行預定任務所需的許可。設定 Amazon EMR 存取角色，以使用存取角色許可政策中指定的 Amazon EMR 執行時期執行角色呼叫 API `GetClusterSessionCredentials`。以下為政策的範例：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI",
               "Effect": "Allow",
               "Action": "elasticmapreduce:GetClusterSessionCredentials",
               "Resource": "arn:aws:elasticmapreduce:us-east-1:111122223333:cluster/cluster-id",
               "Condition": {
                   "StringLike": {
                       "elasticmapreduce:ExecutionRoleArn": [
                           "arn:aws:iam::111122223333:role/emr-execution-role-name"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. 設定跨帳戶網路，讓流量可以在您的帳戶之間來回移動。如需指引式指示，請參閱*[設定 Amazon EMR 叢集的網路存取](studio-notebooks-emr-networking.md)設定*。本節中的步驟可協助您完成下列任務：

   1. VPC 會對等您的 Studio 帳戶和您的 Amazon EMR 帳戶以建立連線。

   1. 手動將路由新增至兩個帳戶中的私人子網路路由表。這樣一來，將可從 Studio 帳戶建立和連線至 Amazon EMR 叢集到遠端帳戶的私有子網路。

   1. 設定連接到 Studio 網域的安全群組，以允許傳出流量和 Amazon EMR 主要節點的安全群組允許來自 Studio 執行個體安全群組的傳入 TCP 流量。

1. 預先載入您的 IAM 執行時期角色，讓您可以選取要在連線至 Amazon EMR 叢集時使用的角色。如需有關預先載入 IAM 角色的詳細資訊，請參閱[將您的執行角色預先載入至 Studio 或 Studio Classic](#studio-notebooks-emr-cluster-iam-preload)。

### 設定 Lake Formation 存取權
<a name="studio-notebooks-emr-cluster-iam-lf"></a>

當您從 管理的資料湖存取資料時 AWS Lake Formation，您可以使用連接到執行期角色的政策來強制執行資料表層級和資料欄層級的存取。若要設定 Lake Formation 存取權限，請參閱[將 Amazon EMR 與 AWS Lake Formation整合](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-lake-formation.html)。

### 將您的執行角色預先載入至 Studio 或 Studio Classic
<a name="studio-notebooks-emr-cluster-iam-preload"></a>

您可以預先載入 IAM 執行時期角色，讓您可以選取要在連線至 Amazon EMR 叢集時使用的角色。Studio 中 JupyterLab 的使用者可以使用 SageMaker AI 主控台或提供的指令碼。

------
#### [ Preload runtime roles in JupyterLab using the SageMaker AI console ]

若要使用 SageMaker AI 主控台，將您的執行時期角色與使用者設定檔或網域建立關聯：

1. 導覽至 SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 在左側導覽窗格中，選擇**網域**，然後使用您更新其許可的 SageMaker AI 執行角色選取網域。

1. 
   + 若要將您的執行時期 (和跨帳戶使用案例的存取角色) 新增至您的網域：在**網域詳細資訊**頁面**的應用程式組態**索引標籤中，導覽至 **JupyterLab** 區段。
   + 若要將您的執行時期 (和跨帳戶使用案例的存取角色) 新增至您的使用者設定檔：在**網域詳細資訊**頁面上，選擇**使用者設定檔**索引標籤，然後使用您已更新其許可的 SageMaker AI 執行角色選取使用者設定檔。在**應用程式組態**索引標籤中，導覽至 **JupyterLab** 區段。

1. 選擇**編輯**並新增您的存取角色 (可擔任角色) 和 EMR Serverless 執行時期執行角色的 ARN。

1. 選擇**提交**。

當您下次連線至 Amazon EMR 伺服器時，執行時期角色應該會出現在下拉式功能表中以供選取。

------
#### [ Preload runtime roles in JupyterLab using a Python script ]

在使用您已更新其許可的 SageMaker AI 執行角色，從空間啟動的 JupyterLab 應用程式中，請在終端機中執行下列命令。將 `domainID`、`user-profile-name`、`emr-accountID` 和 `EMRServiceRole` 取代為其適當的值。此程式碼片段會在跨帳戶使用案例中更新 SageMaker AI 網域內的使用者設定檔設定 (`client.update_user_profile`)。具體而言，它會設定 Amazon EMR 的服務角色。它還允許 JupyterLab 應用程式擔任特定 IAM 角色 (`AssumableRole` 或 `AccessRole`)，以在 Amazon EMR 帳戶內執行 Amazon EMR。

或者，如果您的空間使用網域層級設定的執行角色，請使用 `client.update_domain` 更新網域設定。

```
import botocore.session
import json
sess = botocore.session.get_session()
client = sess.create_client('sagemaker')

client.update_user_profile(
DomainId="domainID", 
UserProfileName="user-profile-name",
UserSettings={
    'JupyterLabAppSettings': {
        'EmrSettings': {
            'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"],
            'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", 
                             "arn:aws:iam::emr-accountID:role/AnotherServiceRole"]
        }
        
    }
})
resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name")

resp['CreationTime'] = str(resp['CreationTime'])
resp['LastModifiedTime'] = str(resp['LastModifiedTime'])
print(json.dumps(resp, indent=2))
```

------
#### [ Preload runtime roles in Studio Classic ]

將 `AccessRole` (`AssumableRole`) 的 ARN 提供給您的 SageMaker AI 執行角色。ARN 會在啟動時由 Jupyter 伺服器載入。Studio 使用的執行角色擔任該跨帳戶角色，以探索並連線至*信任帳戶*中的 Amazon EMR 叢集。

您可以使用生命週期組態 (LCC) 指令碼來指定此資訊。您可以將 LCC 附加至您的網域或特定使用者設定檔。您使用的 LCC 指令碼必須是 JupyterServer 組態。如需如何建立 LCC 指令碼的詳細資訊，請參閱[搭配 Studio Classic 使用生命週期組態](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lcc.html)。

下列為範例 LCC 指令碼。若要修改指令碼，請將 `AssumableRole` 和 `emr-account` 取代為其各自的值。跨帳戶的數量限制為五個。

下列程式碼片段為範例 LCC bash 指令碼，如果您的 Studio Classic 應用程式和叢集位於相同的帳戶中則可套用：

```
#!/bin/bash

set -eux

FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE"
FILE_NAME="emr-configurations-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "emr-execution-role-arns":
    {
      "123456789012": [
          "arn:aws:iam::123456789012:role/emr-execution-role-1",
          "arn:aws:iam::123456789012:role/emr-execution-role-2"
      ]
    }
}
EOF
```

如果您的 Studio Classic 應用程式和叢集位於不同的帳戶中，請指定可以使用該叢集的 Amazon EMR 存取角色。在下列範例政策中，*123456789012* 是 Amazon EMR 叢集帳戶 ID，而 *212121212121* 和 *434343434343* 則是允許的 Amazon EMR 存取角色的 ARN。

```
#!/bin/bash

set -eux

FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE"
FILE_NAME="emr-configurations-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "emr-execution-role-arns":
    {
      "123456789012": [
          "arn:aws:iam::212121212121:role/emr-execution-role-1",
          "arn:aws:iam::434343434343:role/emr-execution-role-2"
      ]
    }
}
EOF

# add your cross-account EMR access role
FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE"
FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "123456789012": "arn:aws:iam::123456789012:role/cross-account-emr-access-role"
}
EOF
```

------

# 參考政策
<a name="studio-set-up-emr-permissions-reference"></a>
+ **列出 Amazon EMR 政策**：此政策允許執行下列動作：
  + `AllowPresignedUrl` 允許產生預先簽章的 URL，用於從 Studio 內存取 Spark UI。
  + `AllowClusterDiscovery` 和 `AllowClusterDetailsDiscovery` 允許列出和描述所提供區域和帳戶中的 Amazon EMR 叢集。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllowPresignedUrl",
              "Effect": "Allow",
              "Action": [
                  "elasticmapreduce:CreatePersistentAppUI",
                  "elasticmapreduce:DescribePersistentAppUI",
                  "elasticmapreduce:GetPersistentAppUIPresignedURL",
                  "elasticmapreduce:GetOnClusterAppUIPresignedURL"
              ],
              "Resource": [
                  "arn:aws:elasticmapreduce:us-east-1:111122223333:cluster/*"
              ]
          },
          {
              "Sid": "AllowClusterDetailsDiscovery",
              "Effect": "Allow",
              "Action": [
                  "elasticmapreduce:DescribeCluster",
                  "elasticmapreduce:ListInstances",
                  "elasticmapreduce:ListInstanceGroups",
                  "elasticmapreduce:DescribeSecurityConfiguration"
              ],
              "Resource": [
                  "arn:aws:elasticmapreduce:us-east-1:111122223333:cluster/*"
              ]
          },
          {
              "Sid": "AllowClusterDiscovery",
              "Effect": "Allow",
              "Action": [
                  "elasticmapreduce:ListClusters"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ **建立 Amazon EMR 叢集政策**：此政策允許執行下列動作：
  + `AllowEMRTemplateDiscovery` 允許在 Service Catalog 中搜尋 Amazon EMR 範本。Studio 和 Studio Classic 使用此項目來顯示可用的範本。
  + `AllowSagemakerProjectManagement` 啟用 [什麼是 SageMaker AI 專案？](sagemaker-projects-whatis.md) 的建立。在 Studio 或 Studio Classic 中，存取 AWS Service Catalog 是透過 管理[什麼是 SageMaker AI 專案？](sagemaker-projects-whatis.md)。

  所提供 JSON 中定義的 IAM 政策會授予這些許可。將陳述式清單複製到您角色的內嵌政策之前，請將 *region* 和 *accountID* 取代為您的實際區域和 AWS 帳戶 ID 值。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllowEMRTemplateDiscovery",
              "Effect": "Allow",
              "Action": [
                  "servicecatalog:SearchProducts"
              ],
              "Resource": "*"
          },
          {
              "Sid": "AllowSagemakerProjectManagement",
              "Effect": "Allow",
              "Action": [
                  "sagemaker:CreateProject",
                  "sagemaker:DeleteProject"
              ],
              "Resource": "arn:aws:sagemaker:us-east-1:111122223333:project/*"
          }
      ]
  }
  ```

------
+ **網域、使用者設定檔和空間更新動作政策 **：以下政策授予許可，以更新指定區域和 AWS 帳戶中的 SageMaker AI 網域、使用者設定檔和空間。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "SageMakerUpdateResourcesPolicy",
              "Effect": "Allow",
              "Action": [
                  "sagemaker:UpdateDomain",
                  "sagemaker:UpdateUserprofile",
                  "sagemaker:UpdateSpace"
              ],
              "Resource": [
                  "arn:aws:sagemaker:us-east-1:111122223333:domain/*",
                  "arn:aws:sagemaker:us-east-1:111122223333:user-profile/*"
              ]
          }
      ]
  }
  ```

------

# 使用者指南
<a name="studio-emr-user-guide"></a>

本節涵蓋資料科學家和資料工程師如何從 Studio 或 Studio Classic 啟動、探索、連線至或終止 Amazon EMR 叢集。

在使用者可以列出或啟動叢集之前，管理員必須已在 Studio 環境中設定必要的設定。如需管理員如何設定 Studio 環境以允許自行佈建和列出 Amazon EMR 叢集的相關資訊，請參閱[管理員指南](studio-emr-admin-guide.md)。

**Topics**
+ [支援的映像和核心，可從 Studio 或 Studio Classic 連線至 Amazon EMR 叢集](#studio-notebooks-emr-cluster-connect-kernels)
+ [使用您自己的映像](#studio-notebooks-emr-byoi)
+ [從 Studio 或 Studio Classic 啟動 Amazon EMR 叢集](studio-notebooks-launch-emr-cluster-from-template.md)
+ [從 Studio 或 Studio Classic 列出 Amazon EMR 叢集](discover-emr-clusters.md)
+ [從 SageMaker Studio 或 Studio Classic 連線至 Amazon EMR 叢集](connect-emr-clusters.md)
+ [從 Studio 或 Studio Classic 終止 Amazon EMR 叢集](terminate-emr-clusters.md)
+ [從 Studio 或 Studio Classic 存取 Spark UI](studio-notebooks-access-spark-ui.md)

## 支援的映像和核心，可從 Studio 或 Studio Classic 連線至 Amazon EMR 叢集
<a name="studio-notebooks-emr-cluster-connect-kernels"></a>

下列映像與核心隨附 [sagemaker-studio-analytics-extension](https://pypi.org/project/sagemaker-studio-analytics-extension/)，這是 JupyterLab 延伸模組，其會使用 [Apache Livy](https://livy.apache.org/) 透過 [SparkMagic](https://github.com/jupyter-incubator/sparkmagic) 程式庫連線至遠端 Spark (Amazon EMR) 叢集。
+ **若為 Studio 使用者：**SageMaker Distribution 是適用於資料科學的 Docker 環境，用作 JupyterLab 筆記本執行個體的預設映像。所有版本的 [SageMaker AI Distribution](https://github.com/aws/sagemaker-distribution) 都已預先安裝 `sagemaker-studio-analytics-extension`。
+ **若為 Studio Classic 使用者：**下列映像已預先安裝 `sagemaker-studio-analytics-extension`：
  + DataScience–Python 3 核心
  + DataScience 2.0–Python 3 核心
  + DataScience 3.0–Python 3 核心
  + Spark 1.0–Spark 與 PySpark 核心
  + SparkAnalytics 2.0–SparkMagic 與 PySpark 核心
  + SparkMagic–SparkMagic 與 PySpark 核心
  + PyTorch 1.8–Python 3 核心
  + TensorFlow 2.6–Python3 核心
  + TensorFlow 2.11–Python 3 核心

若要使用其他內建映像或您自己的映像連線至 Amazon EMR 叢集，請遵循 [使用您自己的映像](#studio-notebooks-emr-byoi) 指示。

## 使用您自己的映像
<a name="studio-notebooks-emr-byoi"></a>

若要在 Studio 或 Studio Classic 中自帶映像，並允許您的筆記本連線至 Amazon EMR 叢集，請將以下 [sagemaker-studio-analytics-extension](https://pypi.org/project/sagemaker-studio-analytics-extension/) 延伸模組安裝到您的核心。它支援透過 [SparkMagic](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-magics.html) 程式庫將 SageMaker Studio 或 Studio Classic 筆記本連線至 Spark (Amazon EMR) 叢集。

```
pip install sparkmagic
pip install sagemaker-studio-sparkmagic-lib
pip install sagemaker-studio-analytics-extension
```

此外，若要使用 [Kerberos](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html) 身分驗證連線至 Amazon EMR，您必須安裝 kinit 用戶端。根據您的作業系統，安裝 kinit 用戶端的指令可能會有所不同。若要使用 Ubuntu (基於 Debian) 映像，請使用 `apt-get install -y -qq krb5-user` 命令。

如需在 SageMaker Studio 或 Studio Classic 中自帶映像的詳細資訊，請參閱[自帶 SageMaker 映像](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html)。

# 從 Studio 或 Studio Classic 啟動 Amazon EMR 叢集
<a name="studio-notebooks-launch-emr-cluster-from-template"></a>

資料科學家和資料工程師可以使用管理員設定的 CloudFormation 範本，從 Studio 或 Studio Classic 自行佈建 Amazon EMR 叢集。在使用者可以啟動叢集之前，管理員必須已在 Studio 環境中設定必要的設定。如需管理員如何設定 Studio 環境以允許自行佈建 Amazon EMR 叢集的相關資訊，請參閱[在 Service Catalog 中設定 Amazon EMR CloudFormation 範本](studio-notebooks-set-up-emr-templates.md)。

若要從 Studio 或 Studio Classic 佈建新的 Amazon EMR 叢集：

1. 在 Studio 或 Studio Classic UI 的左側面板中，選取左側導覽功能表中的**資料**節點。向下導覽至 **Amazon EMR 叢集**。這會開啟一個頁面，列出您可以從 Studio 或 Studio Classic 存取的 Amazon EMR 叢集。

1. 選擇右上角的**建立**按鈕。這會開啟新的模態，列出您可用的叢集範本。

1. 選擇範本名稱來選取叢集範本，然後選擇**下一步**。

1. 輸入叢集詳細資訊，例如叢集名稱和管理員設定的任何特定可設定參數，然後選擇**建立叢集**。建立叢集可能需要幾分鐘的時間。  
![\[從 Studio 或 Studio Classic 建立 Amazon EMR 叢集的表單。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-cluster-creation.png)

一旦佈建了叢集，Studio 或 Studio Classic UI 會顯示*叢集已成功建立*訊息。

若要連線至您的叢集，請參閱[從 SageMaker Studio 或 Studio Classic 連線至 Amazon EMR 叢集](connect-emr-clusters.md)

# 從 Studio 或 Studio Classic 列出 Amazon EMR 叢集
<a name="discover-emr-clusters"></a>

資料科學家與資料工程師可以從 Studio 探索 Amazon EMR 叢集，然後連線至其中。Amazon EMR 叢集可能位於與 Studio 相同的 AWS 帳戶中，也可能位於不同的 AWS 帳戶中。

在使用者可以列出或連線至叢集之前，管理員必須已在 Studio 環境中設定必要的設定。如需管理員如何設定 Studio 環境以允許探索執行中 Amazon EMR 叢集的相關資訊，請參閱[管理員指南](studio-emr-admin-guide.md)。如果您的管理員[已設定 Amazon EMR 叢集的跨帳戶探索](studio-notebooks-configure-discoverability-emr-cluster.md)，您可以檢視叢集的合併清單。此清單包含 Studio 所用 AWS 帳戶的叢集，以及已授予您存取權之遠端帳戶的叢集。

若要從 Studio 內檢視可用的 Amazon EMR 叢集清單：

1. 在 Studio UI 的左側導覽功能表中，向下捲動至 **EMR 叢集**。這會開啟一個頁面，列出您可以存取的 Amazon EMR 叢集。

   清單會顥示下列階段中的叢集：**引導中**、**啟動中**、**執行中**、**等待中**。您可以使用篩選條件圖示，依顯示的叢集目前狀態縮小顯示這些叢集的範圍。

1. 選擇您要連線至其中的特定**執行中**叢集，然後參閱[從 SageMaker Studio 或 Studio Classic 連線至 Amazon EMR 叢集](connect-emr-clusters.md)。

# 從 SageMaker Studio 或 Studio Classic 連線至 Amazon EMR 叢集
<a name="connect-emr-clusters"></a>

資料科學家和資料工程師可以直接從 Studio 使用者介面探索 Amazon EMR 叢集，然後連線至其中。開始之前，請確定您已如 [步驟 4：設定許可，以啟用從 Studio 列出和啟動 Amazon EMR 叢集](studio-notebooks-set-up-emr-templates.md#studio-emr-permissions) 一節所述設定必要的許可。這些許可授予 Studio 建立、啟動、檢視、存取和終止叢集的能力。

您可以將 Amazon EMR 叢集直接從 Studio UI 連線至新的 JupyterLab 筆記本，或選擇在執行中 JupyterLab 應用程式的筆記本中啟動連線。

**重要**  
您只能探索並連線至從私有空間啟動的 JupyterLab 和 Studio Classic 應用程式的 Amazon EMR 叢集。確保 Amazon EMR 叢集與您的 Studio 環境位於相同的 AWS 區域。您的 JupyterLab 空間必須使用 SageMaker Distribution 映像版本 `1.10` 或更高版本。

## 使用 Studio UI 連線至 Amazon EMR 叢集
<a name="connect-emr-clusters-ui-options"></a>

若要使用 Studio 或 Studio Classic UI 連線至您的叢集，您可以從 [從 Studio 或 Studio Classic 列出 Amazon EMR 叢集](discover-emr-clusters.md) 中存取的叢集清單或從 SageMaker Studio 或 Studio Classic 中的筆記本啟動連線。

**若要從 Studio UI 將 Amazon EMR 叢集連線至新的 JupyterLab 筆記本：**

1. 在 Studio UI 的左側面板中，選取左側導覽功能表中的**資料**節點。向下導覽至 **Amazon EMR 應用程式和叢集**。這會開啟一個頁面，在 **Amazon EMR 叢集**索引標籤中列出您可以從 Studio 存取的 Amazon EMR 叢集。
**注意**  
如果您或您的管理員已設定允許跨帳戶存取 Amazon EMR 叢集的許可，您可以檢視您已授予 Studio 存取權之所有帳戶的叢集合併清單。

1. 選取您要將其連線至新筆記本的 Amazon EMR 叢集，然後選擇**連接至筆記本**。這會開啟一個模態視窗，其中顯示 JupyterLab 空間的清單。

1. 
   + 選取您要從中啟動 JupyterLab 應用程式的空間，然後選擇**開啟筆記本**。這會從您選擇的空間啟動 JupyterLab 應用程式，並開啟新的筆記本。
**注意**  
Studio Classic 的使用者需要選取映像和核心。如需支援的映像清單，請參閱[支援的映像和核心，可從 Studio 或 Studio Classic 連線至 Amazon EMR 叢集](studio-emr-user-guide.md#studio-notebooks-emr-cluster-connect-kernels)或參閱[使用您自己的映像](studio-emr-user-guide.md#studio-notebooks-emr-byoi)。
   + 或者，您也可以選擇模態視窗頂端的**建立新空間**按鈕來建立新的私有空間。輸入空間的名稱，然後選擇**建立空間並開啟筆記本**。這會建立一個具有預設執行個體類型和最新可用 SageMaker Distribution 映像的私有空間、啟動 JupyterLab 應用程式，並開啟新的筆記本。

1. 如果您選取的叢集不使用 Kerberos、LDAP 或[執行時期角色]()驗證，Studio 會提示您選取憑證類型。選擇 **Http 基本身分驗證**或**無憑證**，然後輸入您的憑證 (如果適用)。

   如果您選取的叢集支援執行時期角色，請選擇 Amazon EMR 叢集可為任務執行而擔任的 IAM 角色名稱。
**重要**  
若要成功將 JupyterLab 筆記本連線至支援執行時期角色的 Amazon EMR 叢集，您必須先將執行時期角色清單與您的網域或使用者設定檔建立關聯，如 [在 Studio 中設定用於 Amazon EMR 叢集存取的 IAM 執行時期角色](studio-notebooks-emr-cluster-rbac.md) 中所述。若無法完成此步驟，將阻止您建立連線。

   選取後，連線命令會填入筆記本的第一個儲存格，並啟動與 Amazon EMR 叢集的連線。

   一旦連接成功，將顯示一則訊息確認連線並啟動 Spark 應用程式。

**或者，您可以從 JupyterLab 或 Studio Classic 筆記本連線至叢集。**

1. 選擇筆記本頂端的**叢集**按鈕。這會開啟模態視窗，列出處於 `Running` 狀態且您可以存取的 Amazon EMR 叢集。您可以在 **Amazon EMR 叢集**索引標籤中查看 `Running` Amazon EMR 叢集。
**注意**  
對於 Studio Classic 的使用者，只有在您從 [支援的映像和核心，可從 Studio 或 Studio Classic 連線至 Amazon EMR 叢集](studio-emr-user-guide.md#studio-notebooks-emr-cluster-connect-kernels) 或從 [使用您自己的映像](studio-emr-user-guide.md#studio-notebooks-emr-byoi) 使用核心時，才能看到**叢集**。如果您在筆記本頂端看不到**叢集**，請確定您的系統管理員[已設定叢集的可探索性](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-configure-discoverability-emr-cluster.html)，並切換至支援的核心。

1. 選取要連線的叢集，然後選擇**連線**。

1. 如果您已將 Amazon EMR 叢集設定為支援[執行時期 IAM 角色](studio-notebooks-emr-cluster-rbac.md)，則可以從 **Amazon EMR 執行角色**下拉式功能表中選取您的角色。
**重要**  
若要成功將 JupyterLab 筆記本連線至支援執行時期角色的 Amazon EMR 叢集，您必須先將執行時期角色清單與您的網域或使用者設定檔建立關聯，如 [在 Studio 中設定用於 Amazon EMR 叢集存取的 IAM 執行時期角色](studio-notebooks-emr-cluster-rbac.md) 中所述。若無法完成此步驟，將阻止您建立連線。

   否則，如果您選擇的叢集不使用 Kerberos、LDAP 或執行時期角色驗證，Studio 或 Studio Classic 會提示您選取憑證類型。您可以選擇 **HTTP 基本身分驗證**或**無憑證**。

1. Studio 新增程式碼區塊，然後將其執行到作用中儲存格以建立連線。此儲存格包含連線魔術命令，以根據您的驗證類型將您的筆記本連線至您的應用程式。

   一旦連接成功，將顯示一則訊息確認連線並啟動 Spark 應用程式。

## 使用連線命令連線至 Amazon EMR 叢集
<a name="connect-emr-clusters-manually"></a>

若要建立與 Amazon EMR 叢集的連線，您可以在筆記本儲存格內執行連線命令。

建立連線時，您可以使用 [Kerberos](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)、[輕量型目錄存取通訊協定 (LDAP)](https://docs.aws.amazon.com/) 或[執行時期 IAM 角色](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-emr-cluster-rbac.html)驗證進行驗證。您選擇的驗證方法取決於您的叢集組態。

您可以參考此範例[在啟用 Kerberos 的 Amazon EMR 叢集上使用 Network Load Balancer 存取 Apache Livy](https://aws.amazon.com/blogs/big-data/access-apache-livy-using-a-network-load-balancer-on-a-kerberos-enabled-amazon-emr-cluster/)，以設定使用 Kerberos 驗證的 Amazon EMR 叢集。或者，您可以在 [aws-samples/sagemaker-studio-emr](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started) GitHub 儲存庫中探索使用 Kerberos 或 LDAP 驗證的 CloudFormation 範例範本。

如果您的管理員已啟用跨帳戶存取，您可以從 Studio Classic 筆記本連線至 Amazon EMR 叢集，無論您的 Studio Classic 應用程式和叢集位於相同的 AWS 帳戶或不同的帳戶中。

對於以下每種驗證類型，請使用指定的命令從 Studio 或 Studio Classic 筆記本連線至叢集。
+ **Kerberos**

  如果您需要跨帳戶 Amazon EMR 存取，請附加 `--assumable-role-arn` 引數。如果您使用 HTTPS 連線至叢集，請附加 `--verify-certificate` 引數。

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type Kerberos --language python 
  [--assumable-role-arn EMR_access_role_ARN ] 
  [--verify-certificate /home/user/certificateKey.pem]
  ```
+ **LDAP**

  如果您需要跨帳戶 Amazon EMR 存取，請附加 `--assumable-role-arn` 引數。如果您使用 HTTPS 連線至叢集，請附加 `--verify-certificate` 引數。

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type Basic_Access --language python 
  [--assumable-role-arn EMR_access_role_ARN ]
  [--verify-certificate /home/user/certificateKey.pem]
  ```
+ **NoAuth**

  如果您需要跨帳戶 Amazon EMR 存取，請附加 `--assumable-role-arn` 引數。如果您使用 HTTPS 連線至叢集，請附加 `--verify-certificate` 引數。

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type None --language python
  [--assumable-role-arn EMR_access_role_ARN ]
  [--verify-certificate /home/user/certificateKey.pem]
  ```
+ **執行期 IAM 角色**

  如果您需要跨帳戶 Amazon EMR 存取，請附加 `--assumable-role-arn` 引數。如果您使用 HTTPS 連線至叢集，請附加 `--verify-certificate` 引數。

  如需使用執行期 IAM 角色連線至 Amazon EMR 叢集的更多資訊，請參閱[在 Studio 中設定用於 Amazon EMR 叢集存取的 IAM 執行時期角色](studio-notebooks-emr-cluster-rbac.md)。

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type Basic_Access \
  --emr-execution-role-arn arn:aws:iam::studio_account_id:role/emr-execution-role-name
  [--assumable-role-arn EMR_access_role_ARN]
  [--verify-certificate /home/user/certificateKey.pem]
  ```

## 透過 HTTPS 連線至 Amazon EMR 叢集
<a name="connect-emr-clusters-ssl"></a>

如果您已將 Amazon EMR 叢集設定為啟用傳輸加密，以及為 HTTPS 設定了 Apache Livy 伺服器，並希望 Studio 或 Studio Classic 使用 HTTPS 與 Amazon EMR 通訊，則需要設定 Studio 或 Studio Classic 以存取您的憑證金鑰。

對於自我簽署或本機憑證授權單位 (CA) 簽署憑證，您可以透過兩個步驟執行此作業：

1. 使用下列其中一個選項，將憑證的 PEM 檔案下載至本機檔案系統：
   + Jupyter 的內建檔案上傳功能。
   + 筆記本儲存格。
   + (僅適用於 Studio Classic 使用者) 生命週期組態 (LCC) 指令碼。

     如需如何使用 LCC 指令碼的相關資訊，請參閱[使用生命週期組態指令碼自訂筆記本執行個體](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html)

1. 在連線命令的 `--verify-certificate` 引數中提供憑證路徑，以啟用憑證驗證。

   ```
   %sm_analytics emr connect --cluster-id cluster_id \
   --verify-certificate /home/user/certificateKey.pem ...
   ```

對於公有 CA 發行憑證，請將 `--verify-certificate` 參數設定為 `true` 來設定憑證驗證。

或者，您可以將 `--verify-certificate` 參數設定為 `false` 來停用憑證驗證。

您可以在 [使用連線命令連線至 Amazon EMR 叢集](#connect-emr-clusters-manually) 中找到 Amazon EMR 叢集的可用連線命令清單。

# 從 Studio 或 Studio Classic 終止 Amazon EMR 叢集
<a name="terminate-emr-clusters"></a>

以下程序說明如何從 Studio 或 Studio Classic 筆記本終止 Amazon EMR 叢集。

**若要終止 `Running` 狀態中的叢集，請導覽至可用的 Amazon EMR 叢集清單。**

1. 在 Studio UI 中，向下捲動至左側導覽功能表中的**資料**節點。

1. 向下導覽至 **EMR 叢集**節點。這會開啟一個頁面，列出您可以存取的 Amazon EMR 叢集。

1. 選取您要終止的叢集名稱，然後選擇**終止**。

1. 這會開啟確認視窗，通知您叢集的任何待處理工作或資料將在終止後永久遺失。再次選擇**終止**以確認。

# 從 Studio 或 Studio Classic 存取 Spark UI
<a name="studio-notebooks-access-spark-ui"></a>

以下各節提供了從 SageMaker AI Studio 或 Studio Classic 筆記本存取 Spark UI 的指示。Spark UI 可讓您監控並偵錯從 Studio 或 Studio Classic 筆記本提交以在 Amazon EMR 執行的 Spark 任務。SSH 通道與預先簽署的網址是存取 Spark 使用者介面的兩種方式。

## 設定 SSH 通道以供 Spark 使用者介面存取
<a name="studio-notebooks-emr-ssh-tunneling"></a>

若要設定 SSH 通道以存取 Spark 使用者介面，請遵循本節中的兩個選項之一。

設定 SSH 通道的選項：
+ [選項 1：使用本機連接埠轉送將 SSH 通道設定為主節點](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ssh-tunnel-local.html)
+ [第 1 部分選項 2：使用動態連接埠轉送將 SSH 通道設定為主節點](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ssh-tunnel.html)

  [第 2 部分選項 2：設定代理設定，以查看主節點上託管的網站](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-proxy.html)

如需有關檢視 Amazon EMR 叢集上託管的 Web 介面的詳細資訊，請參閱[檢視 Amazon EMR 叢集上託管的 Web 介面](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html)。您還可以存取您的 Amazon EMR 主控台以存取 Spark 使用者介面。

**注意**  
即使預簽名 URL 不可用，您也可以設定 SSH 通道。

## 預先簽章的 URL
<a name="studio-notebooks-emr-spark-ui-presigned-urls"></a>

若要建立可從 SageMaker Studio 或 Studio Classic 筆記本存取 Amazon EMR 上 Spark UI 的一鍵式 URL，您必須啟用下列 IAM 許可。選擇適用於您的選項：
+ **對於與 SageMaker Studio 或 Studio Classic 筆記本位於相同帳戶的 Amazon EMR 叢集：將下列許可新增至 SageMaker Studio 或 Studio Classic IAM 執行角色。**
+ **對於位於不同帳戶 (不是 SageMaker Studio 或 Studio Classic 筆記本) 中的 Amazon EMR 叢集：將下列許可新增至您為 [從 Studio 或 Studio Classic 列出 Amazon EMR 叢集](discover-emr-clusters.md) 建立的跨帳戶角色。**

**注意**  
您可以從下列區域的主控台存取預先簽署的 URL：  
美國東部 (維吉尼亞北部) 區域
美國西部 (加利佛尼亞北部) 區域
加拿大 (中部) 區域
歐洲 (法蘭克福) 區域
歐洲 (斯德哥爾摩) 區域
歐洲 (愛爾蘭) 區域
歐洲 (倫敦) 區域
歐洲 (巴黎) 區域
亞太區域 (東京) 區域
亞太區域 (首爾) 區域
亞太區域 (雪梨) 區域
亞太區域 (孟買) 區域
亞太地區 (新加坡) 區域
南美洲 (聖保羅)

 下列政策可讓您存取執行角色的預先簽署 URL。

```
{
        "Sid": "AllowPresignedUrl",
        "Effect": "Allow",
        "Action": [
            "elasticmapreduce:DescribeCluster",
            "elasticmapreduce:ListInstanceGroups",
            "elasticmapreduce:CreatePersistentAppUI",
            "elasticmapreduce:DescribePersistentAppUI",
            "elasticmapreduce:GetPersistentAppUIPresignedURL",
            "elasticmapreduce:GetOnClusterAppUIPresignedURL"
        ],
        "Resource": [
            "arn:aws:elasticmapreduce:region:account-id:cluster/*"
        ]
}
```

# 部落格和白皮書
<a name="studio-notebooks-emr-resources"></a>

下列部落格會針對影片檢閱使用情緒預測的案例研究，說明執行完整機器學習工作流程的程序。這包括資料準備、監控 Spark 工作，以及訓練和部署機器學習 (ML) 模型，以直接從您的 Studio 或 Studio Classic 筆記本取得預測。
+ [從 SageMaker Studio 或 Studio Classic 建立和管理 Amazon EMR 叢集，以執行互動式 Spark 和 ML 工作負載](https://aws.amazon.com/blogs/machine-learning/part-1-create-and-manage-amazon-emr-clusters-from-sagemaker-studio-to-run-interactive-spark-and-ml-workloads/)。
+ 若要將使用案例擴展到跨帳戶組態，其中 SageMaker Studio 或 Studio Classic 和您的 Amazon EMR 叢集部署在不同的 AWS 帳戶中，請參閱[從 SageMaker Studio 或 Studio Classic 建立和管理 Amazon EMR 叢集，以執行互動式 Spark 和 ML 工作負載 - 第 2 部分](https://aws.amazon.com/blogs/machine-learning/part-2-create-and-manage-amazon-emr-clusters-from-sagemaker-studio-to-run-interactive-spark-and-ml-workloads/)。

另請參閱：
+ 演練在[啟用 Kerberos 的 Amazon EMR 叢集上使用 Network Load Balancer 設定 存取 Apache Livy](https://aws.amazon.com/blogs/big-data/access-apache-livy-using-a-network-load-balancer-on-a-kerberos-enabled-amazon-emr-cluster/)。
+ AWS [SageMaker Studio 或 Studio Classic 最佳實務](https://docs.aws.amazon.com/whitepapers/latest/sagemaker-studio-admin-best-practices/sagemaker-studio-admin-best-practices.html)的白皮書。

# 疑難排解
<a name="studio-notebooks-emr-troubleshooting"></a>

從 Studio 或 Studio Classic 筆記本使用 Amazon EMR 叢集時，您可能會在連線或使用過程中遇到各種潛在問題或挑戰。為了協助您進行疑難排解和解決這些錯誤，本節提供可能發生的常見問題指引。

以下是從 Studio 或 Studio Classic 筆記本連線或使用 Amazon EMR 叢集時可能發生的常見錯誤。

## 對 Livy 連線掛起或失敗進行故障診斷
<a name="studio-notebooks-emr-troubleshooting.memoryerror"></a>

以下是從 Studio 或 Studio Classic 筆記本使用 Amazon EMR 叢集時可能發生的 Livy 連線問題。
+ **您的 Amazon EMR 叢集發生記憶體不足錯誤。**

  透過 `sparkmagic` 進行 Livy 連線掛起或失敗的一個可能原因是您的 Amazon EMR 叢集遇到記憶體不足錯誤。

  依預設，Apache Spark 驅動程式的 Java 設定參數 `spark.driver.defaultJavaOptions` 設定為 `-XX:OnOutOfMemoryError='kill -9 %p'`。這表示當驅動程式遇到 `OutOfMemoryError` 時採取的預設動作是透過發送 SIGKILL 訊號來終止驅動程式。當 Apache Spark 驅動程式終止時，任何依賴該驅動程式透過 `sparkmagic` 的 Livy 連線都會掛起或失敗。這是因為 Spark 驅動程式負責管理 Spark 應用程式資源，包括任務排程與執行。如果沒有驅動程式，Spark 應用程式就無法運作，並且任何嘗試與它互動的嘗試都會失敗。

  如果您懷疑 Spark 叢集遇到記憶體問題，可以檢查 [Amazon EMR 日誌](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-view-web-log-files.html)。由於記憶體不足錯誤而終止的容器通常以代碼 `137` 退出。在這種情況下，您需要重新啟動 Spark 應用程式並建立新的 Livy 連線，以繼續與 Spark 叢集的互動。

  您可以參考知識庫文章[如何解決 Amazon EMR 上 Spark 中「YARN 因超過記憶體限制而終止容器」的錯誤？](https://repost.aws/knowledge-center/emr-spark-yarn-memory-limit) 在 AWS re:Post 上了解可用於解決out-of-memory問題的各種策略和參數。

  我們建議您參閱 [Amazon EMR 最佳實務指南](https://aws.github.io/aws-emr-best-practices/)，以取得有關在 Amazon EMR 叢集上執行 Apache Spark 工作負載的最佳實務和調整指引。
+ **第一次連線至 Amazon EMR 叢集時，您的 Livy 工作階段逾時會逾時。**

  當您最初使用 [sagemaker-studio-analytics-extension](https://pypi.org/project/sagemaker-studio-analytics-extension/) 連線至 Amazon EMR 叢集 (此擴展功能允許使用 [Apache Livy](https://livy.apache.org/) 透過 [SparkMagic](https://github.com/jupyter-incubator/sparkmagic) 程式庫連接到遠端 Spark (Amazon EMR) 叢集) 時，您可能會遇到連線逾時錯誤：

  `An error was encountered: Session 0 did not start up in 60 seconds.`

  如果您的 Amazon EMR 叢集在建立連線時需要初始化 Spark 應用程式，則看到連線逾時錯誤的機會就會增加。

  為了減少透過分析擴展模組使用 Livy 連線至 Amazon EMR 叢集時發生逾時的可能性，`sagemaker-studio-analytics-extension` 版本 `0.0.19` 及更新版本會將預設伺服器工作階段逾時覆寫為 `120` 秒，而非 `sparkmagic` 的預設值 `60` 秒。

  我們建議您透過執行下列升級命令來更快地升級您的擴充 `0.0.18` 功能。

  ```
  pip install --upgrade sagemaker-studio-analytics-extension
  ```

  請注意，在 `sparkmagic` 中提供自訂逾時組態時，`sagemaker-studio-analytics-extension` 會遵循此覆寫。不過，將工作階段逾時設定為 `60` 秒會自動觸發 `sagemaker-studio-analytics-extension` 預設伺服器工作階段逾時 `120`秒。

# 使用 AWS Glue 互動式工作階段進行資料準備
<a name="studio-notebooks-glue"></a>

[AWS Glue 互動式工作階段](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions-overview.html)是一種無伺服器服務，您可以加入其中以收集、轉換、清理和準備資料，以儲存在您的資料湖和資料管道中。 AWS Glue 互動式工作階段提供隨需的無伺服器 Apache Spark 執行時期環境，您可以於幾秒鐘內在專用資料處理單元 (DPU) 上將其初始化，而無需佈建和管理複雜的運算叢集基礎設施。初始化後，您可以在 Studio 或 Studio Classic 筆記本中瀏覽 AWS Glue 資料目錄、執行大型查詢 AWS Lake Formation、存取由 管理的資料，並使用 Spark 以互動方式分析和準備資料。然後，您可以使用準備好的資料，在 SageMaker Studio 或 Studio Classic 內使用專門打造的 ML 工具訓練、調整和部署模型。當您想要具有可設定性和彈性的中等控制權的無伺服器 Spark 服務時，應考慮資料準備工作負載的 AWS Glue 互動式工作階段。

您可以在 Studio 或 Studio Classic 中啟動 JupyterLab 筆記本來啟動 AWS Glue 互動式工作階段。啟動您的筆記本時，請選擇內建 `Glue PySpark and Ray` 或 `Glue Spark` 核心。這會自動啟動無伺服器互動式 Spark 工作階段。您不需要佈建或管理任何運算叢集或基礎架構。初始化後，您可以從 Studio 或 Studio Classic 筆記本內探索您的資料並與之互動。

在 Studio 或 Studio Classic 中啟動 AWS Glue 互動式工作階段之前，您需要設定適當的角色和政策。此外，您可能需要提供其他資源的存取權，例如 Amazon S3 儲存貯體。如需必要 IAM 政策的詳細資訊，請參閱[Studio 或 Studio Classic 中 AWS Glue 互動式工作階段的許可](getting-started-glue-sm.md#glue-sm-iam)。

Studio 和 Studio Classic 為您的 AWS Glue 互動式工作階段提供預設組態，不過，您可以使用 AWS Glue Jupyter 魔術命令的完整目錄來進一步自訂您的環境。如需有關您可以在 AWS Glue 互動式工作階段中使用的預設和其他 Jupyter 魔法的資訊，請參閱 [在 Studio 或 Studio Classic 中設定您的 AWS Glue 互動式工作階段](getting-started-glue-sm.md#glue-sm-magics)。
+ 對於啟動 AWS Glue 互動式工作階段的 Studio Classic 使用者，他們可以從下列映像和核心中選取：
  + 映像：`SparkAnalytics 1.0`、`SparkAnalytics 2.0`
  + 核心：`Glue Python [PySpark and Ray]` 和 `Glue Spark`
+ 對於 Studio 使用者，請使用預設 [SageMaker Distribution 映像](https://github.com/aws/sagemaker-distribution)，然後選取 `Glue Python [PySpark and Ray]` 或 `Glue Spark` 核心。

# 開始使用 AWS Glue 互動式工作階段
<a name="getting-started-glue-sm"></a>

在本指南中，您將了解如何在 SageMaker AI Studio Classic 中啟動 AWS Glue 互動式工作階段，並使用 Jupyter 魔術管理您的環境。

## Studio 或 Studio Classic 中 AWS Glue 互動式工作階段的許可
<a name="glue-sm-iam"></a>

本節列出在 Studio 或 Studio Classic 中執行 AWS Glue 互動式工作階段所需的政策，並說明如何進行設定。它特別詳細說明如何：
+ 將 `AwsGlueSessionUserRestrictedServiceRole` 受管政策連接至您的 SageMaker AI 執行角色。
+ 在您的 SageMaker AI 執行角色建立內嵌自訂政策。
+ 修改 SageMaker AI 執行角色的信任關係。

**將 `AwsGlueSessionUserRestrictedServiceRole` 管理的政策連接至執行角色**

1. 開啟 [IAM 主控台](https://console.aws.amazon.com/iam/)。

1. 在左側面板中選取**角色**。

1. 尋找您的使用者設定檔所使用的 Studio Classic 執行角色。如需如何檢視使用者設定檔的相關資訊，請參閱[檢視網域中的使用者設定檔](domain-user-profile-view.md)。

1. 選擇您的角色名稱，以存取角色摘要頁面。

1. 在**許可**索引標籤下，從**新增權限**下拉式功能表選取**連接政策**。

1. 選取 `AwsGlueSessionUserRestrictedServiceRole` 管理政策旁的核取方塊。

1. 選擇**連接政策**。

   摘要頁面會顯示您新增的管理策略。

   

**若要在您的執行角色建立內嵌自訂政策**

1. 在**新增許可**下拉式功能表中選取**建立內嵌政策**。

1. 選取 **JSON** 標籤。

1. 在下列政策複製並貼上。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "uniqueStatementId",
   
               "Effect": "Allow",
               "Action": [
   	     "iam:GetRole",
                   "iam:PassRole",
                   "sts:GetCallerIdentity"
               ],
               "Resource": "arn:aws:iam::*:role/GlueServiceRole*"
           }
       ]
   }
   ```

------

1. 選擇**檢閱政策**。

1. 輸入**名稱**，然後選擇**建立政策**。

   總結頁面會顯示您新增的自訂政策。

   

**修改執行角色的信任關係**

1. 選取**信任關係**標籤。

1. 選擇**編輯信任政策**。

1. 在下列政策複製並貼上。

------
#### [ JSON ]

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Principal": {
               "Service": [
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
               ]
           },
           "Action": "sts:AssumeRole"
       }
   ]
   }
   ```

------

1. 選擇**更新政策**。

如果您需要存取其他 AWS 資源，可以新增其他角色和政策。如需您可以包含的其他角色和政策的說明，請參閱 AWS Glue 文件中的[使用 IAM 的互動式工作階段](https://docs.aws.amazon.com/glue/latest/dg/glue-is-security.html)。

## 標籤傳播
<a name="glue-sm-tag-propagation"></a>

標籤通常用於追蹤和分配成本、控制對工作階段的存取權，以及隔離資源等。若要了解如何使用標記將中繼資料新增至 AWS 資源，或有關常見使用案例的詳細資訊，請參閱[其他資訊](#more-information)。

您可以啟用 AWS 標籤自動傳播到從 Studio 或 Studio Classic UI 內建立的新 AWS Glue 互動式工作階段。從 Studio 或 Studio Classic 建立互動式工作階段時 AWS Glue ，連接到使用者設定檔或共用空間的任何[使用者定義標籤](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html)都會轉移到新的 AWS Glue 互動式工作階段。此外，Studio 和 Studio Classic 會自動將兩個 AWS產生的內部標籤 ((`sagemaker:user-profile-arn` 和 `sagemaker:domain-arn`) 或 (`sagemaker:shared-space-arn` 和 `sagemaker:domain-arn`)) 新增至從其 UI 建立的新 AWS Glue 互動式工作階段。您可以使用這些標籤，跨個別網域、使用者設定檔或空間彙總成本。

### 啟用標籤傳播
<a name="enable-propagation"></a>

若要啟用標籤自動傳播到新的 AWS Glue 互動式工作階段，請為您的 SageMaker AI 執行角色和與 AWS Glue 工作階段相關聯的 IAM 角色設定下列許可：

**注意**  
根據預設，與 AWS Glue 互動式工作階段相關聯的角色與 SageMaker AI 執行角色相同。您可以使用 `%iam_role` 魔術命令，為 AWS Glue 互動式工作階段指定不同的執行角色。如需有關可用於設定 AWS Glue 互動式工作階段的 Jupyter 魔術命令相關資訊，請參閱[在 Studio 或 Studio Classic 中設定您的 AWS Glue 互動式工作階段](#glue-sm-magics)。
+ *在您的 SageMaker AI 執行角色上*：建立新的內嵌政策，然後貼上下列 JSON 檔案。此政策授予執行角色許可，以描述 (`DescribeUserProfile`、`DescribeSpace`、`DescribeDomain`) 和列出在使用者設定檔、共用空間和 SageMaker AI 網域上設定的標籤 (`ListTag`)。

  ```
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:ListTags"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:user-profile/*",
          "arn:aws:sagemaker:*:*:space/*"
      ]
  },
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:DescribeUserProfile"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:user-profile/*"
      ]
  },
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:DescribeSpace"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:space/*"
      ]
  }
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:DescribeDomain"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:domain/*"
      ]
  }
  ```
+ *在 AWS Glue 工作階段的 IAM 角色*：建立新的內嵌政策，然後貼上下列 JSON 檔案。該政策授予您的角色許可，可以將標籤 (`TagResource`) 連接到工作階段，或是擷取其標籤清單 (`GetTags`)。

  ```
  {
      "Effect": "Allow",
      "Action": [
          "glue:TagResource",
          "glue:GetTags"
      ],
      "Resource": [
          "arn:aws:glue:*:*:session/*"
      ]
  }
  ```

**注意**  
套用這些許可時發生的失敗不會阻止建立 AWS Glue 互動式工作階段。您可以在 Studio 或 Studio Classic [CloudWatch](https://docs.aws.amazon.com//sagemaker/latest/dg/monitoring-cloudwatch.html) 日誌中找到失敗原因的詳細資訊。
您必須重新啟動 AWS Glue 互動式工作階段的核心，才能傳播標籤值的更新。

請務必遵循以下幾點：
+ 標籤連接至工作階段後，就無法透過傳播的方式移除。

  您可以透過 AWS CLI、 AWS Glue API 或 https：//[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/) 從 AWS Glue 互動式工作階段移除標籤。例如，您可以使用 ，提供工作階段的 ARN 和您要 AWS CLI移除的標籤索引鍵來移除標籤，如下所示：

  ```
  aws glue untag-resource \
  --resource-arn arn:aws:glue:region:account-id:session:session-name \
  --tags-to-remove tag-key1,tag-key2
  ```
+ Studio 和 Studio Classic 會將兩個 AWS產生的內部標籤 ((`sagemaker:user-profile-arn` 和 `sagemaker:domain-arn`) 或 (`sagemaker:shared-space-arn` 和 `sagemaker:domain-arn`)) 新增至從其 UI 建立的新 AWS Glue 互動式工作階段。這些標籤會計入所有 AWS 資源上設定的 50 個標籤限制。`sagemaker:user-profile-arn` 與 `sagemaker:shared-space-arn` 皆包含它們所屬的網域 ID。
+ 以 `aws:`、 `AWS:`或任何大小寫字母組合做為索引鍵字首的標籤索引鍵不會傳播，並保留供 AWS 使用。

### 其他資訊
<a name="more-information"></a>

您可以參閱下列資源，取得更多資訊。
+ 若要了解如何使用標記將中繼資料新增至 AWS 資源，請參閱[標記 AWS 資源](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)。
+ 如需使用標籤追蹤成本的相關資訊，請參閱 Studio 管理最佳實務中的[成本分析](https://docs.aws.amazon.com/whitepapers/latest/sagemaker-studio-admin-best-practices/cost-attribution.html)。
+ 如需 AWS Glue 根據標籤金鑰控制對 的存取的資訊，請參閱 [ABAC with AWS Glue](glue/latest/dg/security_iam_service-with-iam.html#security_iam_service-with-iam-tags)。

## 在 Studio 或 Studio Classic 上啟動 AWS Glue 互動式工作階段
<a name="glue-sm-launch"></a>

建立角色、政策和 SageMaker AI 網域後，您可以在 Studio 或 Studio Classic 啟動 AWS Glue 互動式工作階段。

1. 登入 SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 從左側導覽窗格中，選擇 **Studio**。

1. 在 Studio 登陸頁面中，選取用於啟動 Studio 的網域和使用者設定檔。

1. 選擇**開啟 Studio** 並啟動 JupyterLab 或 Studio Classic 應用程式。

1. 在 Jupyter 檢視中，選擇**檔案**，然後依序選擇**新增**和**筆記本**。

1. 對於 Studio Classic 使用者：在**映像**下拉式功能表中，選取 **SparkAnalytics 1.0** 或 **SparkAnalytics 2.0**。在**核心**下拉式功能表中，選取 **Glue Spark** 或 **Glue Python [PySpark 與 Ray]**。選擇**選取**。

   對於 Studio 使用者，選取 **Glue Spark** 或 **Glue Python [PySpark and Ray]** 核心

1. (選用) 使用 Jupyter 魔術命令自訂您的環境。如需 Jupyter 魔術命令的更多相關資訊，請參閱 [在 Studio 或 Studio Classic 中設定您的 AWS Glue 互動式工作階段](#glue-sm-magics)。

1. 開始撰寫您的 Spark 資料處理指令碼。以下[筆記本](https://github.com/aws/amazon-sagemaker-examples/blob/main/use-cases/pyspark_etl_and_training/pyspark-etl-training.ipynb)使用 AWS Glue 互動式工作階段、探索性資料分析、資料預先處理，以及最後使用 SageMaker AI 針對處理的資料訓練模型，展示大型資料集上 ETL 的end-to-end工作流程。

## 在 Studio 或 Studio Classic 中設定您的 AWS Glue 互動式工作階段
<a name="glue-sm-magics"></a>

**注意**  
所有魔術組態都會在 AWS Glue 核心生命週期內轉移到後續工作階段。

您可以在 AWS Glue 互動式工作階段中使用 Jupyter 魔法來修改工作階段和組態參數。魔術命令是 Jupyter 儲存格開頭字首為 `%` 的簡短命令，它提供了快速簡便的方法幫助您控制環境。在您的 AWS Glue 互動式工作階段中，預設會為您設定下列魔法：


| 魔術命令 | 預設值 | 
| --- | --- | 
| %glue\$1version |  3.0  | 
| %iam\$1role |  *連接至 SageMaker AI 網域的執行角色*  | 
| %region |  您的區域  | 

您可以使用魔術命令進一步自訂環境。例如，如果您要將分配至任務的工作者數量從預設值 5 變更為 10，您可以指定 `%number_of_workers 10`。如果您要將工作階段設定為在閒置時間 10 分鐘後停止，而不是預設的 2880，您可以指定 `%idle_timeout 10`。

目前在 中可用的所有 Jupyter 魔術 AWS Glue 也可以在 Studio 或 Studio Classic 中使用。如需可用的 AWS Glue 魔術功能完整清單，請參閱[設定 AWS Glue Jupyter 和 AWS Glue Studio 筆記本的互動式工作階段](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions-magics.html)。

# AWS Glue 互動式工作階段定價
<a name="glue-sm-pricing"></a>

當您在 Studio 或 Studio Classic 筆記本上使用 AWS Glue 互動式工作階段時，您需要另外支付 AWS Glue 和 Studio 筆記本上的資源使用費。

AWS 根據工作階段作用中的時間長度和使用的資料處理單位 (DPU) 數量，收取 AWS Glue 互動式工作階段的費用。我們會根據您執行工作負載所使用的 DPU 數量按秒計費。 AWS Glue 互動式工作階段會指派預設五個 DPU，且至少需要兩個 DPU。每個互動式工作階段也有一分鐘的計費持續時間下限。若要查看 AWS Glue 費率和定價範例，或使用 AWS 定價計算器估算成本，請參閱[AWS Glue 定價。 ](https://aws.amazon.com/glue/pricing)

您的 Studio 或 Studio Classic 筆記本在 Amazon EC2 執行個體上執行，並根據使用的持續時間向您收取所選執行個體類型的費用。當您選取 `SparkAnalytics` 映像和相關聯的核心時，Studio Classic 會為您指派 `ml-t3-medium` 的預設 EC2 執行個體類型。您可以變更 Studio Classic 筆記本的執行個體類型，以符合您的工作負載。如需 Studio 和 Studio Classic 定價的相關資訊，請參閱 [Amazon SageMaker 定價](https://aws.amazon.com/sagemaker/pricing)。

# 使用 Amazon SageMaker Data Wrangler 準備機器學習資料
<a name="data-wrangler"></a>

**重要**  
Amazon SageMaker Data Wrangler 已整合至 Amazon SageMaker Canvas。在 SageMaker Canvas 的新 Data Wrangler 體驗中，除了視覺化介面之外，您還可以使用自然語言介面來探索和轉換您的資料。如需 SageMaker Canvas 中 Data Wrangler 的詳細資訊，請參閱[資料準備](canvas-data-prep.md)。

Amazon SageMaker Data Wrangler (Data Wrangler) 是 Amazon SageMaker Studio Classic 的一種功能，提供端對端解決方案來匯入、準備、轉換、特徵化和分析資料。您可以將 Data Wrangler 資料準備流程整合到您的機器學習 (ML) 工作流程中，幾乎不使用程式碼，簡化和精簡資料預先處理和特徵工程。您也可以新增自己的 Python 指令碼和轉換來自訂工作流程。

Data Wrangler 提供下列核心功能，協助您分析和準備機器學習應用程式的資料。
+ **匯入** – 連線至 Amazon Simple Storage Service (Amazon S3)、 Amazon Athena (Athena)、Amazon Redshift、Snowflake 和 Databricks 並匯入資料。
+ **資料流程**——建立資料流程來定義一系列機器學習資料準備步驟。您可以使用一個流程來合併不同資料來源的資料集、識別要套用至資料集的轉換數量和類型，以及定義可整合至機器學習管道的資料準備工作流程。
+ **轉換**——使用字串、向量和數值資料格式化工具等標準*轉換*來清理及轉換資料集。使用文字、日期/時間內嵌項目和分類編碼等轉換，將資料特徵化。
+ **產生資料洞見**——使用 Data Wrangler 資料洞見和品質報告，自動驗證資料品質並偵測資料中的異常情況。
+ **分析**——在流程中的任何時間點分析您的資料集中的特徵。Data Wrangler 包含散佈圖和長條圖等內建資料視覺化工具，以及目標洩漏分析和快速建模等資料分析工具，以了解特徵相互關聯性。
+ **匯出**——將資料準備工作流程匯出至其他位置。以下為範例位置：
  + Amazon Simple Storage Service (Amazon S3) 儲存貯體
  + Amazon SageMaker Pipelines - 使用 Pipelines 自動化模型部署。您可以將已轉換的資料直接匯出至管道。
  + Amazon SageMaker Feature Store——將特徵及其資料存放在集中式存放區中。
  + Python 指令碼——將資料及其轉換存放在自訂工作流程的 Python 指令碼中。

要開始使用 Data Wrangler，請參閱[開始使用 Data Wrangler](data-wrangler-getting-started.md)。

**重要**  
Data Wrangler 不再支援 Jupyter Lab 第 1 版 (JL1)。若要存取最新功能和更新，請更新至 Jupyter Lab 第 3 版。如需升級的詳細資訊，請參閱[從主控台檢視和更新應用程式的 JupyterLab 版本](studio-jl.md#studio-jl-view)。

**重要**  
本指南中的資訊和程序使用最新版本的 Amazon SageMaker Studio Classic。如需將 Studio Classic 更新至最新版本的詳細資訊，請參閱[Amazon SageMaker Studio Classic UI 概觀](studio-ui.md)。

您必須使用 Studio Classic 1.3.0 版或更新版本。請使用以下程序開啟 Amazon SageMaker Studio Classic，並查看您正在執行的版本。

若要開啟 Studio Classic 並檢查其版本，請參閱以下程序。

1. 透過 Amazon SageMaker Studio Classic，使用 [先決條件](data-wrangler-getting-started.md#data-wrangler-getting-started-prerequisite) 中的步驟存取 Data Wrangler。

1. 在您要用來啟動 Studio Classic 的使用者旁邊，請選取**啟動應用程式**。

1. 選擇 **Studio**。

1. Studio Classic 載入後，請依序選取**檔案**、**新增**、**終端機**。  
![\[步驟 4 中所述的 Studio Classic 內容功能表選項。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/terminal.png)

1. 一旦您啟動了 Studio Classic，請依序選取**檔案**、**新增**、**終端機**。

1. 請輸入 `cat /opt/conda/share/jupyter/lab/staging/yarn.lock | grep -A 1 "@amzn/sagemaker-ui-data-prep-plugin@"`，列印 Studio Classic 執行個體的版本。您必須具有 Studio Classic 1.3.0 版才能使用 Snowflake。  
![\[在 Studio Classic 中開啟的終端機視窗，其中複製並貼上來自步驟 6 的命令。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/cat-command.png)

您可以從 AWS 管理主控台內更新 Amazon SageMaker Studio Classic。如需更新 Studio Classic 的詳細資訊，請參閱 [Amazon SageMaker Studio Classic UI 概觀](studio-ui.md)。

**Topics**
+ [開始使用 Data Wrangler](data-wrangler-getting-started.md)
+ [Import (匯入)](data-wrangler-import.md)
+ [建立和使用 Data Wrangler 流程](data-wrangler-data-flow.md)
+ [取得有關資料和資料品質的洞察](data-wrangler-data-insights.md)
+ [在資料流程上自動訓練模型](data-wrangler-autopilot.md)
+ [轉換資料](data-wrangler-transform.md)
+ [分析與視覺化](data-wrangler-analyses.md)
+ [重複使用不同資料集的資料流量](data-wrangler-parameterize.md)
+ [Export (匯出)](data-wrangler-data-export.md)
+ [使用 Amazon SageMaker Studio Classic 筆記本中的互動式資料準備小工具取得資料洞見](data-wrangler-interactively-prepare-data-notebook.md)
+ [安全與許可](data-wrangler-security.md)
+ [版本備註](data-wrangler-release-notes.md)
+ [疑難排解](data-wrangler-trouble-shooting.md)
+ [增加 Amazon EC2 執行個體限制](data-wrangler-increase-instance-limit.md)
+ [更新 Data Wrangler](data-wrangler-update.md)
+ [關閉 Data Wrangler](data-wrangler-shut-down.md)

# 開始使用 Data Wrangler
<a name="data-wrangler-getting-started"></a>

Amazon SageMaker Data Wrangler 是 Amazon SageMaker Studio Classic 中的一項功能。您可以透過本章節了解如何存取並開始使用 Data Wrangler。請執行下列操作：

1. 完成[先決條件](#data-wrangler-getting-started-prerequisite)中的每個步驟。

1. 按照[存取 Data Wrangler](#data-wrangler-getting-started-access)中的程序開始使用 Data Wrangler。

## 先決條件
<a name="data-wrangler-getting-started-prerequisite"></a>

若要使用 Data Wrangler，您必須完成下列先決條件。

1. 若要使用 Data Wrangler，您需要存取 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。如需使用適用於 Amazon EC2 執行個體的更多相關資訊，請參閱[執行個體](data-wrangler-data-flow.md#data-wrangler-data-flow-instances)。要了解如何查看配額，並在必要時請求增加配額，請參閱[AWS 服務配額](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)。

1. 設定[安全與許可](data-wrangler-security.md)中描述的必要許可。

1. 如果您的組織使用的防火牆會封鎖網際網路流量，您必須擁有下列 URL 的存取權：
   + `https://ui.prod-1.data-wrangler.sagemaker.aws/`
   + `https://ui.prod-2.data-wrangler.sagemaker.aws/`
   + `https://ui.prod-3.data-wrangler.sagemaker.aws/`
   + `https://ui.prod-4.data-wrangler.sagemaker.aws/`

若要使用 Data Wrangler，您需要一個作用中的 Studio Classic 執行個體。要瞭解如何啟動新執行個體，請參閱[Amazon SageMaker AI 網域概觀](gs-studio-onboard.md)。當您的 Studio Classic 執行個體**備妥**時，請使用[存取 Data Wrangler](#data-wrangler-getting-started-access)中的指示。

## 存取 Data Wrangler
<a name="data-wrangler-getting-started-access"></a>

以下程序假設您已經完成 [先決條件](#data-wrangler-getting-started-prerequisite)。

若要存取 Studio Classic 中的 Data Wrangler，請執行以下動作。

1. 登入 Studio Classic。如需詳細資訊，請參閱[Amazon SageMaker AI 網域概觀](gs-studio-onboard.md)。

1. 選擇**Studio**。

1. 選擇**啟動應用程式**。

1. 從下拉式清單中選取 **Studio**。

1. 選擇首頁圖示。

1. 選擇**資料**。

1. 選擇 **Data Wrangler**。

1. 您也可以執行下列動作來建立 Data Wrangler 流程。

   1. 在頂端導覽列中，選取 **檔案**。

   1. 選取**新的**。

   1. 選取**Data Wrangler 流程**。  
![\[Studio Classic 主控台的首頁索引標籤。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/new-flow-file-menu.png)

1. (選用) 重新命名新目錄和 .flow 檔案。

1. 當您在 Studio Classic 中建立新的 .flow 檔案時，您可能會看到向您介紹 Data Wrangler 的浮動切換。

   **這可能需要幾分鐘的時間。**

   只要**使用者詳細資訊**頁面上的 **KernelGateway** 應用程式仍處於**待處理**狀態，此訊息就不會消失。若要查看此應用程式的狀態，請在 **Amazon SageMaker Studio** 頁面上的 SageMaker AI 主控台中，選取您用來存取 Studio Classic 的使用者名稱。在**使用者詳細資訊**頁面上，您會看到**應用程式**下方的 **KernelGateway** 應用程式。等到此應用程式狀態為**就緒**，開始使用 Data Wrangler。第一次啟動 Data Wrangler 時，大約需要 5 分鐘的時間。  
![\[使用者詳細資訊頁面上顯示 KernelGateway 應用程式狀態為備妥的範例。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/gatewayKernel-ready.png)

1. 若要開始使用，請選擇資料來源並使用它來匯入資料集。如需進一步了解，請參閱[Import (匯入)](data-wrangler-import.md)。

   匯入資料集時，資料集會顯示在資料流程中。如需詳細資訊，請參閱 [建立和使用 Data Wrangler 流程](data-wrangler-data-flow.md)。

1. 匯入資料集之後，Data Wrangler 會自動推斷每個資料欄中的資料類型。選擇**資料類型**步驟旁的**\$1**，然後選取**編輯資料類型**。
**重要**  
將轉換新增至**資料類型**步驟之後，您就無法使用**更新類型**批次更新資料欄類型。

1. 使用資料流程新增轉換和分析。如需進一步了解，請參閱[轉換資料](data-wrangler-transform.md)和[分析與視覺化](data-wrangler-analyses.md)。

1. 若要匯出完整資料流量，請選擇**匯出**，然後選擇匯出選項。如需詳細資訊，請參閱 [Export (匯出)](data-wrangler-data-export.md)。

1. 最後，選擇 **元件和登錄檔**圖示，然後從下拉式清單中選取 **Data Wrangler**，以查看您建立的所有 .flow 檔案。您可以使用此功能表來尋找資料流程，並在資料流程之間移動。

啟動 Data Wrangler 之後，您可以利用下列章節，逐步了解如何使用 Data Wrangler 建立機器學習 (ML) 資料準備流程。

## 更新 Data Wrangler
<a name="data-wrangler-update-studio-app"></a>

我們建議您定期更新 Data Wrangler Studio Classic 應用程式，以取得最新功能和更新。Data Wrangler 應用程式名稱以 **sagemaker-data-wrang** 開頭。若要了解如何更新 Studio Classic 應用程式，請參閱[關閉並更新 Amazon SageMaker Studio Classic 應用程式](studio-tasks-update-apps.md)。

## 示範：Data Wrangler Titanic 資料集演練
<a name="data-wrangler-getting-started-demo"></a>

下列區段提供逐步解說，以協助您開始使用 Data Wrangler。本逐步解說假設您已按照[存取 Data Wrangler](#data-wrangler-getting-started-access)中的步驟進行操作，並開啟要用於示範的新資料流程檔案。您可能想要將此 .flow 檔案重新命名為類似`titanic-demo.flow`的檔案。

本逐步解說使用[ Titanic 資料集](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/walkthrough_titanic.csv)。這是[ Titanic 資料集](https://www.openml.org/d/40945)的修改版本，您可以更輕鬆地匯入　Data Wrangler　流程。該資料集包含 1912 年 *RMS Titanic* 首航乘客的生存狀況，年齡，性別和艙等 (作為經濟地位的表徵)。

您將在本教學課程中執行下列步驟。

1. 執行以下任意一項：
   + 開啟 Data Wrangler 流程，然後選擇**使用範例資料集**。
   + 將[ Titanic 資料集](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/walkthrough_titanic.csv)上傳到 Amazon Simple Storage Service (Amazon S3)，然後將此資料集匯入 Data Wrangler。

1. 使用 Data Wrangler 分析來分析此資料集。

1. 使用 Data Wrangler 資料轉換來定義資料流量。

1. 將流程匯出至 Jupyter 筆記本，您可以用來建立 Data Wrangler 任務。

1. 處理您的資料，並開始一項 SageMaker 訓練任務，以訓練 XGBoost 二進位分類器。

### 將資料集上傳至 S3 並匯入
<a name="data-wrangler-getting-started-demo-import"></a>

若要開始使用，您可以使用下列其中一個方法，將 Titanic 資料集匯入 Data Wrangler：
+ 直接從 Data Wrangler 流程匯入資料集
+ 將資料集上傳到 Amazon S3，然後將其匯入 Data Wrangler

若要將資料集直接匯入 Data Wrangler，請開啟流程，然後選擇**使用範例資料集**。

將資料集上傳到 Amazon S3 並將其匯入 Data Wrangler，將與您匯入自己資料的經驗更接近。下列資訊說明如何上傳資料集並匯入資料集。

在開始將資料匯入 Data Wrangler 之前，請下載 [Titanic 資料集](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/walkthrough_titanic.csv)，並將其上傳到您要完成此示範 AWS 區域中的 Amazon S3 (Amazon S3) 儲存貯體。

如果您是 Amazon S3 的新使用者，可以在 Amazon S3 主控台中使用拖放功能來執行此操作。要瞭解如何操作，請參閱[使用拖放功能上傳文件和文件夾](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html#upload-objects-by-drag-and-drop)在亞馬遜簡單儲存服務用戶指南中。

**重要**  
將資料集上傳至您要用來完成此示範的相同 AWS 區域中的 S3 儲存貯體。

資料集成功上傳到 Amazon S3 後，您可以將其匯入 Data Wrangler。

**匯入 Titanic 資料集到 Data Wrangler**

1. 選擇**資料流量**索引標籤中的**匯入資料**按鈕，或選擇**匯入**索引標籤。

1. 選取 **Amazon S3**。

1. 使用**從 S3 資料表匯入資料集**，尋找您新增 Titanic 資料集的儲存貯體。選擇 Titanic 資料集 CSV 檔案以開啟**詳細資訊**面板。

1. 在 **詳細資訊**下，**檔案類型** 應為 CSV。檢查**第一行是標題**，以指定資料集的第一行是標題。您也可以將資料集命名為更好記的名稱，例如**Titanic-train**。

1. 選擇**匯入**按鈕。

當您的資料集匯入資料 Data Wrangler 時，資料集就會出現在 **資料流量**索引標籤中。您可以在節點上按兩下以進入節點詳細資訊檢視，這裡可以讓您新增轉換或分析。您可以透過加號圖示快速存取導覽。在下一節中，您將使用此資料流程來新增分析和轉換步驟。

### 資料流程
<a name="data-wrangler-getting-started-demo-data-flow"></a>

在資料流程區段中，資料流程中唯一的步驟為近期匯入的資料集和**資料類型**步驟。套用轉換後，您可以回到此選項卡，查看資料流程的狀態。現在，在**準備**和**分析**索引標籤下增加一些基本轉換。

#### 準備與視覺化
<a name="data-wrangler-getting-started-demo-prep-visualize"></a>

Data Wrangler 具有內建的轉換和視覺化，可用來分析、清理和轉換資料。

節點詳細資訊檢視的**資料** 索引標籤會列出右側面板中的所有內建轉換，其中也包含您可以在其中新增自訂項目的區域。下列使用案例展示如何使用這些轉換。

若要取得可協助您進行資料探勘和特徵工程的資訊，請建立資料品質和深入分析報告。報告中的資訊可協助您清理和處理資料。它為您提供諸如缺少值的數量和極端值數量等資訊。如果您的資料有問題，例如目標洩漏或不平衡，洞察報告可以引起您注意這些問題。如需建立報告的更多相關資訊，請參閱[取得有關資料和資料品質的洞察](data-wrangler-data-insights.md)。

##### 資料探勘
<a name="data-wrangler-getting-started-demo-explore"></a>

首先，使用分析資料建立資料表摘要。請執行下列操作：

1. 選擇資料流程中**資料類型**步驟旁的 **\$1**，然後選取**新增分析**。

1. 在 **分析** 區域中，從下拉式清單中選取 **表格摘要**。

1. 為表格摘要指定一個**名稱**。

1. 選取**預覽**，以預覽將會建立的表格。

1. 選擇 **儲存**，將其儲存至資料流程。會顯示於**所有分析資料**下。

使用您看到的統計資料，您可以建立類似下列與此資料集相關的觀察結果：
+ 平均票價 (平均值) 約為 33 美元，而最高票價超過 500 美元。此欄可能具有極端值。
+ 使用*?* 指示資料集所缺少的值。許多欄位中的缺少值：*cabin*、*embarked*和 *home.dest*
+ 年齡類別遺失超過 250 個值。

接下來，使用從這些統計資料中獲得的洞察來清理資料。

##### 捨棄未使用的欄位
<a name="data-wrangler-getting-started-demo-drop-unused"></a>

使用上一節的分析，清除資料集以準備進行訓練。若要將新的轉換新增至資料流程，請選擇資料流程中**資料類型**步驟旁的 **\$1**，然後選擇 **新增轉換**。

首先，捨棄您不想要用於訓練的資料欄。您可以使用[pandas](https://pandas.pydata.org/)分析程式庫以執行此操作，也可以使用其中一個內建的轉換。

使用下列程序來捨棄未使用的資料欄。

捨棄未使用的資料欄。

1. 開啟 Data Wrangler 流程。

1. 此網域 Data Wrangler 流程中有兩個節點。選擇**資料類型**節點右側的 **\$1**。

1. 選擇**新增轉換**。

1. 在 **所有步驟** 欄中，選擇 **新增步驟**。

1. 在 **標準**轉換清單中，選擇 **管理欄位**。標準轉換是現成的內建轉換。確定已選取 **捨棄資料欄**。

1. 在**要刪除的資料欄**底下，檢查下列欄位名稱：
   + cabin
   + ticket
   + name
   + sibsp
   + parch
   + home.dest
   + boat
   + 本文

1. 選擇**預覽**。

1. 確認已捨棄資料欄，然後選擇**新增**。

請遵循下列步驟，使用 pandas 執行此操作。

1. 在 **所有步驟** 欄中，選擇 **新增步驟**。

1. 在 **自訂**轉換清單中，選擇 **自訂轉換**。

1. **為您的轉換提供名稱，然後從下拉式清單中選擇 Python (Pandas)**。

1. 請在程式碼框中輸入 Python 指令碼。

   ```
   cols = ['name', 'ticket', 'cabin', 'sibsp', 'parch', 'home.dest','boat', 'body']
   df = df.drop(cols, axis=1)
   ```

1. 選擇**預覽**以預覽變更，然後選擇**新增**以新增轉換。

##### 清除缺少值
<a name="data-wrangler-getting-started-demo-missing-vals"></a>

現在，清除缺少值。您可以使用**處理缺少值**轉換群組來執行此操作。

一些欄數有缺少值。在剩餘資料欄中，*年紀*和*票價*包含缺少值。使用**自訂轉換**檢查此內容。

使用 **Python (Pandas)**選項，使用以下命令快速檢閱每個資料欄中的項目數：

```
df.info()
```

![\[範例會檢閱每個資料欄中的項目數量。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/inspect-missing-pandas.png)


若要捨棄*年齡*類別中缺少值的資料列，請執行下列動作：

1. 選擇**處理缺少值**。

1. 為 **轉換器** 選擇 **捨棄缺少值**。

1. 選擇**輸入欄位**的*年齡*。

1. 選擇**預覽**以參閱新資料框，然後選擇**新增**以將轉換新增至流程。

1. 對*票價*重複相同的過程。

您可以在 **自訂轉換** 區段`df.info()`中使用，以確認所有資料列現在都有 1,045 個值。

##### 自訂 Pandas：編碼
<a name="data-wrangler-getting-started-demo-encode"></a>

試圖使用 Pandas 進行平面編碼。編碼分類資料是為類別建立數值表示的過程。例如，如果您的類別是 `Dog` 和 `Cat`，則可以將此資訊編碼為兩個向量：`[1,0]` 表示 `Dog`，而 `[0,1]` 表示 `Cat`。

1. 在**自訂轉換**區段中，從下拉式清單中選擇 **Python (Pandas)**。

1. 請在程式碼框中輸入以下內容。

   ```
   import pandas as pd
   
   dummies = []
   cols = ['pclass','sex','embarked']
   for col in cols:
       dummies.append(pd.get_dummies(df[col]))
       
   encoded = pd.concat(dummies, axis=1)
   
   df = pd.concat((df, encoded),axis=1)
   ```

1. 選擇**預覽**以預覽變更。每個資料欄的編碼版本會新增到資料集。

1. 選擇**新增**以新增轉換。

#### 自訂 SQL：選取資料欄
<a name="data-wrangler-getting-started-demo-sql"></a>

現在，選擇要繼續使用 SQL 的資料欄。對於此示範，選取下列`SELECT`陳述式中列出的資料欄清單。因為*是否倖存*是您訓練的目標欄，所以將該欄放在第一位。

1. 在 **自訂轉換** 區段中，從下拉式清單中選取 **SQL (PySpark SQL)**。

1. 請在程式碼框中輸入以下內容。

   ```
   SELECT survived, age, fare, 1, 2, 3, female, male, C, Q, S FROM df;
   ```

1. 選擇**預覽**以預覽變更。`SELECT`陳述式中列出的資料欄清單是唯一的剩餘資料欄。

1. 選擇**新增**以新增轉換。

### 匯出至 Data Wrangler 筆記本
<a name="data-wrangler-getting-started-export"></a>

完成建立資料流程後，您有許多匯出選項。下一節解釋如何匯出至 Data Wrangler 任務筆記本。Data Wrangler 任務是使用處理資料流程中，所定義的步驟來處理資料。若要進一步了解所有匯出選項，請參閱[Export (匯出)](data-wrangler-data-export.md)。

#### 匯出至 Data Wrangler 任務筆記本
<a name="data-wrangler-getting-started-export-notebook"></a>

當您使用 **Data Wrangler 任務**匯出資料流程時，程序會自動建立 Jupyter 筆記本。此筆記本會在您的 Studio Classic 執行個體中自動開啟，並設定為執行 SageMaker Processing 任務，以執行 Data Wrangler 資料流程 (稱為 Data Wrangler 任務)。

1. 儲存資料流程。選取**檔案**，然後選取**儲存 Data Wrangler 流程**。

1. 傳回**資料流程**索引標籤，選取資料流程 (SQL) 中的最後一個步驟，然後選擇 **\$1** 以開啟導覽。

1. 選擇**匯出**和 **Amazon S3 (透過 Jupyter 筆記本)**。這會開啟 Jupyter 筆記本。  
![\[範例顯示如何在 Data Wrangler 主控台的資料流程索引標籤中開啟導覽。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/export-select-step.png)

1. 為核心選擇任何 **Python 3 (資料科學)** **核心**。

1. 核心啟動時，執行筆記本書中的儲存格，直到**啟動 SageMaker 訓練任務 (選用)**。

1. 或者，如果您想要建立 SageMaker AI 訓練任務來訓練 XGBoost 分類器，您可以在**啟動 SageMaker 訓練任務 (選用)**中執行儲存格。您可以找到執行 SageMaker 訓練工作的成本，請參閱 [Amazon SageMaker 定價](https://aws.amazon.com/sagemaker/pricing/)。

   或者，您可以將在[訓練 XGBoost 分類器](#data-wrangler-getting-started-train-xgboost)中找到的程式碼區塊新增至筆記本，然後執行，以使用 [XGBoost](https://xgboost.readthedocs.io/en/latest/) 開放原始碼程式庫來訓練 XGBoost 分類器。

1. 取消註解並在**清理**下執行儲存格，然後執行該儲存格，以將 SageMaker Python SDK 還原為其原始版本。

您可以在 SageMaker AI 主控台的**處理**索引標籤中監控 Data Wrangler 任務狀態。此外，您也可以使用 Amazon CloudWatch 監控您的 Data Wrangler 任務。有關其他資訊，請參閱[使用 CloudWatch Logs 和指標監控 Amazon SageMaker 處理作業](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html#processing-job-cloudwatch)。

如果您開始執行訓練任務，您可以使用 SageMaker AI 主控台在**訓練區段**的**訓練任務**下監視其狀態。

#### 訓練 XGBoost 分類器
<a name="data-wrangler-getting-started-train-xgboost"></a>

您可以使用 Jupyter 筆記本或 Amazon SageMaker Autopilot 訓練 XGBoost 二進位分類器。您可以使用 Autopilot 來自動訓練和微調模型，這些模型是根據您的 Data Wrangler 流程中轉換的資料而來。若要取得有關 Autopilot 的更多資訊，請參閱[在資料流程上自動訓練模型](data-wrangler-autopilot.md)。

在啟動 Data Wrangler 任務的同一筆記本中，您可以提取資料，並使用準備好的資料以最小化的資料準備方式，來訓練 XGBoost 二進位分類器。

1. 首先，使用`pip`升級必要的模組，並移除 \$1SUCCESS 文件 (當使用`awswrangler`時，這個檔案會造成問題)。

   ```
   ! pip install --upgrade awscli awswrangler boto sklearn
   ! aws s3 rm {output_path} --recursive  --exclude "*" --include "*_SUCCESS*"
   ```

1. 從 Amazon S3 讀取資料。您可以使用`awswrangler`遞迴讀取 S3 字首中的所有 CSV 文件。然後將資料分割為功能和標籤。標籤是資料框的首欄。

   ```
   import awswrangler as wr
   
   df = wr.s3.read_csv(path=output_path, dataset=True)
   X, y = df.iloc[:,:-1],df.iloc[:,-1]
   ```
   + 最後，建立 DMatrices (XGBoost 的基本資料結構)，並使用 XGBoost 二進制分類進行交叉驗證。

     ```
     import xgboost as xgb
     
     dmatrix = xgb.DMatrix(data=X, label=y)
     
     params = {"objective":"binary:logistic",'learning_rate': 0.1, 'max_depth': 5, 'alpha': 10}
     
     xgb.cv(
         dtrain=dmatrix, 
         params=params, 
         nfold=3,
         num_boost_round=50,
         early_stopping_rounds=10,
         metrics="rmse", 
         as_pandas=True, 
         seed=123)
     ```

#### 關閉 Data Wrangler
<a name="data-wrangler-getting-started-shut-down"></a>

當您完成使用 Data Wrangler 後，我們建議您關閉其執行的執行個體，以避免產生額外費用。要瞭解如何關閉 Data Wrangler 應用程式和關聯的執行個體，請參閱[關閉 Data Wrangler](data-wrangler-shut-down.md)。

# Import (匯入)
<a name="data-wrangler-import"></a>

您可以使用 Amazon SageMaker Data Wrangler 從下列*資料來源*匯入資料：Amazon Simple Storage Service (Amazon S3)、Amazon Athena、Amazon Redshift 和 Snowflake。您匯入的資料集最多可包含 1000 個資料欄。

**Topics**
+ [從 Amazon S3 匯入資料](#data-wrangler-import-s3)
+ [從 Athena 匯入資料](#data-wrangler-import-athena)
+ [從 Amazon Redshift 匯入資料。](#data-wrangler-import-redshift)
+ [從 Amazon EMR 匯入資料](#data-wrangler-emr)
+ [從 Databricks (JDBC) 匯入資料](#data-wrangler-databricks)
+ [從 Salesforce 資料雲端匯入資料。](#data-wrangler-import-salesforce-data-cloud)
+ [從 Snowflake 匯入資料](#data-wrangler-snowflake)
+ [從軟體即服務 (SaaS) 平台匯入資料](#data-wrangler-import-saas)
+ [匯入資料儲存](#data-wrangler-import-storage)

某些資料來源可讓您新增多個*資料連線*：
+ 您可以連線到多個 Amazon Redshift 叢集。每個叢集都會變成資料來源。
+ 您可以查詢帳戶中的任何 Athena 資料庫，以便從該資料庫匯入資料。



從資料來源匯入資料集時，資料集會顯示在資料流量中。Data Wrangler 會自動推斷資料集中每個資料欄中的資料類型。若要修改這些類型，請選取**資料類型**步驟並選取**編輯資料類型**。

當您從 Athena 或 Amazon Redshift 匯入資料時，匯入的資料會自動存放在您使用 Studio Classic AWS 之區域的預設 SageMaker AI S3 儲存貯體中。此外，Athena 也會儲存您在此儲存貯體的 Data Wrangler 中預覽的資料。如需進一步了解，請參閱[匯入資料儲存](#data-wrangler-import-storage)。

**重要**  
預設 Amazon S3 儲存貯體可能沒有最低權限的安全設定，例如儲存貯體政策和伺服器端加密 (SSE)。強烈建議您[新增儲存貯體政策，以限制對匯入至 Data Wrangler 資料集的存取](https://docs.aws.amazon.com/sagemaker/latest/dg/data-wrangler-security.html#data-wrangler-security-bucket-policy)。

**重要**  
此外，如果您使用 SageMaker AI 的受管政策，我們強烈建議您將其範圍縮小到限制最嚴格的政策，以便執行您的使用案例。如需詳細資訊，請參閱[授權 IAM 角色許可，以使用 Data Wrangler](data-wrangler-security.md#data-wrangler-security-iam-policy)。

Amazon Simple Storage Service (Amazon S3) 以外的所有資料來源都需要您指定 SQL 查詢來匯入您的資料。針對每個查詣，您必須指定下列項目：
+ **資料型錄**
+ **資料庫**
+ **資料表**

您可以在下拉式功能表或查詢中指定資料庫或資料型錄的名稱。範例查詢如下：
+ `select * from example-data-catalog-name.example-database-name.example-table-name` – 查詢不會使用在使用者介面 (UI) 的下拉式功能表中指定的任何項目來執行。它會在 `example-data-catalog-name`內的 `example-database-name`中查詢 `example-table-name`。
+ `select * from example-database-name.example-table-name` – 查詢會使用您在**資料型錄**下拉式功能表中指定的資料型錄來執行。它會在您指定的資料型錄內的 `example-database-name`中查詢 `example-table-name`。
+ `select * from example-table-name` – 查詢要求您為**資料型錄**和**資料庫名稱**下拉式功能表選取欄位。它會在您指定的資料庫和資料型錄內的資料型錄中查詢 `example-table-name`。

Data Wrangler 和資料來源之間的連結為*連線*。您可以使用連線從資料來源匯入資料。

有以下類型的連線：
+ 直接
+ 分類

Data Wrangler 一律會以直接連線存取最近期的資料。如果資料來源中的資料已更新，您可以使用連線來匯入資料。例如，如果有人將檔案新增到您的其中一個 Amazon S3 儲存貯體，您可以匯入檔案。

分類的連線是資料傳輸的結果。分類的連線中的資料不一定具有最近的資料。例如，您可以設定 Salesforce 和 Amazon S3 之間的資料傳輸。如果 Salesforce 資料有更新，您必須再次傳輸資料。您可以自動化傳輸資料的流程。如需資料傳輸的詳細資訊，請參閱[從軟體即服務 (SaaS) 平台匯入資料](#data-wrangler-import-saas)。

## 從 Amazon S3 匯入資料
<a name="data-wrangler-import-s3"></a>

您可以使用 Amazon Simple Storage Service (Amazon S3) 隨時從網路任何地方儲存和擷取任意資料量。您可以使用 來完成這些任務 AWS 管理主控台，這是簡單且直覺的 Web 介面，以及 Amazon S3 API。如果您已將資料集儲存在本機，建議您將資料集新增至 S3 儲存貯體，以匯入至 Data Wrangler。如需指示說明，請參閱 Amazon Simple Storage Service 使用者指南中的[上傳物件至儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/gsg/PuttingAnObjectInABucket.html)。

Data Wrangler 使用 [S3 選取](https://aws.amazon.com/s3/features/#s3-select)以允許您在 Data Wrangler 中預覽 Amazon S3 檔案。您需要支付每個檔案預覽的標準費用。要進一步了解定價的相關資訊，請參閱[Amazon S3 定價](https://aws.amazon.com/s3/pricing/)上的**請求與資料擷取**。

**重要**  
如果您計劃匯出資料流程並啟動 Data Wrangler 任務、將資料擷取至 SageMaker AI 功能存放區，或建立 SageMaker AI 管道，請注意，這些整合需要 Amazon S3 輸入資料位於相同的 AWS 區域。

**重要**  
如果您要匯入 CSV 檔案，請務必確認檔案符合下列要求：  
資料集中的記錄不可超過一行。
反斜線、`\` 是唯一有效的逸出字元。
您的資料集必須使用下列其中的一個分隔符號：  
逗號 – `,`
冒號 – `:`
分號 – `;`
管道 – `|`
索引標籤 – `[TAB]`
若要節省空間，您可以匯入壓縮的 CSV 檔案。

Data Wrangler 賦予您匯入整個資料集或取樣部分資料集的能力。對於 Amazon S3，它提供了下列取樣選項：
+ 無 – 匯入整個資料集。
+ 前 K 列 – 取樣資料集的前 K 列，其中 K 是您指定的整數。
+ 隨機化 – 取得您指定大小的隨機範例。
+ 分層 – 採取分層隨機範例。分層範例可以保留資料欄中值的比例。

匯入資料之後，您還可以使用取樣轉換器以從整個資料集取得一或多個範例。如需有關取樣轉換器的詳資訊，請參閱[抽樣](data-wrangler-transform.md#data-wrangler-transform-sampling)。

您可以使用下列其中一個資源識別符來匯入資料：
+ 使用 Amazon S3 儲存貯體或 Amazon S3 Access Points 的 Amazon S3 URI
+ Amazon S3 Access Points 別名
+ 使用 Amazon S3 Access Point 或 Amazon S3 儲存貯體的 Amazon Resource Name (ARN)

Amazon S3 Access Points 被命名為連接到儲存貯體的網路端點。每個存取點都有您可以設定的不同許可和網路控制。如需有關存取點的詳細資訊，請參閱[使用 Amazon S3 Access Points 來管理資料存取](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html)。

**重要**  
如果您使用的是 Amazon Resource Name (ARN) 來匯入資料，則資料必須位於您用來存取 Amazon SageMaker Studio Classic AWS 區域 的相同 中的資源。

您可以將單一檔案或多個檔案匯入為資料集。如果資料集分割為個別檔案，則可以使用多檔案匯入操作。它會從 Amazon S3 目錄擷取所有檔案，並將其匯入為單一資料集。如需有關可匯入的檔案類型及匯入方式的資訊，請參閱下列各節。

------
#### [ Single File Import ]

您可以匯入下列格式的單一檔案：
+ 逗號分隔符號值 (CSV)
+ Parquet
+ JavaScript 物件標記法 (JSON)
+ 最佳化列單欄式 (ORC)
+ 圖片 – Data Wrangler 使用 OpenCV 匯入影像。如需有關支援的影像格式詳細資訊，請參閱[影像檔案讀取和寫入](https://docs.opencv.org/3.4/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56)。

對於以 JSON 格式化的文件， Data Wrangler 支援 JSON 行 (.jsonl) 和 JSON 文件 (.json)。當您預覽資料時，它會自動以表格格式顯示 JSON。對於大於 5 MB 的巢狀 JSON 文件，Data Wrangler 會將結構和陣列的結構描述顯示為資料集中的值。使用**展平結構化**和**爆炸陣列**運算子，以表格格式顯示巢狀值。如需詳細資訊，請參閱[將 JSON 資料解除巢狀化](data-wrangler-transform.md#data-wrangler-transform-flatten-column)及[爆炸陣列](data-wrangler-transform.md#data-wrangler-transform-explode-array)。

選擇資料集時，您可以重新命名資料集、指定檔案類型，並將第一列識別為標題。

您可以透過單一匯入步驟，將已分割的資料集匯入 Amazon S3 儲存貯體中的多個檔案。

**若要從儲存在 Amazon S3 的單一檔案將資料集匯入 Data Wrangler：**

1. 如果您目前不在**匯入**分頁中，請選擇**匯入**。

1. 在**可用**之下，選擇 **Amazon S3**。

1. **從 S3 匯入表格、影像或時間序列資料**，執行下列其中一個動作：
   + 從表格視圖中選擇 Amazon S3 儲存貯體，然後導覽至您要匯入的檔案。
   + 對於 **S3 來源**，請指定一個 Amazon S3 儲存貯體或 Amazon S3 URI，然後選取**執行**。Amazon S3 URL 可為下列格式之一：
     + `s3://amzn-s3-demo-bucket/example-prefix/example-file`
     + *example-access-point*-*aqfqprnstn7aefdfbarligizwgyfouse1a*-s3alias/datasets/*example-file*
     + `s3://arn:aws:s3:AWS-Region:111122223333:accesspoint/example-prefix/example-file`

1. 選擇要開啟 **匯入設定**窗格的資料集。

1. 如果您的 CSV 檔案有標題，請勾選**將標題新增至表格**旁邊的核取方塊。

1. 使用**預覽**資料表預覽您的資料集。此表格最多可顯示 100 個資料列。

1. 在**詳細資料**窗格中，確認或變更資料集的**名稱**和**檔案類型**。如果您要新增包含空格的**名稱**，則在匯入資料集時，這些空格會用底線取代。

1. 指定您要使用的範例組態。

1. 選擇**匯入**。

------
#### [ Multifile Import ]

以下是匯入多個檔案的需求：
+ 該檔案必須與您的 Amazon S3 儲存貯體位於相同的資料夾。
+ 這些檔案必須共用相同的標題或沒有標題。

每個檔案必須採用下列其中一種格式：
+ CSV
+ Parquet
+ 最佳化列單欄式 (ORC)
+ 圖片 – Data Wrangler 使用 OpenCV 匯入影像。如需有關支援的影像格式詳細資訊，請參閱[影像檔案讀取和寫入](https://docs.opencv.org/3.4/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56)。

使用下列程序匯入多個檔案。

**將資料集從您儲存在 Amazon S3 目錄中的多個檔案匯入 Data Wrangler**

1. 如果您目前不在**匯入**分頁中，請選擇**匯入**。

1. 在**可用**之下，選擇 **Amazon S3**。

1. **從 S3 匯入表格、影像或時間序列資料**，執行下列其中一個動作：
   + 從表格視圖中選擇 Amazon S3 儲存貯體，然後導覽至包含您要匯入檔案的資料夾。
   + 對於 **S3 來源**，請用您的檔案指定一個 Amazon S3 儲存貯體或 Amazon S3 URI，然後選取**執行**。以下為有效 URI：
     + `s3://amzn-s3-demo-bucket/example-prefix/example-prefix`
     + `example-access-point-aqfqprnstn7aefdfbarligizwgyfouse1a-s3alias/example-prefix/`
     + `s3://arn:aws:s3:AWS-Region:111122223333:accesspoint/example-prefix`

1. 選取包含您要匯入檔案的資料夾。每個檔案必須採用其中一種支援的格式：您的檔案必須是相同的資料類型。

1. 如果您的資料夾包含附標題的 CSV 檔案，請勾選**第一列為標題**旁邊的核取方塊。

1. 如果您的檔案嵌套在其他資料夾中，請選取**包含巢狀目錄**旁邊的核取方塊。

1. (選用) 選擇**新增檔案名稱資料欄**，將資料欄新增至資料集，以顯示每個觀察項目的檔案名稱。

1. (選用) 根據預設，Data Wrangler 不會顯示資料夾的預覽。您可以選擇藍色的**關閉預覽**按鈕來啟用預覽。預覽會顯示資料夾中前 10 個檔案的前 10 列。

1. 在**詳細資料**窗格中，確認或變更資料集的**名稱**和**檔案類型**。如果您要新增包含空格的**名稱**，則在匯入資料集時，這些空格會用底線取代。

1. 指定您要使用的範例組態。

1. 選擇**匯入資料集**。

------

您也可以使用參數匯入符合模式的檔案子集。參數可協助您更有選擇地挑選要匯入的檔案。若要開始使用參數，請編輯資料來源，並將其套用至您用來匯入資料的路徑。如需詳細資訊，請參閱[重複使用不同資料集的資料流量](data-wrangler-parameterize.md)。

## 從 Athena 匯入資料
<a name="data-wrangler-import-athena"></a>

使用 Amazon Athena 將資料從 Amazon Simple Storage Service (Amazon S3) 匯入 Data Wrangler。在 Athena 中，您可以撰寫標準 SQL 查詢來選取要從 Amazon S3 匯入的資料。如需詳細資訊，請參閱[什麼是 Amazon Athena？](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)

您可以使用 AWS 管理主控台 來設定 Amazon Athena。在您可以開始執行查詢之前，您必須在 Athena 中至少建立一個資料庫。如需有關 Athena 入門的詳細資訊，請參閱[入門](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html)。

Athena 與 Data Wrangler 直接整合。您可以撰寫 Athena 查詢，而不必離開 Data Wrangler 使用者介面。

除了在 Data Wrangler 中撰寫簡單的 Athena 查詢之外，您還可以使用：
+ 用於管理查詢結果的 Athena 工作群組。如需有關工作群組的詳細資訊，請參閱[管理查詢結果](#data-wrangler-import-manage-results)。
+ 用於設定資料保留期的生命週期組態。如需資料保留的詳細資訊，請參閱[設定資料保留期](#data-wrangler-import-athena-retention)。

### 在 Data Wrangler 內查詢 Athena
<a name="data-wrangler-import-athena-query"></a>

**注意**  
Data Wrangler 不支援聯合查詢。

如果您 AWS Lake Formation 搭配 Athena 使用 ，請確定 Lake Formation IAM 許可不會覆寫資料庫 的 IAM 許可`sagemaker_data_wrangler`。

Data Wrangler 賦予您匯入整個資料集或取樣部分資料集的能力。對於 Athena，它提供了下列取樣選項：
+ 無 – 匯入整個資料集。
+ 前 K 列 – 取樣資料集的前 K 列，其中 K 是您指定的整數。
+ 隨機化 – 取得您指定大小的隨機範例。
+ 分層 – 採取分層隨機範例。分層範例可以保留資料欄中值的比例。

以下程序說明如何將資料集從 Athena 匯入 Data Wrangler。

**從 Athena 將資料集匯入 Data Wrangler**

1. 登入 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)。

1. 選擇 **Studio**。

1. 選擇**啟動應用程式**。

1. 從下拉式清單中選取 **Studio**。

1. 選擇首頁圖示。

1. 選擇**資料**。

1. 選擇** Data Wrangler**。

1. 選擇**匯入資料**。

1. 在**可用**之下，選擇 **Amazon Athena**。

1. 對於**資料型錄**，請選擇資料型錄。

1. 使用**資料庫**下拉式清單來選取您要查詢的資料庫。當您選取資料庫時，您可以使用**詳細資訊**下列出的**資料表**來預覽資料庫中的所有資料表。

1. (選用) 選擇**進階組態**。

   1. 選擇**工作群組**。

   1. 如果您的工作群組尚未強制執行 Amazon S3 輸出位置，或者您不使用工作群組，請指定**查詢結果的 Amazon S3 位置**值。

   1. (選用) 對於**資料保留期**，請選取核取方塊以設定資料保留期間，並指定資料刪除前的儲存天數。

   1. (選用) 根據預設，Data Wrangler 會儲存連線。您可以選擇取消選取核取方塊，而不儲存連線。

1. 對於**取樣**，請選擇一種取樣方法。選擇**無**以關閉取樣。

1. 在查詢編輯器中輸入查詢，然後使用**執行**按鈕執行查詢。成功查詢後，您可以在編輯器下預覽結果。
**注意**  
Salesforce 資料使用 `timestamptz`類型。如果您要查詢從 Salesforce 匯入至 Athena 的時間戳記欄，請將資料欄中的資料轉換為 `timestamp`類型。下列查詢會將時間戳記欄轉換為正確的類型。  

   ```
   # cast column timestamptz_col as timestamp type, and name it as timestamp_col
   select cast(timestamptz_col as timestamp) as timestamp_col from table
   ```

1. 若要匯入查詢結果，請選取**匯入**。

完成上述程序之後，您查詢並匯入的資料集就會出現在 Data Wrangler 流程中。

根據預設， Data Wrangler 會將連線設定儲存為新的連線。匯入資料時，您已指定的查詢會顯示為新連線。儲存的連線會儲存您正在使用的 Athena 工作群組和 Amazon S3 儲存貯體的相關資訊。當您再次連線至資料來源時，您可以選擇已儲存的連線。

### 管理查詢結果
<a name="data-wrangler-import-manage-results"></a>

Data Wrangler 支援使用 Athena 工作群組來管理 AWS 帳戶內的查詢結果。您可以為每個工作群組指定 Amazon S3 輸出位置。您也可以指定查詢的輸出是否可以移至不同的 Amazon S3 位置。如需詳細資訊，請參閱[使用工作群組來控制查詢存取和成本](https://docs.aws.amazon.com/athena/latest/ug/manage-queries-control-costs-with-workgroups.html)。

您的工作群組可能已設定為強制執行 Amazon S3 查詢輸出位置。您無法變更這些工作群組查詢結果的輸出位置。

如果您不使用工作群組或為查詢指定輸出位置，Data Wrangler 會使用 Studio Classic 執行個體所在的相同 AWS 區域中的預設 Amazon S3 儲存貯體來存放 Athena 查詢結果。它會在此資料庫中建立暫時資料表，以將查詢輸出移至此 Amazon S3 儲存貯體。它會在資料匯入後刪除這些資料表；但是資料庫 `sagemaker_data_wrangler`仍會存在。如需詳細資訊，請參閱 [匯入資料儲存](#data-wrangler-import-storage)。

若要使用 Athena 工作群組，請設定可讓您存取工作群組的 IAM 政策。如果您使用的是 `SageMaker AI-Execution-Role`，建議將政策新增至角色。如需有關工作群組 IAM 政策的詳細資訊，請參閱[存取工作群組的 IAM 政策](https://docs.aws.amazon.com/athena/latest/ug/workgroups-iam-policy.html)。如需工作群組政策範例，請參閱[工作群組範例政策](https://docs.aws.amazon.com/athena/latest/ug/example-policies-workgroup.html)。

### 設定資料保留期
<a name="data-wrangler-import-athena-retention"></a>

Data Wrangler 會自動設定查詢結果的資料保留期。結果會在保留期過後刪除。例如，預設的保留期為五天。查詢結果會在五天後刪除。此設定是為了協助您清除不再使用的資料而設計。清除您的資料可防止未經授權的使用者取得存取權。還有助於控制在 Amazon S3 上儲存資料的成本。

如果您未設定保留期，Amazon S3 生命週期組態會決定物件的儲存持續時間。您為生命週期組態指定的資料保留政策會移除任何早於您指定的生命週期組態的查詢結果。如需詳細資訊，請參閱[在儲存貯體上設定生命週期組態](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)。

Data Wrangler 使用 Amazon S3 生命週期組態來管理資料保留和到期。您必須授予 Amazon SageMaker Studio Classic IAM 執行角色許可，才能管理儲存貯體生命週期組態。使用下列程序以授予許可權。

要授予許可權給管理生命週期組態，請執行以下操作。

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 選擇**角色**。

1. 在搜尋列中，指定 Amazon SageMaker Studio Classic 正在使用的 Amazon SageMaker AI 執行角色。

1. 選擇角色。

1. 選擇**新增許可**。

1. 選擇**建立內嵌政策**。

1. 對於**服務**，請指定 **S3** 並選擇它。

1. 在**讀取**區段下，選擇 **GetLifecycleConfiguration**。

1. 在**寫入**區段下，選擇 **PutLifecycleConfiguration**。

1. 針對**資源**，請選擇**特定**。

1. 針對**動作**，選取**許可管理**旁邊的箭頭圖示。

1. 選擇**PutResourcePolicy**。

1. 針對**資源**，請選擇**特定**。

1. 選擇**此帳戶中任何**旁邊的核取方塊。

1. 選擇**檢閱政策**。

1. 針對**名稱**，請指定一個名稱。

1. 選擇**建立政策**。

## 從 Amazon Redshift 匯入資料。
<a name="data-wrangler-import-redshift"></a>

Amazon Redshift 是一種在雲端中完全受管的 PB 級資料倉儲服務。建立資料倉儲服務的第一個步驟是啟動一組節點，稱為 Amazon Redshift 叢集。佈建您的叢集之後，您可以上傳您的資料集，然後執行資料分析查詢。

您可以在 Data Wrangler 中連線到並查詢一或多個 Amazon Redshift 叢集。若要使用此匯入選項，您必須在 Amazon Redshift 中建立至少一個叢集。要了解如何操作，請參閱[開始使用 Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)。

您可以在下列其中一個位置輸出 Amazon Redshift 查詢的結果：
+ 預設 Amazon S3 儲存貯體
+ 您指定的 Amazon S3 輸出位置

您可以匯入整個資料集，也可以對其中的一部分進行抽樣。對於 Amazon Redshift，它提供了下列取樣選項：
+ 無 – 匯入整個資料集。
+ 前 K 列 – 取樣資料集的前 K 列，其中 K 是您指定的整數。
+ 隨機化 – 取得您指定大小的隨機範例。
+ 分層 – 採取分層隨機範例。分層範例可以保留資料欄中值的比例。

預設 Amazon S3 儲存貯體位於您 Studio Classic 執行個體存放 Amazon Redshift 查詢結果所在的相同 AWS 區域。如需詳細資訊，請參閱[匯入資料儲存](#data-wrangler-import-storage)。

對於預設 Amazon S3 儲存貯體或您指定的儲存貯體，您可以使用下列加密選項：
+ 使用 Amazon S3 受管金鑰 (SSE-S3) 的預設 AWS 服務端加密
+  您指定的 AWS Key Management Service (AWS KMS) 金鑰

 AWS KMS 金鑰是您建立和管理的加密金鑰。如需有關 KMS 金鑰的詳細資訊，請參閱 [AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html)。

您可以使用 AWS KMS 金鑰 ARN 或您帳戶的 ARN 來 AWS 指定金鑰。

如果您使用 IAM 受管政策 `AmazonSageMakerFullAccess` 授予角色在 Studio Classic 中使用 Data Wrangler 的許可權，您的**資料庫使用者**名稱必須具有 `sagemaker_access` 字首。

使用下列程序以了解如何新增新叢集。

**注意**  
Data Wrangler 使用具有暫時憑證的 Amazon Redshift 資料 API。若要進一步了解此 API，請參閱 Amazon Redshift 管理指南中的[使用 Amazon Redshift 資料 API](https://docs.aws.amazon.com//redshift/latest/mgmt/data-api.html)。

**若要連線至 Amazon Redshift 叢集**

1. 登入 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)。

1. 選擇 **Studio**。

1. 選擇**啟動應用程式**。

1. 從下拉式清單中選取 **Studio**。

1. 選擇首頁圖示。

1. 選擇**資料**。

1. 選擇** Data Wrangler**。

1. 選擇**匯入資料**。

1. 在**可用**之下，選擇 **Amazon Athena**。

1. 選擇 **Amazon RedShift**。

1. 選擇**類型**的**暫時憑證 (IAM)**。

1. 輸入**連線名稱**。這是 Data Wrangler 用來識別此連線的名稱。

1. 輸入**叢集識別符**以指定要連線的叢集。注意：只能輸入叢集識別符，而不要輸入 Amazon Redshift 叢集的完整端點。

1. 將資料集的**資料庫名稱**輸入到您想要連線的位置。

1. 輸入**資料庫使用者**以識別要用來連線資料庫的使用者。

1. 對於**卸載 IAM 角色**，請輸入 Amazon Redshift 叢集假定要將資料移動和寫入 Amazon S3 角色的 IAM 角色 ARN。如需此角色的詳細資訊，請參閱《[Amazon Redshift 管理指南》中的授權 Amazon Redshift 代表您存取其他 AWS 服務](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html)。

1. 選擇**連線**。

1. (選用) 對於 **Amazon S3 輸出位置**，請指定要儲存查詢結果的 S3 URI。

1. (選用) 針對**KMS 金鑰 ID**，請指定 AWS KMS 金鑰的 ARN 或別名。下列影像顯示您可以在 AWS 管理主控台中找到任一金鑰的位置。  
![\[AWS KMS 主控台中 AWS KMS 別名 ARN、別名名稱和金鑰 ARN 的位置。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/kms-alias-redacted.png)

下列影像顯示前述程序的所有欄位。

![\[新增 Amazon Redshift 連線面板。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/redshift-connection.png)


成功建立連線後，它會在**資料匯入**下顯示為資料來源。選取此資料來源以查詢資料庫並匯入資料。

**若要從 Amazon Redshift 查詢和匯入資料。**

1. 選取您要從**資料來源**查詢的連線。

1. 選取**結構描述**。若要進一步了解 Amazon Redshift 結構描述，請參閱 Amazon Redshift 資料庫開發人員指南中的[結構描述](https://docs.aws.amazon.com/redshift/latest/dg/r_Schemas_and_tables.html)。

1. (選用) 在**進階組態**下，指定您要使用的**取樣**方法。

1. 在查詢編輯器中輸入您的查詢，然後選擇**執行**以執行查詢。成功查詢後，您可以在編輯器下預覽結果。

1. 選取**匯入資料集**以匯入已查詢的資料集。

1. 輸入**資料集名稱**。如果您要新增包含空格的**資料集名稱**，則在匯入資料集時，這些空格會用底線取代。

1. 選擇**新增**。

若要編輯資料集，請執行以下操作。

1. 導覽至您的 Data Wrangler 流程。

1. 選擇**來源 - 取樣**旁邊的 \$1。

1. 變更您匯入的資料。

1. 選擇**套用**

## 從 Amazon EMR 匯入資料
<a name="data-wrangler-emr"></a>

您可以使用 Amazon EMR 作為 Amazon SageMaker Data Wrangler 流程的資料來源。Amazon EMR 是您可以用來處理和分析大量資料的受管叢集平台。如需有關 Amazon EMR 的詳細資訊，請參閱 [Amazon EMR 是什麼？](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html)。若要從 EMR 匯入資料集，請連線至該資料集並進行查詢。

**重要**  
您必須滿足以下先決條件，才能連線到 Amazon EMR 叢集：  
您在用來啟動 Amazon SageMaker Studio Classic 和 Amazon EMR 的區域中有一個 Amazon VPC。
Amazon EMR 和 Amazon SageMaker Studio Classic 都必須在私有子網路中啟動。它們可以位於相同或不同的子網路中。
Amazon SageMaker Studio Classic 必須處於僅限 VPC 模式下。  
如需有關建立 VPC 的詳細資訊，請參閱[建立 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC)。  
如需建立 VPC 的詳細資訊，請參閱[將 VPC 中的 SageMaker Studio Classic 筆記本連線到外部資源](https://docs.aws.amazon.com/vpc/latest/userguide/studio-notebooks-and-internet-access.html)。
您正在執行的 Amazon EMR 叢集必須位於相同的 Amazon VPC 中。
Amazon EMR 叢集和 Amazon VPC 必須位於相同的 AWS 帳戶中。
您的 Amazon EMR 叢集正在執行 Hive 或 Presto。  
Hive 叢集必須允許來自連接埠 10000 上 Studio Classic 安全群組的傳入流量。
Presto 叢集必須連接埠 8889 上允許來自 Studio Classic 安全群組的傳入流量。  
使用 IAM 角色的 Amazon EMR 叢集有不同的連接埠號碼。如需詳細資訊，請導覽至先決條件區段的結尾。
Amazon SageMaker Studio Classic 必須執行 Jupyter Lab 第 3 版。如需更新 Jupyter Lab 版本的相關資訊，請參閱[從主控台檢視和更新應用程式的 JupyterLab 版本](studio-jl.md#studio-jl-view)。
Amazon SageMaker Studio Classic 具有控制使用者存取的 IAM 角色。您用來執行 Amazon SageMaker Studio Classic 的預設 IAM 角色沒有可讓您存取 Amazon EMR 叢集的政策。您必須將授予許可的政策連接到 IAM 角色。如需詳細資訊，請參閱[設定列出 Amazon EMR 叢集](studio-notebooks-configure-discoverability-emr-cluster.md)。
此 IAM 角色也須連接下列政策 `secretsmanager:PutResourcePolicy`。
如果您使用已建立的 Studio Classic 網域，請確定其 `AppNetworkAccessType` 處於僅限 VPC 模式下。如需更新網域以使用僅限 VPC 模式的資訊，請參閱[關閉並更新 Amazon SageMaker Studio Classic](studio-tasks-update-studio.md)。
您必須在叢集上安裝 Hive 或 Presto。
Amazon EMR 發行版本必須為 5.5.0 版或更新版本。  
Amazon EMR 支援自動終止。自動終止會阻止閒置的叢集執行，並阻止您產生成本。以下是支援自動終止的版本：  
對於 6.x 版本，則為 6.1.0 或更新版本。
對於 5.x 版本，則為 5.30.0 或更新版本。
使用下列頁面為 Amazon EMR 叢集設定 IAM 執行期角色。當您使用執行期角色時，您必須啟用傳輸中加密：  
[使用執行期角色啟動 Amazon EMR 叢集的先決條件](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-steps-runtime-roles.html#emr-steps-runtime-roles-configure)
[啟動具有角色型存取控制的 Amazon EMR 叢集](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-steps-runtime-roles.html#emr-steps-runtime-roles-launch)
您必須將 Lake Formation 作為資料庫中資料的控管工具。您也必須使用外部資料篩選來進行存取控制。  
如需 Lake Formation 的詳細資訊，請參閱[什麼是 AWS Lake Formation？](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html)
如需將 Lake Formation 整合至 Amazon EMR 的詳細資訊，請參閱[整合第三方服務與 Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/Integrating-with-LakeFormation.html)。
您叢集的版本必須為 6.9.0 或更新版本。
存取 AWS Secrets Manager。如需有關 Secrets Manager 的詳細資訊，請參閱 [AWS Secrets Manager是什麼？](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
Hive 叢集必須允許來自連接埠 10000 上 Studio Classic 安全群組的傳入流量。

Amazon VPC 是一種虛擬網路，在邏輯上與 AWS 雲端上的其他網路隔離。Amazon SageMaker Studio Classic 和您的 Amazon EMR 叢集僅存在於 Amazon VPC 中。

使用下列程序在 Amazon VPC 中啟動 Amazon SageMaker Studio Classic。

若要在 VPC 中啟動 Studio Classic，請執行以下動作。

1. 導覽至 SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 選擇**啟動 SageMaker Studio Classic**。

1. 選擇**標準設定**。

1. 對於**預設執行角色**，請選擇要設定 Studio Classic 的 IAM 角色。

1. 選擇您已在其中啟動 Amazon EMR 叢集的 VPC。

1. 針對**子網路**，請選擇私有子網路。

1. 對於**安全群組**，請指定您用來控制 VPC 之間的安全群組。

1. 選擇**僅限 VPC**。

1. （選用） AWS 使用預設加密金鑰。您可以指定加密資料的 AWS Key Management Service 金鑰。

1. 選擇**下一步**。

1. 在 **Studio 設定**下，選擇最適合您的組態。

1. 選擇**下一步**以略過 SageMaker Canvas 設定。

1. 選擇**下一步**以略過 RStudio 設定。

如果您的 Amazon EMR 叢集尚未就緒，請使用下列程序建立叢集。如需有關 Amazon EMR 的詳細資訊，請參閱 [Amazon EMR 是什麼？](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html)

若要建立叢集，請執行以下操作。

1. 導覽至 AWS 管理主控台。

1. 在搜尋列中，指定 **Amazon EMR**。

1. 選擇 **Create Cluster** (建立叢集)。

1. 針對 **叢集名稱**，請指定您叢集的名稱。

1. 對於**發行**，請選取叢集的發行版本。
**注意**  
Amazon EMR 支援下列發行版本的自動終止功能：  
對於 6.x 發行版本，為 6.1.0 或更新版本。
對於 5.x 發行版本，為 5.30.0 或更新版本。
自動終止會阻止閒置的叢集執行，並阻止您產生成本。

1. (選用) 對於**應用程式**，請選擇 **Presto**。

1. 選擇您在叢集上執行的應用程式。

1. 在**網路**下，對**硬體組態**指定硬體組態設定。
**重要**  
對於**聯網**，請選擇執行 Amazon SageMaker Studio Classic 的 VPC，然後選擇私有子網路。

1. 在**安全和存取**下，指定安全設定。

1. 選擇**建立**。

如需建立 Amazon EMR 叢集的教學課程，請參閱[開始使用 Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html)。如需設定叢集的最佳實務的相關資訊，請參閱[考量事項和最佳實務](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-ha-considerations.html)。

**注意**  
對於最佳安全實務，Data Wrangler 只能連線到私有子網路上的 VPC。除非您將 AWS Systems Manager 用於 Amazon EMR 執行個體，否則無法連線至主節點。如需詳細資訊，請參閱[使用 AWS Systems Manager安全存取 EMR 叢集](https://aws.amazon.com/blogs/big-data/securing-access-to-emr-clusters-using-aws-systems-manager/)。

您目前可以使用下列方法存取 Amazon EMR 叢集：
+ 無身分驗證
+ 輕量型目錄存取通訊協定 (LDAP)
+ IAM (執行期角色)

不使用身分驗證或使用 LDAP 可能需要您建立多個叢集和 Amazon EC2 執行個體設定檔。如果您是系統管理員，您可能需要為使用者群組提供不同層級的資料存取權限。這些方法可能會導致額外的管理負擔，使管理使用者變得更加困難。

我們建議使用 IAM 執行期角色，讓多個使用者能夠連線到同一個 Amazon EMR 叢集。執行期角色是 IAM 角色，您可以將其指派給連線到 Amazon EMR 叢集的使用者。您可以設定執行期 IAM 角色，使其具有特定於每個使用者群組的許可。

使用以下各區段建立已啟用 LDAP 的 Presto 或 Hive Amazon EMR 叢集。

------
#### [ Presto ]

**重要**  
若要使用 AWS Glue 做為 Presto 資料表的中繼存放區，請選取**用於** **Presto 資料表中繼資料**，以在啟動 EMR 叢集時將 Amazon EMR 查詢的結果存放在 AWS Glue 資料目錄中。將查詢結果存放在 AWS Glue 資料目錄中可節省您產生費用。  
若要查詢 Amazon EMR 叢集上的大型資料集，您必須將下列屬性新增至 Amazon EMR 叢集上的 Presto 組態檔案：  

```
[{"classification":"presto-config","properties":{
"http-server.max-request-header-size":"5MB",
"http-server.max-response-header-size":"5MB"}}]
```
您也可以在啟動 Amazon EMR 叢集時修改組態設定。  
Amazon EMR 叢集的組態檔案位於下列路徑下：`/etc/presto/conf/config.properties`。

使用以下各程序建立已啟用 LDAP 的 Presto 叢集。

若要建立叢集，請執行以下操作。

1. 導覽至 AWS 管理主控台。

1. 在搜尋列中，指定 **Amazon EMR**。

1. 選擇 **Create Cluster** (建立叢集)。

1. 針對 **叢集名稱**，請指定您叢集的名稱。

1. 對於**發行**，請選取叢集的發行版本。
**注意**  
Amazon EMR 支援下列發行版本的自動終止功能：  
對於 6.x 發行版本，為 6.1.0 或更新版本。
對於 5.x 發行版本，為 5.30.0 或更新版本。
自動終止會阻止閒置的叢集執行，並阻止您產生成本。

1. 選擇您在叢集上執行的應用程式。

1. 在**網路**下，對**硬體組態**指定硬體組態設定。
**重要**  
對於**聯網**，請選擇執行 Amazon SageMaker Studio Classic 的 VPC，然後選擇私有子網路。

1. 在**安全和存取**下，指定安全設定。

1. 選擇**建立**。

------
#### [ Hive ]

**重要**  
若要使用 AWS Glue 做為 Hive 資料表的中繼存放區，請選取**用於** **Hive 資料表中繼資料**，以在啟動 EMR 叢集時將 Amazon EMR 查詢的結果存放在 AWS Glue 資料目錄中。將查詢結果存放在 AWS Glue 資料目錄中可節省您產生費用。  
若要能查詢 Amazon EMR 叢集上的大型資料集，請將下列屬性新增至 Amazon EMR 叢集上的 Hive 組態檔案：  

```
[{"classification":"hive-site", "properties"
:{"hive.resultset.use.unique.column.names":"false"}}]
```
您也可以在啟動 Amazon EMR 叢集時修改組態設定。  
Amazon EMR 叢集的組態檔案位於下列路徑下：`/etc/hive/conf/hive-site.xml`。您可以指定下列屬性並重新啟動叢集：  

```
<property>
    <name>hive.resultset.use.unique.column.names</name>
    <value>false</value>
</property>
```

使用以下各程序建立已啟用 LDAP 的 Hive 叢集。

若要建立已啟用 LDAP 的 Hive 叢集，請執行以下操作。

1. 導覽至 AWS 管理主控台。

1. 在搜尋列中，指定 **Amazon EMR**。

1. 選擇 **Create Cluster** (建立叢集)。

1. 選擇**前往進階選項**。

1. 對於**發行版本**，請選取 Amazon EMR 發行版本。

1. 根據預設，選擇 **Hive** 組態選項。確定 **Hive** 選項旁邊有一個核取方塊。

1. (選用) 您也可以選取 **Presto** 作為組態選項，以在叢集上啟動 Hive 和 Presto。

1. （選用） 選取**用於 Hive 資料表中繼資料**，將 Amazon EMR 查詢的結果儲存在 AWS Glue 資料目錄中。將查詢結果存放在 AWS Glue 目錄中可節省您產生費用。如需詳細資訊，請參閱[使用 AWS Glue Data Catalog 做為 Hive 的中繼存放區](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-metastore-glue.html)。
**注意**  
將查詢結果儲存在資料型錄中需要使用 Amazon EMR 5.8.0 或更新版本。

1. 在**輸入組態**下，指定下列 JSON：

   ```
   [
     {
       "classification": "hive-site",
       "properties": {
         "hive.server2.authentication.ldap.baseDN": "dc=example,dc=org",
         "hive.server2.authentication": "LDAP",
         "hive.server2.authentication.ldap.url": "ldap://ldap-server-dns-name:389"
       }
     }
   ]
   ```
**注意**  
為了最佳安全實務，我們建議您在前面的 Hive 網站 JSON 中新增一些屬性，以啟用 HivServer 的 SSL。如需詳細資訊，請參閱[在 HiveServer2 上啟用 SSL](https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.0.1/configuring-wire-encryption/content/enable_ssl_on_hiveserver2.html)。

1. 指定剩餘的叢集設定並建立叢集。

------

請參閱下列各區段，以針對您已經建立的 Amazon EMR 叢集使用 LDAP 身分驗證。

------
#### [ LDAP for Presto ]

在執行 Presto 的叢集上使用 LDAP 需要透過 HTTPS 存取 Presto 協調器。若要提供存取權限，請執行以下操作：
+ 啟動連接埠 636 的存取權限
+ 為 Presto 協調器啟用 SSL

使用下面的範本來設定 Presto：

```
- Classification: presto-config
     ConfigurationProperties:
        http-server.authentication.type: 'PASSWORD'
        http-server.https.enabled: 'true'
        http-server.https.port: '8889'
        http-server.http.port: '8899'
        node-scheduler.include-coordinator: 'true'
        http-server.https.keystore.path: '/path/to/keystore/path/for/presto'
        http-server.https.keystore.key: 'keystore-key-password'
        discovery.uri: 'http://master-node-dns-name:8899'
- Classification: presto-password-authenticator
     ConfigurationProperties:
        password-authenticator.name: 'ldap'
        ldap.url: !Sub 'ldaps://ldap-server-dns-name:636'
        ldap.user-bind-pattern: "uid=${USER},dc=example,dc=org"
        internal-communication.authentication.ldap.user: "ldap-user-name"
        internal-communication.authentication.ldap.password: "ldap-password"
```

如需有關在 Presto 中設定 LDAP 的資訊，請參閱下列資源：
+ [LDAP 身分驗證](https://prestodb.io/docs/current/security/ldap.html)
+ [使用 Presto on Amazon EMR 的 LDAP 身分驗證](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-ldap.html)

**注意**  
我們建議的最佳安全實務是，為 Presto 啟用 SSL。如需詳細資訊，請參閱[安全內部通訊](https://prestodb.io/docs/current/security/internal-communication.html)。

------
#### [ LDAP for Hive ]

若要針對已建立的叢集使用 Hive 的 LDAP，請使用下列程序在[主控台中重新設定執行個體群組](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html#emr-configure-apps-running-cluster-considerations)。

您正在指定您所連線的叢集名稱。

```
[
  {
    "classification": "hive-site",
    "properties": {
      "hive.server2.authentication.ldap.baseDN": "dc=example,dc=org",
      "hive.server2.authentication": "LDAP",
      "hive.server2.authentication.ldap.url": "ldap://ldap-server-dns-name:389"
    }
  }
]
```

------

使用以下程序以從叢集匯入資料。

若要從叢集匯入資料，請執行以下操作。

1. 開啟 Data Wrangler 流程。

1. 選擇**建立連線**。

1. 選擇 **Amazon EMR**。

1. 執行下列其中一項操作。
   + (選用) 對於**機密 ARN**，請指定叢集內資料庫的 Amazon 資源編號 (ARN)。機密能提供額外的安全性。如需秘密的詳細資訊，請參閱[什麼是 AWS Secrets Manager？](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 如需有關為您的叢集建立資料機密的詳細資訊，請參閱[為您的叢集建立 AWS Secrets Manager 秘密](#data-wrangler-emr-secrets-manager)。
**重要**  
如果您使用 IAM 執行期角色進行身分驗證，則必須指定機密。
   + 從下拉式資料表中選擇一個叢集。

1. 選擇**下一步**。

1. 對於**為 *example-cluster-name* 叢集選擇端點**，請選擇一個查詢引擎。

1. (選用) 選取**儲存連線**。

1. 選擇**下一步，選擇登入**，然後選擇以下其中一個規則：
   + 無身分驗證
   + LDAP
   + IAM

1. 對於**登入 *example-cluster-name* 叢集，請指定該叢集**的**使用者名稱**和**密碼**。

1. 選擇**連線**。

1. 在查詢編輯器中指定 SQL 查詢。

1. 選擇**執行**。

1. 選擇**匯入**。

### 為您的叢集建立 AWS Secrets Manager 秘密
<a name="data-wrangler-emr-secrets-manager"></a>

如果您使用 IAM 執行期角色來存取 Amazon EMR 叢集，則必須將用來存取 Amazon EMR 的憑證儲存為 Secrets Manager 機密。您可以儲存用來存取機密內叢集的所有憑證。

您必須在機密中儲存下列資訊：
+ JDBC 端點 – `jdbc:hive2://`
+ DNS 名稱 – Amazon EMR 叢集的 DNS 名稱。它是主要節點的端點或主機名稱。
+ 連接埠 – `8446`

您也可以在機密中儲存下列其他資訊：
+ IAM 角色 – 您用來存取叢集的 IAM 角色。根據預設， Data Wrangler 會使用您的 SageMaker AI 執行角色。
+ 信任庫路徑 – 根據預設，Data Wrangler 會為您建立一個信任庫路徑。您也可以使用您自己的信任庫路徑。如需有關信任庫路徑的詳細資訊，請參閱 [HiveServer2 中的傳輸中加密](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/hs2-encryption-intransit.html)。
+ 信任庫密碼 – 根據預設，Data Wrangler 會為您建立一個信任庫密碼。您也可以使用您自己的信任庫路徑。如需有關信任庫路徑的詳細資訊，請參閱 [HiveServer2 中的傳輸中加密](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/hs2-encryption-intransit.html)。

使用下列程序將憑證儲存在 Secrets Manager 機密中。

要將憑證儲存為機密，請執行以下操作。

1. 導覽至 AWS 管理主控台。

1. 在搜尋列中，指定 Secrets Manager。

1. 選擇 **AWS Secrets Manager**。

1. 選擇**存放新的機密**。

1. 針對**機密類型**，選擇**其他類型的機密**。

1. 在**鍵/值**對下，選取**純文字**。

1. 對於執行 Hive 的叢集，您可以使用下列範本進行 IAM 身份驗證。

   ```
   {"jdbcURL": ""
    "iam_auth": {"endpoint": "jdbc:hive2://", #required
                   "dns": "ip-xx-x-xxx-xxx.ec2.internal", #required 
                   "port": "10000", #required
                 "cluster_id": "j-xxxxxxxxx", #required
                 "iam_role": "arn:aws:iam::xxxxxxxx:role/xxxxxxxxxxxx", #optional
                 "truststore_path": "/etc/alternatives/jre/lib/security/cacerts", #optional
                 "truststore_password": "changeit" #optional
                 
                 }}
   ```
**注意**  
匯入資料之後，您可以將轉換套用至這些資料上。然後，您可以將已轉換的資料匯出到特定位置。如果您使用 Jupyter 筆記本將轉換後的資料匯出到 Amazon S3，則必須使用上述範例中指定的信任庫路徑。

Secrets Manager 機密將 Amazon EMR 叢集的 JDBC URL 儲存為機密。使用機密比直接輸入憑證更安全。

使用下列程序以將 JDBC URL 儲存為機密。

要將 JDBC URL 儲存為機密，請執行以下操作。

1. 導覽至 AWS 管理主控台。

1. 在搜尋列中，指定 Secrets Manager。

1. 選擇 **AWS Secrets Manager**。

1. 選擇**存放新的機密**。

1. 針對**機密類型**，選擇**其他類型的機密**。

1. 對於**鍵/值**對，請指定 `jdbcURL` 為索引鍵，並將有效的 JDBC URL 指定為值。

   有效 JDBC URL 的格式取決於您是否使用身分驗證，以及您是否使用 Hive 或 Presto 作為查詢引擎。下列清單顯示不同可能組態的有效 JBDC URL 格式。
   + Hive，無身分驗證 – `jdbc:hive2://emr-cluster-master-public-dns:10000/;`
   + Hive，LDAP 身分驗證 – `jdbc:hive2://emr-cluster-master-public-dns-name:10000/;AuthMech=3;UID=david;PWD=welcome123;`
   + 對於啟用 SSL 的 Hive，JDBC URL 格式取決於您是否對 TLS 組態使用 Java Keystore File。Java Keystore File 可協助驗證 Amazon EMR 叢集主節點的身分。若要使用 Java Keystore File，請在 EMR 叢集上產生該檔案，並將其上傳至 Data Wrangler。若要產生檔案，請在 Amazon EMR 叢集上使用下列命令，`keytool -genkey -alias hive -keyalg RSA -keysize 1024 -keystore hive.jks`。如需有關在 Amazon EMR 叢集上執行命令的資訊，請參閱[使用 AWS Systems Manager安全存取 EMR 叢集](https://aws.amazon.com/blogs/big-data/securing-access-to-emr-clusters-using-aws-systems-manager/)。若要上傳檔案，請選擇 Data Wrangler 使用者介面左側導覽列上的向上箭頭。

     以下是啟用 SSL 的 Hive 的有效 JDBC URL 格式：
     + 沒有 Java Keystore File – `jdbc:hive2://emr-cluster-master-public-dns:10000/;AuthMech=3;UID=user-name;PWD=password;SSL=1;AllowSelfSignedCerts=1;`
     + 有 Java Keystore File – `jdbc:hive2://emr-cluster-master-public-dns:10000/;AuthMech=3;UID=user-name;PWD=password;SSL=1;SSLKeyStore=/home/sagemaker-user/data/Java-keystore-file-name;SSLKeyStorePwd=Java-keystore-file-passsword;`
   + Presto，無身分認證 – jdbc:presto://*emr-cluster-master-public-dns*:8889/;
   + 對於具有 LDAP 身分驗證和啟用 SSL 的 Presto ，JDBC URL 格式取決於您是否對 TLS 組態使用 Java Keystore File。Java Keystore File 可協助驗證 Amazon EMR 叢集主節點的身分。若要使用 Java Keystore File，請在 EMR 叢集上產生該檔案，並將其上傳至 Data Wrangler。若要上傳檔案，請選擇 Data Wrangler 使用者介面左側導覽列上的向上箭頭。如需有關為 Presto 建立 Java Keystore File 的資訊，請參閱 [TLS 用 Java Keystore File](https://prestodb.io/docs/current/security/tls.html#server-java-keystore)。如需有關在 Amazon EMR 叢集上執行命令的資訊，請參閱[使用 AWS Systems Manager安全存取 EMR 叢集](https://aws.amazon.com/blogs/big-data/securing-access-to-emr-clusters-using-aws-systems-manager/)。
     + 沒有 Java Keystore File – `jdbc:presto://emr-cluster-master-public-dns:8889/;SSL=1;AuthenticationType=LDAP Authentication;UID=user-name;PWD=password;AllowSelfSignedServerCert=1;AllowHostNameCNMismatch=1;`
     + 有 Java Keystore File – `jdbc:presto://emr-cluster-master-public-dns:8889/;SSL=1;AuthenticationType=LDAP Authentication;SSLTrustStorePath=/home/sagemaker-user/data/Java-keystore-file-name;SSLTrustStorePwd=Java-keystore-file-passsword;UID=user-name;PWD=password;`

在從 Amazon EMR 叢集匯入資料的整個過程中，您可能會遇到問題。如需有關上述問題的疑難排資訊，請參閱[針對 Amazon EMR 的問題進行故障診斷](data-wrangler-trouble-shooting.md#data-wrangler-trouble-shooting-emr)。

## 從 Databricks (JDBC) 匯入資料
<a name="data-wrangler-databricks"></a>

您可以使用 Databricks 作為 Amazon SageMaker Data Wrangler 流程的資料來源。若要從 Databricks 匯入資料集，請使用 JDBC (Java 資料庫連線) 匯入功能來存取您的 Databricks 資料庫。存取資料庫之後，請指定 SQL 查詢以取得資料並將其匯入。

我們假設你有一個正在執行的 Databricks 叢集，且你將 JDBC 驅動程式設定給該叢集。如需詳細資訊，請參閱下列 Databricks 文件頁：
+ [JDBC 驅動程式](https://docs.databricks.com/integrations/bi/jdbc-odbc-bi.html#jdbc-driver)
+ [JDBC 組態和連線參數](https://docs.databricks.com/integrations/bi/jdbc-odbc-bi.html#jdbc-configuration-and-connection-parameters)
+ [身分驗證參數](https://docs.databricks.com/integrations/bi/jdbc-odbc-bi.html#authentication-parameters)

Data Wrangler 會將您的 JDBC URL 存放在其中 AWS Secrets Manager。您必須授予您的 Amazon SageMaker Studio Classic IAM 執行角色許可，才能使用 Secrets Manager。使用下列程序以授予許可權。

若要授與 Secrets Manager 許可權，請執行以下操作。

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 選擇**角色**。

1. 在搜尋列中，指定 Amazon SageMaker Studio Classic 正在使用的 Amazon SageMaker AI 執行角色。

1. 選擇角色。

1. 選擇**新增許可**。

1. 選擇**建立內嵌政策**。

1. 對於**服務**，請指定 **Secrets Manager** 並選擇它。

1. 針對**動作**，選取**許可管理**旁邊的箭頭圖示。

1. 選擇**PutResourcePolicy**。

1. 針對**資源**，請選擇**特定**。

1. 選擇**此帳戶中任何**旁邊的核取方塊。

1. 選擇**檢閱政策**。

1. 針對**名稱**，請指定一個名稱。

1. 選擇**建立政策**。

您可以使用分割區更快速地匯入資料。分割區讓 Data Wrangler 能夠平行處理資料。根據預設，Data Wrangler 會使用 2 個分割區。對於大多數的使用案例，2 個分割區可為您提供近乎最佳的資料處理速度。

如果您選擇指定 2 個以上的分割區，您也可以指定一個資料欄來分割資料。資料欄中值的類型必須是數字或日期。

我們建議您只在瞭解資料結構及其處理方式時，才使用分割區。

您可以匯入整個資料集，也可以對其中的一部分進行抽樣。對於 Databricks 資料庫，它提供了下列取樣選項：
+ 無 – 匯入整個資料集。
+ 前 K 列 – 取樣資料集的前 K 列，其中 K 是您指定的整數。
+ 隨機化 – 取得您指定大小的隨機範例。
+ 分層 – 採取分層隨機範例。分層範例可以保留資料欄中值的比例。

使用下列程序從 Databricks 資料庫匯入資料。

若要從 Databricks 匯入資料，請執行以下操作。

1. 登入 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)。

1. 選擇 **Studio**。

1. 選擇**啟動應用程式**。

1. 從下拉式清單中選取 **Studio**。

1. 從 Data Wrangler 流程的**匯入資料**索引標籤，選擇 **Databricks**。

1. 指定下列欄位：
   + **資料集名稱** – 您想要在 Data Wrangler 流程中使用的資料集名稱。
   + **驅動程式** – **com.simba.spark.jdbc.Driver**。
   + **JDBC URL** – Databricks 資料庫的網址。URL 格式可能會因 Databricks 執行個體而有所不同。如需尋找 URL 及其中指定參數的詳細資訊，請參閱 [JDBC 組態和連線參數](https://docs.databricks.com/integrations/bi/jdbc-odbc-bi.html#jdbc-configuration-and-connection-parameters)。以下為格式化 URL 的範例：jdbc:spark://aws-sagemaker-datawrangler.cloud.databricks.com:443/default;transportMode=http;ssl=1;httpPath=sql/protocolv1/o/3122619508517275/0909-200301-cut318;AuthMech=3;UID=*token*;PWD=*personal-access-token*。
**注意**  
您可以指定包含 JDBC URL 的機密 ARN，而不是指定 JDBC URL 本身。機密必須包含具有下列格式的鍵值組：`jdbcURL:JDBC-URL`。如需詳細資訊，請參閱[什麼是 Secrets Manager？](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)。

1. 指定一個 SQL SELECT 陳述式。
**注意**  
Data Wrangler 不支援通用資料表運算式 (CTE) 或查詢中的暫時資料表。

1. 對於**取樣**，請選擇一種取樣方法。

1. 選擇**執行**。

1. (選用) 對於**預覽**，請選擇齒輪以開啟**分割區設定**。

   1. 指定分割區數。如果您指定分割區數目，則可以按欄進行分割：
     + **輸入分割區數目** – 指定大於 2 的值。
     + (選用) **依欄分割** – 指定下列欄位。如果您已指定**輸入分割區數目**的值，才能依欄進行分割。
       + **選取欄** – 選取要用於資料分割區的欄。資料欄的資料類型必須是數字或日期。
       + **上限** – 對於您指定資料欄中的值，上限是您在分區中使用的值。您指定的值不會變更您要匯入的資料。它只會影響匯入的速度。為了獲得最佳效能，請指定接近資料欄最大值的上限。
       + **下限** – 對於您指定資料欄中的值，下限是您在分區中使用的值。您指定的值不會變更您要匯入的資料。它只會影響匯入的速度。為了獲得最佳效能，請指定接近資料欄最小值的下限。

1. 選擇**匯入**。

## 從 Salesforce 資料雲端匯入資料。
<a name="data-wrangler-import-salesforce-data-cloud"></a>

您可以在 Amazon SageMaker Data Wrangler 中使用 Salesforce 資料雲端做為資料來源，準備 Salesforce 資料雲端中的資料以進行機器學習。

使用 Salesforce 資料雲端做為 Data Wrangler 中的資料來源，讓您可以快速連線到 Salesforce 資料，而無需撰寫任何一行程式碼。您可以將 Salesforce 資料與 Data Wrangler 中任何其他資料來源的資料聯結。

連線到資料雲端後，您可以執行以下操作：
+ 使用內建視覺效果視覺化您的資料
+ 了解資料並識別潛在錯誤和極端價值
+ 透過 300 多種內建轉換來轉換資料
+ 匯出已轉換的資料

**Topics**
+ [管理員設定](#data-wrangler-import-salesforce-data-cloud-administrator)
+ [資料科學家指南](#data-wrangler-salesforce-data-cloud-ds)

### 管理員設定
<a name="data-wrangler-import-salesforce-data-cloud-administrator"></a>

**重要**  
在您開始使用之前，請確定您使用者執行的是 Amazon SageMaker Studio Classic 版本為 1.3.0 或更新版本。如需檢查 Studio Classic 版本和更新它的相關資訊，請參閱 [使用 Amazon SageMaker Data Wrangler 準備機器學習資料](data-wrangler.md)。

當您設定 Salesforce 資料雲端的存取權時，必須完成以下工作：
+ 取得您 Salesforce 網域 URL。Salesforce 也會將網域 URL 作為您組織的 URL。
+ 從 Salesforce 取得 OAuth 憑證。
+ 取得 Salesforce 網域的授權 URL 和權杖 URL。
+ 使用 OAuth 組態建立 AWS Secrets Manager 秘密。
+ 建立生命週期組態，讓 Data Wrangler 讀取機密的憑證。
+ 授予 Data Wrangler 讀取機密的許可權。

執行上述工作後，您的使用者即可使用 OAuth 登入 Salesforce 資料雲端。

**注意**  
設定完所有項目後，使用者可能會遇到問題。如需有關疑難排解的資訊，請參閱[Salesforce 的 故障診斷](data-wrangler-trouble-shooting.md#data-wrangler-troubleshooting-salesforce-data-cloud)。

請使用下列程序取得網域 URL。

1. 導覽至 [Salesforce](login.salesforce.com) 登入頁面。

1. 對於**快速尋找**，請指定**我的網域**。

1. 將**目前我的網域 URL** 值複製到文字檔案中。

1. 新增 `https://`到 URL 的開頭。

取得 Salesforce 網域 URL 之後，您可以使用下列程序從 Salesforce 取得登入憑證，並允許 Data Wrangler 存取您的 Salesforce 資料。

若要從 Salesforce 取得登入憑證，並提供 Data Wrangler 的存取權，請執行以下操作。

1. 導覽至您的 Salesforce 網域 URL，然後登入您的帳戶。

1. 選擇齒輪圖示。

1. 在出現的搜尋列中，指定**應用程式管理員**。

1. 選取**新增連線的應用程式**。

1. 指定下列欄位：
   + 已連線的應用程式名稱 – 您可以指定任何名稱，但我們建議您選擇包含 Data Wrangler 的名稱。例如，您可以指定 **Salesforce 資料雲端 Data Wrangler 整合**。
   + API 名稱 – 使用預設值。
   + 聯絡人電子郵件 – 指定您的電子郵件地址。
   + 在 **API 標題 (啟用 OAuth 設定) **下，勾選核取方塊以啟用 OAuth 設定。
   + 若為**回呼 URL**，請指定 Amazon SageMaker Studio Classic URL。若要取得 Studio Classic 的 URL，請從 存取並 AWS 管理主控台 複製 URL。

1. 在**選定的 OAuth 範圍**下，將以下內容從**可用的 OAuth 範圍**移動到**選取的 OAuth 範圍**：
   + 透過 API 管理使用者資料 (`api`)
   + 隨時執行要求 (`refresh_token`、`offline_access`)
   + 對 Salesforce 資料雲端資料上執行 ANSI SQL 查詢 (`cdp_query_api`)
   + 管理 Salesforce 客戶資料平台設定檔資料 (`cdp_profile_api`)

1. 選擇**儲存**。儲存變更後，Salesforce 會開啟新頁面。

1. 選擇**繼續**

1. 導覽至**消費者金鑰和機密**。

1. 選擇**管理消費者詳細資訊**。Salesforce 會將您重新導向至可能必須通過雙因素驗證才能前往的新頁面。

1. 
**重要**  
將消費者金鑰和消費者機密複製到文字編輯器。您需要這些資訊才能將資料雲端連線到 Data Wrangler。

1. 導覽回**管理連線的應用程式**。

1. 導覽至**連線應用程式名稱**和應用程式的名稱。

1. 選擇**管理**。

   1. 選取**編輯政策**。

   1. 將**放寬 IP**變更為**放寬 IP 限制**。

   1. 選擇**儲存**。

在提供 Salesforce 資料雲端的存取權後，您需要為使用者提供許可權。使用下列程序以提供他們許可權。

若要為您的使用者提供許可權，請執行以下操作。

1. 導覽到設定首頁。

1. 在左側的導覽中，搜尋**使用者**，然後選擇**使用者**功能表項目。

1. 使用您的使用者名稱選擇超連結。

1. 導覽至**許可集指派**。

1. 選擇**編輯指派資料**。

1. 新增下列許可：
   + **客戶資料平台管理員**
   + **客戶資料平台資料感知專家**

1. 選擇**儲存**。

取得 Salesforce 網域的資訊後，您必須取得要建立之 AWS Secrets Manager 秘密的授權 URL 和字符 URL。

請使用下列程序來取得授權 URL 和權杖 URL。

**若要取得授權 URL 和權杖 URL**

1. 導覽至您的 Salesforce 網域 URL。

1. 使用下列方法之一來獲取 URL。如果您使用的是安裝有 `curl`和 `jq`的 Linux 發行版本，我們建議您使用僅適用於 Linux 的方法。
   + (僅適用 Linux) 在終端機中指定以下命令。

     ```
     curl salesforce-domain-URL/.well-known/openid-configuration | \
     jq '. | { authorization_url: .authorization_endpoint, token_url: .token_endpoint }' | \
     jq '.  += { identity_provider: "SALESFORCE", client_id: "example-client-id", client_secret: "example-client-secret" }'
     ```
   + 

     1. 導覽到瀏覽器中的 **example-org-URL*/.well-known/openid-configuration*。

     1. 將 `authorization_endpoint`和 `token_endpoint`複製到文字編輯器。

     1. 創立下列 JSON 物件：

        ```
        {
          "identity_provider": "SALESFORCE",
          "authorization_url": "example-authorization-endpoint", 
          "token_url": "example-token-endpoint",
          "client_id": "example-consumer-key",
          "client_secret": "example-consumer-secret"
        }
        ```

建立 OAuth 組態物件之後，您可以建立存放該物件的 AWS Secrets Manager 秘密。請使用下列步驟建立上述機密。

若要建立密碼，請執行以下操作。

1. 導覽至 [AWS Secrets Manager 主控台](https://console.aws.amazon.com/secretsmanager/)。

1. 選擇**儲存新機密**。

1. 選取**其他機密類型**。

1. 在**鍵/值**對下，選取**純文字**。

1. 以下列組態設定取代空的 JSON。

   ```
   {
     "identity_provider": "SALESFORCE",
     "authorization_url": "example-authorization-endpoint", 
     "token_url": "example-token-endpoint",
     "client_id": "example-consumer-key",
     "client_secret": "example-consumer-secret"
   }
   ```

1. 選擇**下一步**。

1. 在**機密名稱**中，指定機密的名稱。

1. 在**標籤**下，選擇**新增**。

   1. 對於**金鑰**，請指定 **sagemaker:partner**。對於**值**，我們建議您指定可能對您的使用案例有用的值。不過，您可以指定任意值。
**重要**  
您必須建立金鑰。如果您未建立金鑰，就無法從 Salesforce 匯入資料。

1. 選擇**下一步**。

1. 選擇**儲存**。

1. 選擇您已建立的機密。

1. 記下以下欄位：
   + 機密的 Amazon Resource Number (ARN)
   + 機密的名稱。

建立機密之後，您必須新增許可權，讓 Data Wrangler 讀取機密。使用下列程序以新增許可權。

若要新增 Data Wrangler 的讀取許可，請執行以下操作。

1. 導覽至 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker/)。

1. 選擇**網域**。

1. 選擇您用來存取 Data Wrangler 的網域。

1. 選擇您的**使用者設定檔**。

1. 在**詳細資訊**下，尋找**執行角色**。其 ARN 的格式如下：`arn:aws:iam::111122223333:role/example-role`。記下 SageMaker AI 執行角色。在 ARN 中，這就是 `role/`後的一切。

1. 導覽至 [IAM 主控台](https://console.aws.amazon.com/iam)。

1. 在**搜尋 IAM** 搜尋列中，指定 SageMaker AI 執行角色的名稱。

1. 選擇角色。

1. 選擇**新增許可**。

1. 選擇**建立內嵌政策**。

1. 請選擇 JSON 索引標籤。

1. 在編輯器中指定下列政策。

------
#### [ JSON ]

****  

   ```
   {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue"
            ],
            "Resource": "arn:aws:secretsmanager:*:*:secret:*",
            "Condition": {
                "ForAnyValue:StringLike": {
                    "aws:ResourceTag/sagemaker:partner": "*"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:UpdateSecret"
            ],
            "Resource": "arn:aws:secretsmanager:*:*:secret:AmazonSageMaker-*"
        }
    ]
   }
   ```

------

1. 選擇**檢閱政策**。

1. 針對**名稱**，請指定一個名稱。

1. 選擇**建立政策**。

在授予 Data Wrangler 讀取秘密的許可之後，您必須將使用 Secrets Manager 秘密的生命週期組態新增至 Amazon SageMaker Studio Classic 使用者設定檔。

若要建立生命週期組態並將其新增到 Studio Classic 設定檔，請使用以下程序。

若要建立生命週期組態並將其新增到 Studio Classic 設定檔，請執行以下動作。

1. 導覽至 [Amazon SageMaker AI 主控台](console.aws.amazon.com/sagemaker)。

1. 選擇**網域**。

1. 選擇您用來存取 Data Wrangler 的網域。

1. 選擇您的**使用者設定檔**。

1. 如果您看到下列應用程式，請將其刪除：
   + KernelGateway
   + JupyterKernel
**注意**  
刪除應用程式會更新 Studio Classic。更新可能需要一段時間才能發生。

1. 等待更新發生時，請選擇**生命週期組態**。

1. 確保您所在的頁面上顯示 **Studio Classic 生命週期組態**。

1. 選擇**建立組態**。

1. 確保已選擇 **Jupyter 伺服器應用程式**。

1. 選擇**下一步**。

1. 對於**名稱**，請指定組態的名稱。

1. 對於**指令碼**，請指定下列指令碼：

   ```
   #!/bin/bash
   set -eux
   
   cat > ~/.sfgenie_identity_provider_oauth_config <<EOL
   {
       "secret_arn": "secrets-arn-containing-salesforce-credentials"
   }
   EOL
   ```

1. 選擇**提交**。

1. 在左側導覽上選擇**網域**。

1. 選擇您的網域。

1. 選擇**環境**。

1. 在**個人 Studio Classic 應用程式的生命週期組態**下，選擇**連接**。

1. 選取**現有組態**。

1. 在 **Studio Classic 生命週期組態**下，選取您已建立的生命週期組態。

1. 選擇**連接至網域**。

1. 選取您所連接的生命週期組態旁的核取方塊。

1. 選取**設定為預設值**。

設定生命週期組態時，可能會遇到問題。如需有關對其偵錯詳細資訊，請參閱[在 Amazon SageMaker Studio Classic 中偵錯生命週期組態](studio-lcc-debug.md)。

### 資料科學家指南
<a name="data-wrangler-salesforce-data-cloud-ds"></a>

使用下列步驟連接 Salesforce 資料雲端，並在 Data Wrangler 中存取您的資料。

**重要**  
您的管理員必須使用前面區段中的資訊來設定 Salesforce 資料雲端。如果您遇到問題，請聯絡他們以取得疑難排解協助。

若要開啟 Studio Classic 並檢查其版本，請參閱以下程序。

1. 透過 Amazon SageMaker Studio Classic，使用 [先決條件](data-wrangler-getting-started.md#data-wrangler-getting-started-prerequisite) 中的步驟存取 Data Wrangler。

1. 在您要用來啟動 Studio Classic 的使用者旁邊，請選取**啟動應用程式**。

1. 選擇 **Studio**。

**使用來自 Salesforce 資料雲端的資料在 Data Wrangler 中建立資料集**

1. 登入 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)。

1. 選擇 **Studio**。

1. 選擇**啟動應用程式**。

1. 從下拉式清單中選取 **Studio**。

1. 選擇首頁圖示。

1. 選擇**資料**。

1. 選擇** Data Wrangler**。

1. 選擇**匯入資料**。

1. 在**可用性**下，選擇 **Salesforce 資料雲端**。

1. 針對**連線名稱**，指定連線至 Salesforce 資料雲端的名稱。

1. 針對**組織 URL**，請在您的 Salesforce 帳戶中指定組織 URL。您可以從管理員那裡獲取 URL。

1. 選擇**連線**。

1. 指定您的憑證以登入 Salesforce。

您可以在連線到資料集後，使用 Salesforce 資料雲端中的資料開始建立資料集。

選取資料表之後，您可以撰寫查詢並加以執行。查詢的輸出會顯示在**查詢結果**下。

在您確定查詢的輸出之後，接著就可以將查詢的輸出匯入 Data Wrangler 流程，以執行資料轉換。

建立資料集之後，導覽至**資料流量**畫面以開始轉換資料。

## 從 Snowflake 匯入資料
<a name="data-wrangler-snowflake"></a>

您可以在 SageMaker Data Wrangler 使用 Snowflake 作為資料來源，以準備 Snowflake 中的資料提供機器學習使用。

使用 Snowflake 作為 Data Wrangler 中的資料來源，您可以快速連線到 Snowflake，而無需撰寫任何一行程式碼。您可以將 Snowflake 中的資料與 Data Wrangler 中任何其他資料來源的資料聯結。

連線之後，您可以互動查詢 Snowflake 中儲存的資料、以超過300 個預先設定的資料轉換資料、使用一組健全的預先設定視覺化範本來了解資料並識別潛在錯誤和極端值、快速識別資料準備工作流程中的不一致情況，以及在模型部署到生產環境之前診斷問題。最後，您可以將資料準備工作流程匯出到 Amazon S3，以便與其他 SageMaker AI 功能搭配使用，例如 Amazon SageMaker Autopilot、Amazon SageMaker Feature Store 和 Amazon SageMaker Pipelines。

您可以使用您建立的 AWS Key Management Service 金鑰來加密查詢的輸出。如需 的詳細資訊 AWS KMS，請參閱 [AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html)。

**Topics**
+ [管理員指南](#data-wrangler-snowflake-admin)
+ [資料科學家指南](#data-wrangler-snowflake-ds)

### 管理員指南
<a name="data-wrangler-snowflake-admin"></a>

**重要**  
若要進一步了解精細存取控制和最佳實務，請參閱[安全存取控制](https://docs.snowflake.com/en/user-guide/security-access-control.html)。

本區段適用於正在 SageMaker Data Wrangler 中設定 Snowflake 存取權的 Snowflake 管理員。

**重要**  
由您負責管理與監控 Snowflake 內的存取控制。Data Wrangler 不會新增與 Snowflake 相關的存取控制層。  
存取控制包括下列項目：  
使用者存取的資料
(選用) 提供 Snowflake 撰寫查詢結果給 Amazon S3 儲存貯體能力的儲存整合
使用者可以執行的查詢

#### (選用) 設定 Snowflake 資料匯入許可權
<a name="data-wrangler-snowflake-admin-config"></a>

根據預設， Data Wrangler 會在 Snowflake 中查詢資料，而不會在 Amazon S3 位置建立資料副本。如果您要設定 Snowflake 與儲存整合，請使用下列資訊。您的使用者可以使用儲存整合將查詢結果儲存在 Amazon S3 的位置。

您的使用者可能擁有不同層級的敏感資料存取權限。為了達到資料安全最佳化，請為每位使用者提供自己的儲存整合。每個儲存整合都應該有自己的資料管理政策。

這個功能目前無法在選擇加入區域使用。

Snowflake 需要下列 S3 儲存貯體和目錄的許可權才能存取目錄中的檔案：
+ `s3:GetObject`
+ `s3:GetObjectVersion`
+ `s3:ListBucket`
+ `s3:ListObjects`
+ `s3:GetBucketLocation`

**建立 IAM 政策**

您必須建立 IAM 政策來設定 Snowflake 的存取許可，才能從 Amazon S3 儲存貯體載入和卸載資料。

以下是您用來建立政策的 JSON 政策文件：

```
# Example policy for S3 write access
# This needs to be updated
{
"Version": "2012-10-17",		 	 	 
"Statement": [
  {
    "Effect": "Allow",
    "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion"
    ],
    "Resource": "arn:aws:s3:::bucket/prefix/*"
  },
  {
    "Effect": "Allow",
    "Action": [
        "s3:ListBucket"
    ],
    "Resource": "arn:aws:s3:::bucket/",
    "Condition": {
        "StringLike": {
            "s3:prefix": ["prefix/*"]
        }
    }
  }
 ]
}
```

如需使用政策文件建立政策的相關資訊和程序，請參閱[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

如需提供 IAM 許可與 Snowflake 搭配使用概覽的說明文件，請參閱下列資源：
+ [什麼是 IAM？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)
+ [在 中建立 IAM 角色 AWS](https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html#step-2-create-the-iam-role-in-aws)
+ [在 Snowflake 中建立雲端儲存整合](https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html#step-3-create-a-cloud-storage-integration-in-snowflake)
+ [擷取 Snowflake AWS 帳戶的 IAM 使用者](https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html#step-4-retrieve-the-aws-iam-user-for-your-snowflake-account)
+ [授與 IAM 使用者許可權以存取儲存貯體](https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html#step-5-grant-the-iam-user-permissions-to-access-bucket-objects)。

若要將資料科學家的 Snowflake 角色使用許可權授與儲存整合，您必須執行 `GRANT USAGE ON INTEGRATION integration_name TO snowflake_role;`。
+ `integration_name` 是儲存整合的名稱。
+ `snowflake_role` 是指定給資料科學家使用者的預設 [Snowflake 角色](https://docs.snowflake.com/en/user-guide/security-access-control-overview.html#roles)名稱。

#### 設定 Snowflake OAuth 存取權
<a name="data-wrangler-snowflake-oauth-setup"></a>

您可以讓使用者使用身分提供者存取 Snowflake，而不是讓他們直接將其憑證輸入 Data Wrangler。以下是 Data Wrangler 支援的身分提供者的 Snowflake 文件連結。
+ [Azure AD](https://docs.snowflake.com/en/user-guide/oauth-azure.html)
+ [Okta](https://docs.snowflake.com/en/user-guide/oauth-okta.html)
+ [Ping Federate](https://docs.snowflake.com/en/user-guide/oauth-pingfed.html)

使用前面連結中的說明文件來設定身分提供者的存取權限。本區段中的資訊和程序可協助您了解如何正確使用文件來存取 Data Wraangler 內的 Snowflake。

您的身分提供者需要將 Data Wrangler 識別為應用程式。使用下列程序，將 Data Wrangler 註冊為身分提供者內的應用程式：

1. 選取啟動將 Data Wrangler 註冊為應用程式程序的組態。

1. 提供身分提供者內的使用者存取 Data Wrangler。

1. 將用戶端憑證儲存為 AWS Secrets Manager 秘密，以開啟 OAuth 用戶端身分驗證。

1. 使用下列格式指定重新導向 URL：https://*domain-ID*.studio.*AWS 區域*.sagemaker.aws/jupyter/default/lab
**重要**  
您要指定 Amazon SageMaker AI 網域 ID AWS 區域 ，以及用來執行 Data Wrangler 的網域 ID。
**重要**  
您必須為每個 Amazon SageMaker AI 網域以及執行 Data Wrangler AWS 區域 的位置註冊 URL。來自網域且沒有為其設定重新導向 URLs AWS 區域 的使用者將無法向身分提供者進行身分驗證，以存取 Snowflake 連線。

1. 請確定 Data Wrangler 應用程式允許授權碼和重新整理權杖授予類型。

在您的身分提供者中，您必須設定一個伺服器將 OAuth 權杖傳送給在使用者層級的 Data Wrangler。伺服器以 Snowflake 做為對象傳送權杖。

Snowflake 使用角色的概念，這些角色是用於 IAM 角色的不同角色 AWS。您必須將身分提供者設定為使用任何角色，才能使用與 Snowflake 帳戶相關聯的預設角色。例如，如果使用者在其 Snowflake 設定檔中具有 `systems administrator`預設角色，則從 Data Wrangler 到 Snowflake 的連線會使用 `systems administrator`做為該角色。

使用下列程序來設定伺服器。

若要設定伺服器，請執行以下操作。除了最後一個之外，您的所有步驟都會在 Snowflake 中處理。

1. 開始設定伺服器或 API。

1. 設定授權伺服器以使用授權碼並重新整理權杖授予類型。

1. 指定存取權杖的存留期。

1. 設定重新整理權杖閒置逾時。閒置逾時是若未使用重新整理權杖的到期時間。
**注意**  
如果您要在 Data Wrangler 中排程任務，建議您將閒置逾時時間設定為大於處理任務的頻率。否則，某些處理任務可能會失敗，因為重新整理權杖在執行之前已過期。當重新整理權杖到期時，使用者必須透過 Data Wrangler 存取他們對 Snowflake 建立的連線來重新進行身分驗證。

1. 指定 `session:role-any`做為新範圍。
**注意**  
對於 Azure AD，請複製該範圍的唯一識別碼。Data Wrangler 要求您向其提供識別符。

1. 
**重要**  
在 Snowflake 的 外部 OAuth 安全整合 中啟用 `external_oauth_any_role_mode`。

**重要**  
Data Wrangler 不支援輪換重新整理權杖。使用輪換重新整理權杖可能會導致存取失敗或使用者需要經常登入。

**重要**  
如果重新整理權杖過期，您的使用者必須透過 Data Wrangler 存取他們對 Snowflake 建立的連線進行重覆身分驗證。

設定 OAuth 提供者之後，您可以向 Data Wrangler 提供連線至提供者所需的資訊。您可以使用來自身分提供者的文件來取得下列欄位的值：
+ 權杖 URL – 身分提供者傳送給 Data Wrangler 的權杖 URL。
+ 授權 URL – 身分提供者授權伺服器的 URL。
+ 用戶端 ID – 身分提供者的 ID。
+ 用戶端密碼 – 只有授權伺服器或 API 可辨識的密碼。
+ (僅限 Azure AD) 您已複製的 OAuth 範圍憑證。

您可以將欄位和值存放在 AWS Secrets Manager 秘密中，並將其新增至用於 Data Wrangler 的 Amazon SageMaker Studio Classic 生命週期組態。生命週期組態是 Shell 指令碼。使用它來讓 Data Wrangler 存取機密的 Amazon Resource Name (ARN)。如需建立秘密的詳細資訊，請參閱[將硬式編碼秘密移至 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) 。如需在 Studio Classic 中使用生命週期組態的相關資訊，請參閱[使用生命週期組態自訂 Amazon SageMaker Studio Classic](studio-lcc.md)。

**重要**  
在您建立 Secrets Manager 秘密之前，請確定您用於 Amazon SageMaker Studio Classic 的 SageMaker AI 執行角色具有在 Secrets Manager 中建立和更新秘密的許可。如需有關新增許可的詳細資訊，請參閱[範例：建立機密的許可](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_examples_create)。

對於 Okta 和 Ping Federate，以下為機密格式：

```
{
    "token_url":"https://identityprovider.com/oauth2/example-portion-of-URL-path/v2/token",
    "client_id":"example-client-id",
    "client_secret":"example-client-secret",
    "identity_provider":"OKTA"|"PING_FEDERATE",
    "authorization_url":"https://identityprovider.com/oauth2/example-portion-of-URL-path/v2/authorize"
}
```

對於 Azure AD，以下為機密格式：

```
{
    "token_url":"https://identityprovider.com/oauth2/example-portion-of-URL-path/v2/token",
    "client_id":"example-client-id",
    "client_secret":"example-client-secret",
    "identity_provider":"AZURE_AD",
    "authorization_url":"https://identityprovider.com/oauth2/example-portion-of-URL-path/v2/authorize",
    "datasource_oauth_scope":"api://appuri/session:role-any)"
}
```

您必須擁有使用您所建立的 Secrets Manager 機密的生命週期組態。您可以建立生命週期組態，也可以修改已建立的生命週期組態。組態必須使用下列指令碼。

```
#!/bin/bash

set -eux

## Script Body

cat > ~/.snowflake_identity_provider_oauth_config <<EOL
{
    "secret_arn": "example-secret-arn"
}
EOL
```

如需設定生命週期組態的資訊，請參閱[建立生命週期組態並將其與 Amazon SageMaker Studio Classic 建立關聯](studio-lcc-create.md)。當您進行設定程序時，請執行以下操作：
+ 將組態的應用程式類型設定為 `Jupyter Server`。
+ 將組態連接至具有您使用者的 Amazon SageMaker AI 網域。
+ 依預設執行組態。每次使用者登入 Studio Classic 時都必須執行組態。否則，當您的使用者使用 Data Wrangler 時，將無法使用儲存在組態中的憑證。
+ 生命週期組態會在使用者的主資料夾中建立 `snowflake_identity_provider_oauth_config`名稱的檔案。檔案包含 Secrets Manager 機密。每次初始化 Jupyter 伺服器執行個體時，請確定它位於使用者的主資料夾中。

#### Data Wrangler 與 Snowflake 之間的私有連線，透過 AWS PrivateLink
<a name="data-wrangler-security-snowflake-vpc"></a>

本節說明如何使用 在 Data Wrangler 和 Snowflake 之間 AWS PrivateLink 建立私有連線。下列區段會說明所有步驟。

##### 建立 VPC
<a name="data-wrangler-snowflake-snowflake-vpc-setup"></a>

如果您沒有設定 VPC，請依照[建立新的 VPC](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/gsg_create_vpc.html#create_vpc) 指示建立 VPC。

一旦您選擇了要用來建立私有連線的 VPC，請提供下列憑證給您的 Snowflake 管理員以啟用 AWS PrivateLink：
+ VPC ID
+ AWS 帳戶 ID
+ 您用來存取 Snowflake 的對應帳戶 URL

**重要**  
如 Snowflake 的文件所述，啟用 Snowflake 帳戶最多可能需要兩個工作天。

##### 設定 Snowflake AWS PrivateLink 整合
<a name="data-wrangler-snowflake-snowflake-vpc-privatelink-setup"></a>

 AWS PrivateLink 啟用 後，在 Snowflake 工作表中執行下列命令，以擷取您區域的 AWS PrivateLink 組態。登入您的 Snowflake 主控台，然後在**工作表**下輸入以下內容：`select SYSTEM$GET_PRIVATELINK_CONFIG();`

1. 從產生的 JSON 物件擷取下列項目的值：`privatelink-account-name`、`privatelink_ocsp-url`、`privatelink-account-url` 和 `privatelink_ocsp-url`。每個值的範例顯示在下列程式碼片段中。儲存這些值供之後使用。

   ```
   privatelink-account-name: xxxxxxxx.region.privatelink
   privatelink-vpce-id: com.amazonaws.vpce.region.vpce-svc-xxxxxxxxxxxxxxxxx
   privatelink-account-url: xxxxxxxx.region.privatelink.snowflakecomputing.com
   privatelink_ocsp-url: ocsp.xxxxxxxx.region.privatelink.snowflakecomputing.com
   ```

1. 切換到 AWS 主控台並導覽至 VPC 選單。

1. 從左側面板中，選擇**端點**連結以導覽至 **VPC 端點**設定。

   在那裡，選擇**建立端點**。

1. 選擇**依名稱尋找服務**的選項按鈕，如下列螢幕擷取畫面所示。  
![\[主控台中的建立端點區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-radio.png)

1. 在**服務名稱**欄位中，貼上您在上一個步驟中擷取的 `privatelink-vpce-id`值中，然後選擇**驗證**。

   如果連線成功，畫面上會出現一個綠色警示，指出**找到的服務名稱**，並且 **VPC** 和**子網路**選項會自動展開，如下列螢幕擷取畫面所示。視您目標區域而定，產生的畫面可能會顯示另一個 AWS 區域名稱。  
![\[主控台中的建立端點區段，其中顯示連線成功。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-service-name-found.png)

1. 從 **VPC** 下拉式清單中選取您傳送給 Snowflake 的相同 VPC ID。

1. 如果您尚未建立子網路，請執行下列有關建立子網路的指示集。

1. 從 **VPC** 下拉式清單中選取**子網路**。然後選取**建立子網路**，並依照提示在 VPC 中建立子集。確保您選擇了傳送 Snowflake 的 VPC ID。

1. 在**安全群組組態**下，選取**建立新的安全群組**，以在新索引標籤中開啟預設的**安全群組**畫面。在這個新的索引標籤中，選擇**建立安全群組**。

1. 提供新的安全群組的名稱 (如 `datawrangler-doc-snowflake-privatelink-connection`) 和描述。請務必選取您在上一步中使用過的 VPC ID。

1. 新增兩個規則以允許來自 VPC 內部的流量傳向此 VPC 端點。

   導覽到單獨索引標籤中**您的 VPC** 下的 VPC，然後為 VPC 檢索 CIDR 區塊。然後在**傳入規則**區段中，選擇**新增規則**。選取 `HTTPS` 類型，在表單中將**來源**保留為**自訂**，然後貼上從前面 `describe-vpcs` 呼叫擷取的值 (例如 `10.0.0.0/16`)。

1. 選擇**建立安全群組**。從新建立的安全群組 (例如 `sg-xxxxxxxxxxxxxxxxx`) 擷取**安全群組 ID**。

1. 在 **VPC 端點**組態畫面中，移除預設安全群組。在搜尋欄位中貼上安全群組 ID，然後選取核取方塊。  
![\[主控台中的安全群組區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-security-group.png)

1. 選取**建立端點**。

1. 如果端點建立成功，您會看到一個頁面，其中包含由 VPC ID 指定的 VPC 端點組態的連結。選取連結以完整檢視組態。  
![\[端點詳細資訊區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-success-endpoint.png)

   擷取 DNS 名稱清單中最上方的記錄。這可以與其他 DNS 名稱區分開來，因為它只包含區域名稱 (例如 `us-west-2`)，而且沒有可用區域字母表示法 (例如 `us-west-2a`)。儲存此資訊以供之後使用。

##### 為 VPC 中的 Snowflake 端點設定 DNS
<a name="data-wrangler-snowflake-vpc-privatelink-dns"></a>

本區段說明如何為 VPC 中的 Snowflake 端點設定 DNS。這可讓您的 VPC 解決對 Snowflake AWS PrivateLink 端點的要求。

1. 導覽至 AWS 主控台中的 [Route 53 選單](https://console.aws.amazon.com/route53)。

1. 選取**託管區域**選項 (如有需要，請展開左側功能表以尋找此選項)。

1. 選擇**建立託管區域**。

   1. 在**網域名稱**欄位中，參照前面步驟 `privatelink-account-url`中儲存的值。在此欄位中，您的 Snowflake 帳戶 ID 會從 DNS 名稱中移除，而且只會使用以區域識別符開頭的值。稍後也會為子網域建立**資源記錄集**，例如 `region.privatelink.snowflakecomputing.com`。

   1. 在**類型**區段中，選取**私有託管區域**的選項按鈕。您的區域代碼可能不是 `us-west-2`。參考 Snowflake 傳回給您的 DNS 名稱。  
![\[主控台中的建立託管區域頁面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-create-hosted-zone.png)

   1. 在**與託管區域建立關聯的 VPC** 區段中，選取 VPC 所在的區域以及上一步中使用的 VPC ID。  
![\[主控台中的要與託管區域區段建立關聯的 VPC 區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-vpc-hosted-zone.png)

   1. 選擇**建立託管區域**。

1. 接下來，建立兩個記錄，一個用於 `privatelink-account-url`，另一個則用於 `privatelink_ocsp-url`。
   + 在**託管區域**選單中，選擇**建立記錄集**。

     1. 在**記錄名稱**下，僅輸入您的 Snowflake 帳戶 ID (`privatelink-account-url` 中的前 8 個字元)。

     1. 在**記錄類型**下，選取 **CNAME**。

     1. 在**值**下，輸入您在*設定 Snowflake AWS PrivateLink 整合*區段最後一步中所擷取的區域 VPC 端點的 DNS 名稱。  
![\[主控台中的快速建立記錄區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-quick-create-record.png)

     1. 選擇**建立記錄**。

     1. 針對我們註記為 `privatelink-ocsp-url`的 OCSP 記錄重複上述步驟，從`ocsp`到記錄名稱的 8 個字元 Snowflake ID 開始 (例如 `ocsp.xxxxxxxx`)。  
![\[主控台中的快速建立記錄區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-quick-create-ocsp.png)

##### 為您的 VPC 設定 Route 53 解析程式傳入端點
<a name="data-wrangler-snowflake-vpc-privatelink-route53"></a>

本區段說明如何為 VPC 中的 Route 53 解析程式傳入端點設定 DNS。

1. 導覽至 AWS 主控台中的 [Route 53 選單](https://console.aws.amazon.com/route53)。
   + 在**安全**區段的左側面板中，選取**安全群組**選項。

1. 選擇**建立安全群組**。
   + 提供安全群組的名稱 (如 `datawranger-doc-route53-resolver-sg`) 和描述。
   + 選取您在上一步中使用過的 VPC ID。
   + 從 VPC CIDR 區塊內部建立允許透過 UDP 和 TCP 進行 DNS 的規則。  
![\[主控台中的傳入規則區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-inbound-rules.png)
   + 選擇**建立安全群組**。記下**安全群組 ID**，因為要新增規則以允許流量流向 VPC 端點安全群組。

1. 導覽至 AWS 主控台中的 [Route 53 選單](https://console.aws.amazon.com/route53)。
   + 在**解析程式**區段中，選取**傳入端點**選項。

1. 選擇**建立傳入端點**。
   + 提供端點名稱。
   + 從**區域內的 VPC** 下拉式清單選取您在前面所有步驟中用過的 VPC ID。
   + 在**此端點的安全群組**下拉式清單中，從本區段的步驟 2 選取安全群組 ID。  
![\[主控台中的傳入端點的一般設定區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-inbound-endpoint.png)
   + 在 **IP 地址**區段中，選取可用區域、選取一個子網路，然後將無線電選擇器保留為每個所選 IP 位址**所使用自動選擇的 IP 地址**。  
![\[主控台中的 IP 位址區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-ip-address-1.png)
   + 選擇**提交**。

1. 在**傳入端點**建立之後加以選取。

1. 建立傳入端點後，請記下解析程式的兩個 IP 地址。  
![\[主控台中的 IP 位址區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/snowflake-ip-addresses-2.png)

##### SageMaker AI VPC 端點
<a name="data-wrangler-snowflake-sagemaker-vpc-endpoints"></a>

 本節說明如何為下列項目建立 VPC 端點：Amazon SageMaker Studio Classic、SageMaker 筆記本、SageMaker API、SageMaker 執行時期和 Amazon SageMaker Feature Store 執行時期。

**建立套用至所有端點的安全群組。**

1. 導覽至 AWS 主控台中的 [EC2 選單](https://console.aws.amazon.com/ec2)。

1. 在**網路與安全**區段中，選取**安全群組**選項。

1. 選擇**建立安全群組**。

1. 提供安全群組的名稱和描述 (如 `datawrangler-doc-sagemaker-vpce-sg`)。稍後會新增規則，以允許流量透過 HTTPS 從 SageMaker AI 流向此群組。

**建立端點**

1. 導覽至 AWS 主控台中的 [VPC 選單](https://console.aws.amazon.com/vpc)。

1. 選取**端點**選項。

1. 選擇**建立端點**。

1. 在**搜尋**欄位中輸入服務的名稱來搜尋服務。

1. 從 **VPC** 下拉式清單中，選取 Snowflake AWS PrivateLink 連線所在的 VPC。

1. 在**子網路**區段中，選取可存取 Snowflake PrivateLink 連線的子網路。

1. 保留已選取的**啟用 DNS 名稱**核取方塊。

1. 在**安全群組**區段中，選取您在前一區段中建立的安全群組。

1. 選擇**建立端點**。

**設定 Studio Classic 和 Data Wrangler**

本節說明如何設定 Studio Classic 和 Data Wrangler。

1. 設定安全群組。

   1. 導覽至 AWS 主控台中的 Amazon EC2 選單。

   1. 在**網路與安全**區段中，選取**安全群組**選項。

   1. 選擇**建立安全群組**。

   1. 提供安全群組的名稱和描述 (如 `datawrangler-doc-sagemaker-studio`)。

   1. 建立下列傳入規則。
      + 您在*設定 Snowflake PrivateLink 整合*步驟中建立的 Snowflake PrivateLink 連線所佈建的安全群組的 HTTPS 連線。
      + 您在*設定 Snowflake PrivateLink 整合步驟*中建立的 Snowflake PrivateLink 連線所佈建的安全群組的 HTTP 連線。
      + 您在*為 VPC 設定 Route 53 解析程式傳入端點*的步驟 2 中建立的 DNS (連接埠 53) 的 UDP 和 TCP Route 53 解析程式傳入端點安全群組。

   1. 選擇右下角的**建立安全群組**按鈕。

1. 設定 Studio Classic。
   + 導覽至 AWS 主控台中的 SageMaker AI 選單。
   + 從左側主控台中，選取 **SageMaker AI Studio Classic** 選項。
   + 如果您沒有設定任何網域組態，就會出現**開始使用**功能表。
   + 從**開始使用**功能表中選取 **標準設定**選項。
   + 在**身分驗證方法**下，選取 **AWS Identity and Access Management (IAM)**。
   + 從**許可權**功能表中，您可以建立新角色或使用預先存在的角色，視您的使用案例而定。
     + 如果您選擇**建立新角色**，系統會顯示選項，以提供 S3 儲存貯體名稱以及為您產生的政策。
     + 如果您已經擁有一個角色，該角色具備您需要存取的 S3 儲存貯體的許可權，則可從下拉式清單選取該角色。此角色應已連接到 `AmazonSageMakerFullAccess`政策。
   + 選取**網路和儲存**下拉式清單，以設定 SageMaker AI 使用的 VPC、安全性和子網路。
     + 在 **VPC** 下，選取您的 Snowflake PrivateLin 連線存在的 VPC。
     + 在**子網路**下，選取可存取 Snowflake PrivateLink 連線的子網路。
     + 在 **Studio Classic 的網路存取**下，選取**僅限 VPC**。
     + 在**安全群組**下，選取您在步驟 1 中建立的安全群組。
   + 選擇**提交**。

1. 編輯 SageMaker AI 安全群組。
   + 建立下列傳入規則：
     + 連接埠 2049 指向 SageMaker AI 在步驟 2 中自動建立的傳入和傳出 NFS 安全群組 (安全群組名稱包含 Studio Classic 網域 ID)。
     + 存取自身的所有 TCP 連接埠 (僅適用於 VPC 的 SageMaker AI 需要)。

1. 編輯 VPC 端點安全群組：
   + 導覽至 AWS 主控台中的 Amazon EC2 選單。
   + 尋找您在前面步驟中建立的安全群組。
   + 新增傳入規則，允許來自步驟 1 中建立的安全群組的 HTTPS 流量。

1. 建立使用者設定檔。
   + 從 **SageMaker Studio Classic 控制面板**中，選擇**新增使用者**。
   + 提供使用者名稱。
   + 對於**執行角色**，選擇建立新角色或使用預先存在的角色。
     + 如果您選擇**建立新角色**，系統會顯示選項，以提供 Amazon S3 儲存貯體名稱以及為您產生的政策。
     + 如果您已經擁有一個角色，該角色具備您需要存取的 Amazon S3 儲存貯體的許可權，則可從下拉式清單選取該角色。此角色應已連接到 `AmazonSageMakerFullAccess`政策。
   + 選擇**提交**。

1. 建立資料流量 (請遵循上一區段所述的資料科學家指南)。
   + 新增 Snowflake 連線時，請在 **Snowflake 帳戶名稱 (字母數字)** 欄位中輸入 `privatelink-account-name`(來自*設定 Snowflake PrivateLink 整合*步驟) 的值，而不是一般的 Snowflake 帳戶名稱。其他一切都保持不變。

#### 提供資訊給資料科學家
<a name="data-wrangler-snowflake-admin-ds-info"></a>

為資料科學家提供從 Amazon SageMaker AI Data Wrangler 存取 Snowflake 所需的資訊。

**重要**  
您的使用者需要執行 Amazon SageMaker Studio Classic 1.3.0 版或更新版本。如需檢查 Studio Classic 版本和更新它的相關資訊，請參閱 [使用 Amazon SageMaker Data Wrangler 準備機器學習資料](data-wrangler.md)。

1. 若要允許您的資料科學家從 SageMaker Data Wrangler 存取 Snowflake ，請提供下列其中一項：
   + 對於基本身分驗證，提供 Snowflake 帳戶名稱、使用者名稱和密碼。
   + 若是 OAuth，則提供身分提供者中的使用者名稱和密碼。
   + 若是 ARN，提供 Secrets Manager 機密 Amazon Resource Name (ARN)。
   + 使用 [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 和機密的 ARN 建立的機密。如果您選擇此選項，請使用下列程序來建立 Snowflake 的機密。
**重要**  
如果您的資料科學家使用** Snowflake 憑證 (使用者名稱和密碼)** 選項連線到 Snowflake，您可以使用 [Secret Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 將憑證儲存在機密中。Secrets Manager 會輪換秘密，當作最佳實務安全計劃的一部分。在 Secrets Manager 中建立的秘密只能透過設定 Studio Classic 使用者設定檔時設定的 Studio Classic 角色存取。這需要您將此許可 `secretsmanager:PutResourcePolicy` 新增到連接到您 Studio Classic 角色的政策。  
強烈建議您將角色政策的範圍限定為不同的 Studio Classic 使用者群組使用不同的角色。您可以為 Secrets Manager 新增其他資源型的許可權。請參閱[管理機密政策](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_secret-policy.html)以了解您可以使用的條件索引鍵。  
如需有關建立機密的資訊，請參閱[建立機密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)。我們會向您收取您建立機密的費用。

1. (選用) 提供資料科學家您使用下列程序[在 Snowflake 中建立雲端儲存整合](                                      https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html#step-3-create-a-cloud-storage-integration-in-snowflake)所建立的儲存整合名稱。這是新整合的名稱，並在您執行的 `CREATE INTEGRATION`SQL 命令中稱為 `integration_name`，它會顯示在下列程式碼片段中：

   ```
     CREATE STORAGE INTEGRATION integration_name
     TYPE = EXTERNAL_STAGE
     STORAGE_PROVIDER = S3
     ENABLED = TRUE
     STORAGE_AWS_ROLE_ARN = 'iam_role'
     [ STORAGE_AWS_OBJECT_ACL = 'bucket-owner-full-control' ]
     STORAGE_ALLOWED_LOCATIONS = ('s3://bucket/path/', 's3://bucket/path/')
     [ STORAGE_BLOCKED_LOCATIONS = ('s3://bucket/path/', 's3://bucket/path/') ]
   ```

### 資料科學家指南
<a name="data-wrangler-snowflake-ds"></a>

使用下列步驟連接 Snowflake，並在 Data Wrangler 中存取您的資料。

**重要**  
您的管理員必須使用前面區段中的資訊來設定 Snowflake。如果您遇到問題，請聯絡他們以取得疑難排解協助。

您可透過以下任一種方式來連線 Snowflake。
+ 在 Data Wrangler 中指定您的 Snowflake 憑證 (帳戶名稱、使用者名稱和密碼)。
+ 提供包含憑證機密的 Amazon Resource Name (ARN)。
+ 使用連線至 Snowflake 的存取委派 (OAuth) 提供者的開放標準。您的管理員可以授與您存取下列其中一個 OAuth 提供者：
  + [Azure AD](https://docs.snowflake.com/en/user-guide/oauth-azure.html)
  + [Okta](https://docs.snowflake.com/en/user-guide/oauth-okta.html)
  + [Ping Federate](https://docs.snowflake.com/en/user-guide/oauth-pingfed.html)

請洽詢您的系統管理員，了解連線至 Snowflake 所需的方法。

以下各區段包含如何使用上述方法連線到 Snowflake 的資訊。

------
#### [ Specifying your Snowflake Credentials ]

**使用您的憑證將資料集從 Snowflake 匯入 Data Wrangler**

1. 登入 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)。

1. 選擇 **Studio**。

1. 選擇**啟動應用程式**。

1. 從下拉式清單中選取 **Studio**。

1. 選擇首頁圖示。

1. 選擇**資料**。

1. 選擇** Data Wrangler**。

1. 選擇**匯入資料**。

1. 在**可用**下選擇 **Snowflake**。

1. 在**連線名稱**中，指定唯一識別連線的名稱。

1. 在**驗證方法**中，選擇**基本使用者名稱-密碼**。

1. 在 **Snowflake 帳戶名稱 (字母數字)** 中，請指定 Snowflake 帳戶的全名。

1. 在**使用者名稱**中，指定您用來存取 Snowflake 帳戶的使用者名稱。

1. 在**密碼**中，指定與使用者名稱相關聯的密碼。

1. (選用) 針對**進階設定**，請指定下列項目：
   + **角色** – Snowflake 中的角色。有些角色可以存取不同的資料集。如果您未指定角色，Data Wrangler 會使用 Snowflake 帳戶中的預設角色。
   + **儲存整合** – 當您指定並執行查詢時，Data Wrangler 會在記憶體中建立查詢結果的暫存副本。若要儲存查詢結果的永久副本，請指定用於儲存整合的 Amazon S3 位置。您的管理員會提供 S3 URI 給您。
   + **KMS 金鑰 ID** – 您已建立的 KMS 金鑰。您可以指定其 ARN 來加密 Snowflake 查詢的輸出。否則，Data Wrangler 會使用預設加密。

1. 選擇**連線**。

------
#### [ Providing an Amazon Resource Name (ARN) ]

**若要使用 ARN 將資料集從 Snowflake 匯入 Data Wrangler**

1. 登入 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)。

1. 選擇 **Studio**。

1. 選擇**啟動應用程式**。

1. 從下拉式清單中選取 **Studio**。

1. 選擇首頁圖示。

1. 選擇**資料**。

1. 選擇** Data Wrangler**。

1. 選擇**匯入資料**。

1. 在**可用**下選擇 **Snowflake**。

1. 在**連線名稱**中，指定唯一識別連線的名稱。

1. 對於**驗證方法**，請選擇 **ARN**。

1. **Secrets Manager ARN** – 用於存放用於連線至 Snowflake 之登入資料的 AWS Secrets Manager 秘密 ARN。

1. (選用) 針對**進階設定**，請指定下列項目：
   + **角色** – Snowflake 中的角色。有些角色可以存取不同的資料集。如果您未指定角色，Data Wrangler 會使用 Snowflake 帳戶中的預設角色。
   + **儲存整合** – 當您指定並執行查詢時，Data Wrangler 會在記憶體中建立查詢結果的暫存副本。若要儲存查詢結果的永久副本，請指定用於儲存整合的 Amazon S3 位置。您的管理員會提供 S3 URI 給您。
   + **KMS 金鑰 ID** – 您已建立的 KMS 金鑰。您可以指定其 ARN 來加密 Snowflake 查詢的輸出。否則，Data Wrangler 會使用預設加密。

1. 選擇**連線**。

------
#### [ Using an OAuth Connection ]

**重要**  
您的管理員會自訂您的 Studio Classic 環境，以提供您用來使用 OAuth 連線的功能。您可能需要重新啟動 Jupyter 伺服器應用程式，才能使用此功能。  
使用下列程序來更新 Jupyter 伺服器應用程式。  
在 Studio Classic 內，選擇**檔案**
選擇**關機**。
選擇**關閉伺服器**。
關閉您用來存取 Studio Classic 的索引標籤或視窗。
從 Amazon SageMaker AI 主控台開啟 Studio Classic。

**使用您的憑證將資料集從 Snowflake 匯入 Data Wrangler**

1. 登入 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)。

1. 選擇 **Studio**。

1. 選擇**啟動應用程式**。

1. 從下拉式清單中選取 **Studio**。

1. 選擇首頁圖示。

1. 選擇**資料**。

1. 選擇** Data Wrangler**。

1. 選擇**匯入資料**。

1. 在**可用**下選擇 **Snowflake**。

1. 在**連線名稱**中，指定唯一識別連線的名稱。

1. 對於**驗證方法**，請選擇 **OAuth**。

1. (選用) 針對**進階設定**，請指定下列項目：
   + **角色** – Snowflake 中的角色。有些角色可以存取不同的資料集。如果您未指定角色，Data Wrangler 會使用 Snowflake 帳戶中的預設角色。
   + **儲存整合** – 當您指定並執行查詢時，Data Wrangler 會在記憶體中建立查詢結果的暫存副本。若要儲存查詢結果的永久副本，請指定用於儲存整合的 Amazon S3 位置。您的管理員會提供 S3 URI 給您。
   + **KMS 金鑰 ID** – 您已建立的 KMS 金鑰。您可以指定其 ARN 來加密 Snowflake 查詢的輸出。否則，Data Wrangler 會使用預設加密。

1. 選擇**連線**。

------

您可以在連線至 Snowflake 之後開始匯入資料的程序。

在 Data Wrangler 中，您可以檢視資料倉儲、資料庫和結構描述，以及可用來預覽資料表的眼睛圖示。選取**預覽資料表**圖示後，即會產生該資料表的結構描述預覽。您必須先選取倉庫，才能預覽資料表。

**重要**  
如果您要匯入的資料集包含 `TIMESTAMP_TZ`或 `TIMESTAMP_LTZ`的資料欄類型，請新增 `::string`至查詢的資料欄名稱。如需詳細資訊，請參閱[說明：卸載 TIMESTAMP\$1TZ 和 TIMESTAMP\$1LTZ 資料到 Parquet 檔案](https://community.snowflake.com/s/article/How-To-Unload-Timestamp-data-in-a-Parquet-file)。

選取資料倉儲、資料庫和結構描述之後，您現在可以撰寫查詢並加以執行。查詢的輸出會顯示在**查詢結果**下。

在您確定查詢的輸出之後，接著就可以將查詢的輸出匯入 Data Wrangler 流程，以執行資料轉換。

匯入資料之後，導覽至 Data Wrangler 流程並開始向其新增轉換。如需可用的轉換清單，請參閱[轉換資料](data-wrangler-transform.md)。

## 從軟體即服務 (SaaS) 平台匯入資料
<a name="data-wrangler-import-saas"></a>

您可以使用 Data Wrangler 從 40 多個軟體即服務 (SaaS) 平台匯入資料。若要從 SaaS 平台匯入資料，您或您的管理員必須使用 Amazon AppFlow 將資料從平台傳輸到 Amazon S3 或 Amazon Redshift。如需 Amazon AppFlow 的詳細資訊，請參閱[什麼是 Amazon AppFlow？](https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html) 如果您不需要使用 Amazon Redshift，我們建議您將資料傳輸到 Amazon S3 以進行更簡單的程序。

Data Wrangler 支援來自以下 SaaS 平台的傳輸資料：
+ [Amplitude](https://docs.aws.amazon.com/appflow/latest/userguide/amplitude.html)
+ [Asana](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-asana.html)
+ [Braintree](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-braintree.html)
+ [CircleCI](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-circleci.html)
+ [DocuSign Monitor](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-docusign-monitor.html)
+ [Delighted](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-delighted.html)
+ [Domo](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-domo.html)
+ [Datadog](https://docs.aws.amazon.com/appflow/latest/userguide/datadog.html)
+ [Dynatrace](https://docs.aws.amazon.com/appflow/latest/userguide/dynatrace.html)
+ [Facebook 廣告](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-facebook-ads.html)
+ [Facebook 粉絲專頁洞察](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-facebook-page-insights.html)
+ [Google Ads](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-google-ads.html)
+ [Google Analytics 4](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-google-analytics-4.html)
+ [Google 行事曆](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-google-calendar.html)
+ [Google 網站管理員](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-google-search-console.html)
+ [GitHub](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-github.html)
+ [GitLab](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-gitlab.html)
+ [Infor Nexus](https://docs.aws.amazon.com/appflow/latest/userguide/infor-nexus.html)
+ [Instagram 廣告](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-instagram-ads.html)
+ [Intercom](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-intercom.html)
+ [JDBC (Sync)](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-jdbc.html)
+ [Jira Cloud](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-jira-cloud.html)
+ [LinkedIn 廣告](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-linkedin-ads.html)
+ [Mailchimp](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-mailchimp.html)
+ [Marketo](https://docs.aws.amazon.com/appflow/latest/userguide/marketo.html)
+ [Microsoft Dynamics 365](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-microsoft-dynamics-365.html)
+ [Microsoft Teams](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-microsoft-teams.html)
+ [Mixpanel](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-mixpanel.html)
+ [Okta](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-okta.html)
+ [Oracle HCM](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-oracle-hcm.html)
+ [Paypal Checkout](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-paypal.html)
+ [Pendo](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-pendo.html)
+ [Salesforce](https://docs.aws.amazon.com/appflow/latest/userguide/salesforce.html)
+ [Salesforce Marketing Cloud](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-salesforce-marketing-cloud.html)
+ [Salesforce Pardot](https://docs.aws.amazon.com/appflow/latest/userguide/pardot.html)
+ [SAP OData](https://docs.aws.amazon.com/appflow/latest/userguide/sapodata.html)
+ [SendGrid](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-sendgrid.html)
+ [ServiceNow](https://docs.aws.amazon.com/appflow/latest/userguide/servicenow.html)
+ [Singular](https://docs.aws.amazon.com/appflow/latest/userguide/singular.html)
+ [Slack](https://docs.aws.amazon.com/appflow/latest/userguide/slack.html)
+ [Smartsheet](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-smartsheet.html)
+ [Snapchat 廣告](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-snapchat-ads.html)
+ [Stripe](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-stripe.html)
+ [Trend Micro](https://docs.aws.amazon.com/appflow/latest/userguide/trend-micro.html)
+ [Typeform](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-typeform.html)
+ [Veeva](https://docs.aws.amazon.com/appflow/latest/userguide/veeva.html)
+ [WooCommerce](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-woocommerce.html)
+ [Zendesk](https://docs.aws.amazon.com/appflow/latest/userguide/slack.html)
+ [Zendesk Chat](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-zendesk-chat.html)
+ [Zendesk Sell](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-zendesk-sell.html)
+ [Zendesk Sunshine](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-zendesk-sunshine.html)
+ [Zoho CRM](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-zoho-crm.html)
+ [Zoom 會議](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-zoom-meetings.html)

上述清單包含有關設定資料來源的詳細資訊的連結。閱讀下列資訊後，您或您的管理員就可以參考前面的連結。

當您導覽至 Data Wrangler 流程的**匯入**索引標籤時，您會在下列各區段下看到資料來源：
+ **可用性**
+ **設定資料來源**

您可以連線到**可用性**下的資料來源，不需其他設定。您可以選擇資料來源並匯入您的資料。

**設定資料來源**下的資料來源需要您或您的管理員使用 Amazon AppFlow，將資料從 SaaS 平台傳輸到 Amazon S3 或 Amazon Redshift。如需執行傳輸的相關資訊，請參閱[使用 Amazon AppFlow 傳輸您的資料](#data-wrangler-import-saas-transfer)。

執行資料傳輸後，SaaS 平台會顯示為**可用性**下的資料來源。您可以選擇它，然後將已傳輸的資料匯入 Data Wrangler。您傳輸的資料會顯示為您可以查詢的資料表。

### 使用 Amazon AppFlow 傳輸您的資料
<a name="data-wrangler-import-saas-transfer"></a>

Amazon AppFlow 是一個平台，您可以使用它將資料從 SaaS 平台傳輸到 Amazon S3 或 Amazon Redshift，而無需編寫任何代碼。若要執行資料傳輸，請使用 AWS 管理主控台。

**重要**  
您必須確定已設定執行資料傳輸的許可權。如需詳細資訊，請參閱[Amazon AppFlow 許可](data-wrangler-security.md#data-wrangler-appflow-permissions)。

新增許可後，即可以傳輸資料。在 Amazon AppFlow 中，您可以建立用於傳輸資料的*流程*。流程是一系列的組態。您可以使用它來指定依排程執行的資料傳輸，或是將資料分割為單獨的檔案。設定流程後，您可以執行流程以傳輸資料。

如需建立流程的相關資訊，請參閱[在 Amazon AppFlow 中建立流程](https://docs.aws.amazon.com/appflow/latest/userguide/create-flow.html)。如需執行流程的相關資訊，請參閱[啟用 Amazon AppFlow 流程](https://docs.aws.amazon.com/appflow/latest/userguide/run-flow.html)。

資料傳輸完畢後，請使用下列程序存取 Data Wrangler 中的資料。
**重要**  
在嘗試存取資料之前，請確定您的 IAM 角色具有以下政策：  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "glue:SearchTables",
            "Resource": [
                "arn:aws:glue:*:*:table/*/*",
                "arn:aws:glue:*:*:database/*",
                "arn:aws:glue:*:*:catalog"
            ]
        }
    ]
}
```
您用來存取 Data Wrangler 的 IAM 角色根據預設為 `SageMakerExecutionRole`。如需新增政策的詳細資訊，請參閱[新增 IAM 身分許可 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)。

若要連線到資料來源，請執行以下操作。

1. 登入 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)。

1. 選擇 **Studio**。

1. 選擇**啟動應用程式**。

1. 從下拉式清單中選取 **Studio**。

1. 選擇首頁圖示。

1. 選擇**資料**。

1. 選擇** Data Wrangler**。

1. 選擇**匯入資料**。

1. 在**可用性**下，選擇資料來源。

1. 在**名稱** 欄位中，指定連線的名稱。

1. (選用) 選擇**進階組態**。

   1. 選擇**工作群組**。

   1. 如果您的工作群組尚未強制執行 Amazon S3 輸出位置，或者您不使用工作群組，請指定**查詢結果的 Amazon S3 位置**值。

   1. (選用) 對於**資料保留期**，請選取核取方塊以設定資料保留期間，並指定資料刪除前的儲存天數。

   1. (選用) 根據預設，Data Wrangler 會儲存連線。您可以選擇取消選取核取方塊，而不儲存連線。

1. 選擇**連線**。

1. 指定查詢。
**注意**  
若要協助您指定查詢，您可以在左側導覽面板中選擇一個資料表。Data Wrangler 顯示資料表名稱和資料表的預覽。選擇資料表名稱旁的圖示以複製名稱。您可以在查詢中使用資料表名稱。

1. 選擇**執行**。

1. 選擇**匯入查詢**。

1. 對於**資料集名稱**，請指定資料集名稱。

1. 選擇**新增**。

當您導覽至**匯入資料**畫面時，您可以看到已建立的連線。您可以透過連線匯入更多資料。

## 匯入資料儲存
<a name="data-wrangler-import-storage"></a>

**重要**  
 我們強烈建議您遵循[最佳安全實務](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)，來遵守保護 Amazon S3 儲存貯體的最佳實務。

當您從 Amazon Athena 或 Amazon Redshift 查詢資料時，查詢的資料集會自動儲存在 Amazon S3 中。資料存放在您使用 Studio Classic AWS 之區域的預設 SageMaker AI S3 儲存貯體中。

預設 S3 儲存貯體具有下列命名慣例：`sagemaker-region-account number`。例如，如果您的帳戶號碼是 111122223333，而您在 `us-east-1` 中使用 Studio Classic，則匯入的資料集會存放在 `sagemaker-us-east-1-`111122223333 中。

 Data Wrangler 流程取決於此 Amazon S3 資料集位置，因此在使用相依流程時，不應在 Amazon S3 中修改此資料集。如果您堅持修改此 S3 位置，並且想要繼續使用資料流量，則必須移除 .flow 檔案內 `trained_parameters`中的所有物件。若要這麼做，請從 Studio Classic 下載 .flow 檔案，並針對 `trained_parameters` 的每個執行個體刪除所有項目。完成後，`trained_parameters` 應該會是一個空的 JSON 物件：

```
"trained_parameters": {}
```

匯出並使用資料流量處理資料時，您匯出的 .flow 檔案會參考 Amazon S3 中的上述資料集。使用以下區段以進一步了解。

### Amazon Redshift 匯入儲存
<a name="data-wrangler-import-storage-redshift"></a>

Data Wrangler 會將查詢結果的資料集存放在預設 SageMaker AI S3 儲存貯體中的 Parquet 檔案中。

此文件儲存在以下字首 (目錄) 下：redshift/*uuid*/data/，其中 *uuid* 是為每個查詢建立的唯一識別碼。

例如，如果您的預設儲存貯體為 `sagemaker-us-east-1-111122223333`，則從 Amazon Redshift 查詢的單一資料集位於 s3://sagemaker-us-east-1-111122223333/redshift/*uuid*/data/。

### Amazon Athena 匯入儲存
<a name="data-wrangler-import-storage-athena"></a>

當您查詢 Athena 資料庫並匯入資料集時，Data Wrangler 會將該資料集以及該資料集的一個子集或*預覽檔案*儲存在 Amazon S3 中。

您透過選取**匯入資料集**匯入的資料集會以 Parquet 格式儲存在 Amazon S3 中。

當您在 Athena 匯入畫面上選取**執行**時，預覽檔案會以 CSV 格式撰寫，並最多包含查詢資料集的 100 列。

您查詢的資料集位於字首 (目錄)：athena/*uuid*/data/ 下，其中 *uuid* 是為每個查詢建立的唯一識別碼。

舉例來說，如果您的預設儲存貯體為 `sagemaker-us-east-1-111122223333`，則從 Athena 查詢的單一資料集就會位於 `s3://sagemaker-us-east-1-111122223333`/athena/*uuid*/data/*example\$1dataset.parquet*。

被儲存在 Data Wrangler 預覽資料框資料集的子集，會儲存在 athena/ 字首下。

# 建立和使用 Data Wrangler 流程
<a name="data-wrangler-data-flow"></a>

使用 Amazon SageMaker Data Wrangler 或*資料流量*，來建立和修改資料準備管道。資料流量會連接您建立的資料集、轉換、分析或*步驟*，並可用來定義管道。

## 執行個體
<a name="data-wrangler-data-flow-instances"></a>

當您在 Amazon SageMaker Studio Classic 中建立 Data Wrangler 流程時，Data Wrangler 會使用 Amazon EC2 執行個體在您的流程中執行分析和轉換。根據預設，Data Wrangler 使用 m5.4xlarge 執行個體。m5 執行個體是一般用途的執行個體，可在運算和記憶體之間取得平衡。您可以將 m5 執行個體用於各種運算工作負載。

Data Wrangler 也提供您使用 r5 執行個體的選項。r5 執行個體的設計目的是提供快速效能，以便處理記憶體中的大型資料集。

建議您選擇針對工作負載最佳化的執行個體。例如，r5.8xlarge 的價格可能比 m5.4xlarge 高，但是 r5.8xlarge 可能會針對您的工作負載更妥善地進行最佳化。有了較佳的執行個體最佳化，您可以在較短的時間內以更低的成本執行資料流量。

下表顯示您可以用來執行 Data Wrangler 流程的執行個體。


| 標準執行個體 | vCPU | 記憶體 | 
| --- | --- | --- | 
| ml.m5.4xlarge | 16 | 64 GiB | 
| ml.m5.8xlarge | 32 | 128 GiB | 
| ml.m5.16xlarge | 64 |  256 GiB  | 
| ml.m5.24xlarge | 96 | 384 GiB | 
| r5.4xlarge | 16 | 128 GiB | 
| r5.8xlarge | 32 | 256 GiB | 
| r5.24xlarge | 96 | 768 GiB | 

如需 r5 執行個體的詳細資訊，請參閱 [Amazon EC2 R5 執行個體](https://aws.amazon.com/ec2/instance-types/r5/)。如需 m5 執行個體的詳細資訊，請參閱 [Amazon EC2 M5 執行個體](https://aws.amazon.com/ec2/instance-types/m5/)。

每個 Data Wrangler 流程都有一個與其相關聯的 Amazon EC2 執行個體。您可能有多個與單一執行個體相關聯的流程。

對於每個流程檔案，您都可以順暢切換執行個體類型。如果您切換執行個體類型，您用來執行流程的執行個體會繼續運作。

若要切換流程的執行個體類型，請執行下列操作。

1. 選擇**執行中終端機和核心**圖示 (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/icons/running-terminals-kernels.png))。

1. 前往您正在使用的執行個體並加以選擇。

1. 選擇想要使用的執行個體類型。  
![\[範例顯示如何在 Data Wrangler 主控台的資料流程頁面中選擇執行個體。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-wrangler-instance-switching-list-instances.png)

1. 選擇**儲存**。

您必須支付所有運作中的執行個體費用。為避免產生額外費用，請手動關閉您未使用的執行個體。若要關閉正在執行的執行個體，請依照下列程序操作。

如要關閉執行中的執行個體。

1. 選擇執行個體圖示。下列影像顯示可選取**正在執行執行個體**圖示的位置。  
![\[\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/instance-switching-running-instances.png)

1. 在您要關閉的執行個體旁邊選擇**關閉**。

如果您關閉用於執行流程的執行個體，則暫時無法存取該流程。如果在嘗試開啟執行之前關閉的執行個體流程時出現錯誤，請等待 5 分鐘，然後再試著開啟一次。

當您將資料流量匯出到 Amazon Simple Storage Service 或 Amazon SageMaker Feature Store 等位置時，Data Wrangler 會執行 Amazon SageMaker 處理任務。您可以使用下列其中一個執行個體來執行處理任務。如需匯出您資料的詳細資訊，請參閱[Export (匯出)](data-wrangler-data-export.md)。


| 標準執行個體 | vCPU | 記憶體 | 
| --- | --- | --- | 
| ml.m5.4xlarge | 16 | 64 GiB | 
| ml.m5.12xlarge | 48 |  192 GiB  | 
| ml.m5.24xlarge | 96 | 384 GiB | 

如需使用可用的執行個體類型之每小時費用等資訊，請參閱 [SageMaker 定價](https://aws.amazon.com//sagemaker/pricing/)。

## 資料流量使用者介面
<a name="data-wrangler-data-flow-ui"></a>

匯入資料集時，原始資料集會顯示在資料流量中，並命名為**來源**。如果您在匯入資料時開啟了取樣，則此資料集的名稱為**來源-取樣**。Data Wrangler 會自動推論資料集中每個資料欄的類型，並建立名為**資料類型**的新資料框架。您可以選取此框架來更新推論的資料類型。上傳單一資料集後，您會看到類似於以下影像所示的結果：

![\[範例顯示 Data Wrangler 主控台中的來源 - 已取樣和資料類型。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/dataflow-after-import.png)


每次新增轉換步驟時，都將建立一個新的資料框架。將多個轉換步驟 (**聯結**或**串連**除外) 新增至相同的資料集時，這些步驟會堆疊。

**聯結**和**串連**會建立包含新聯結或串連資料集的獨立步驟。

下圖顯示兩個資料集之間聯結的資料流量，以及兩個步驟的堆疊。第一個堆疊 (**步驟 (2))** 將兩個轉換新增至**資料類型**資料集所推論的類型。*下游*堆疊 (或右側的堆疊) 會將轉換新增至由名為 **demo-join** 的聯結所產生的資料集。

![\[範例顯示 Data Wrangler 主控台資料流程頁面中的步驟。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-flow-steps.png)


資料流量右下角的灰色小方塊可提供流程中堆疊數目和步驟數目以及流程配置的概觀。灰色方塊內較淺色的方塊會指示使用者介面檢視中的步驟。您可以使用此方塊來查看位於使用者介面檢視之外的資料流量區段。使用調整至符合螢幕的大小圖示 (![\[Dotted square outline icon representing a placeholder or empty state.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/updates/fit-screen.png))，將所有步驟和資料集放入使用者介面檢視中。

左下方的導覽列包含一些圖示，您可以使用這些圖示放大 (![\[Plus symbol icon representing an addition or new item action.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/updates/zoom-in.png)) 和縮小 (![\[Horizontal line or divider, typically used to separate content sections.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/updates/zoom-out.png)) 資料流量，以及調整資料流量大小以符合螢幕的大小 (![\[Dotted square outline icon representing a placeholder or empty state.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/updates/fit-screen.png))。使用鎖定圖示 (![\[Trash can icon representing deletion or removal functionality.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/updates/lock-nodes.png)) 可鎖定或解除鎖定螢幕上每個步驟的位置。



## 為資料流量新增步驟
<a name="data-wrangler-data-flow-add-step"></a>

選取任何資料集旁邊的 **\$1** 或先前新增的步驟，然後選取下列其中一個選項：
+ **編輯資料類型**(僅適用於**資料類型**步驟)：如果您尚未在**資料類型**步驟中新增任何轉換，可以選取**編輯資料類型**，以更新匯入資料集時 Data Wrangler 推論而來的資料類型。
+ **新增轉換**：會新增轉換步驟。請參閱[轉換資料](data-wrangler-transform.md)，以進一步了解您可以新增的資料轉換。
+ **Add analysis** (新增分析)：會新增分析內容。您可以使用此選項，在資料流量中的任何點分析資料。當您將一或多個分析新增至步驟時，該步驟上會出現一個分析圖示 (![\[Bar chart icon representing data visualization or analytics functionality.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/updates/analysis-icon.png))。請參閱[分析與視覺化](data-wrangler-analyses.md)，以進一步了解您可以新增的分析內容。
+ **聯結**：聯結兩個資料集，並將產生的資料集新增至資料流量。如需詳細資訊，請參閱 [聯結資料集](data-wrangler-transform.md#data-wrangler-transform-join)。
+ **串連**：串連兩個資料集，並將產生的資料集新增至資料流量。如需詳細資訊，請參閱 [串連資料集](data-wrangler-transform.md#data-wrangler-transform-concatenate)。

## 從資料流量中刪除步驟
<a name="data-wrangler-data-flow-delete-step"></a>

若要刪除步驟，請選取該步驟，然後選取**刪除**。如果節點是具有單一輸入的節點，則只會刪除您選取的步驟。刪除具有單一輸入的步驟，並不會刪除該步驟的後續步驟。如果您要刪除某來源、聯結或串連節點的步驟，則該步驟後續的所有步驟也會一併刪除。

若要從步驟堆疊中刪除步驟，請選取該堆疊，然後選取您要刪除的步驟。

您可以使用下列其中一個程序，來刪除某個步驟而非刪除下游步驟。

------
#### [ Delete a step in the Data Wrangler flow ]

您可以針對資料流量中具有單一輸入的節點刪除個別步驟。您無法刪除來源、聯結和串連節點的個別步驟。

使用下列程序刪除 Data Wrangler 流程中的某個步驟。

1. 選擇具有您要刪除之步驟的步驟群組。

1. 選擇該步驟旁的圖示。

1. 選擇 **Delete step** (刪除步驟)。  
![\[範例顯示如何在 Data Wrangler 主控台的資料流程頁面中刪除步驟。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/delete-step-flow-1.png)

------
#### [ Delete a step in the table view ]

使用下列程序來刪除資料表檢視中的步驟。

您可以針對資料流量中具有單一輸入的節點刪除個別步驟。您無法刪除來源、聯結和串連節點的個別步驟。

1. 選擇該步驟並開啟步驟的資料表檢視。

1. 將游標移至步驟上，以便顯示省略符號圖示。

1. 選擇該步驟旁的圖示。

1. 選擇 **刪除**。  
![\[範例顯示如何在 Data Wrangler 主控台的資料表檢視中刪除步驟。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/delete-step-table-0.png)

------

## 編輯 Data Wrangler 流程中的步驟
<a name="data-wrangler-data-flow-edit-step"></a>

您可以編輯在 Data Wrangler 流程中新增的每個步驟。透過編輯步驟，您可以變更資料欄的轉換或資料類型。您可以編輯步驟以進行變更，以便更妥善地執行分析。

您可以透過多種方式編輯步驟。一些範例包括變更推算方法或變更閾值，以將某值視為極端值。

使用下列程序來編輯步驟。

若要編輯步驟，請執行下列操作。

1. 在 Data Wrangler 流程中選擇一個步驟，以開啟資料表檢視。  
![\[Data Wrangler 主控台資料流程頁面中的範例步驟。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-flow-edit-choose-step.png)

1. 在資料流量中選擇一個步驟。

1. 編輯步驟。

下列影像顯示編輯步驟的範例。

![\[範例顯示如何在 Data Wrangler 主控台的資料流程頁面中編輯步驟。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-flow-table-edit-step.png)


**注意**  
您可以使用 Amazon SageMaker AI 網域內的共用空間，來協同處理 Data Wrangler 流程。在共用空間內，您和您的協作者可以即時編輯流程檔案。不過，雙方彼此都無法即時查看變更內容。當任何人對 Data Wrangler 流程進行變更時，必須立即儲存。當有人儲存檔案時，除非關閉檔案並重新開啟，否則協作者將無法看到該檔案。任何未由任一人儲存的變更，都會被儲存變更的使用者覆寫。

# 取得有關資料和資料品質的洞察
<a name="data-wrangler-data-insights"></a>

使用**資料品質與洞察報告**，對已匯入至 Data Wrangler 的資料執行分析。建議您在匯入資料集之後建立報告。您可以使用該報告來幫助您清理和處理資料。它為您提供相關資訊，像是缺少值的數量和極端值數量等。如果您的資料有問題，例如目標洩漏或不平衡，洞察報告可以提醒您注意這些問題。

使用下列程序建立資料品質與洞察報告。它假設您已將資料集匯入 Data Wrangler 流程。

**若要建立資料品質與洞察報告**

1. 選擇 Data Wrangler 流程節點旁邊的 **\$1**。

1. 選取**取得資料洞見**。

1. **分析名稱**的部分，指定洞察報告的名稱。

1. (選用) 針對**目標欄**的部分，指定目標欄。

1. 為**問題類型**指定**迴歸**或**分類**。

1. 針對**資料大小**，請指定下列其中一項：
   + **50 K** — 使用您已匯入資料集的前 50000 列來建立報告。
   + **整個資料集** — 使用您匯入的整個資料集來建立報告。
**注意**  
以整個資料集建立資料品質與洞察報告，將使用 Amazon SageMaker Processing 任務。SageMaker 處理任務會佈建所需的其他運算資源，以取得所有資料的洞察。如需 SageMaker 處理任務的詳細資訊，請參閱 [使用 SageMaker Processing 的資料轉換工作負載](processing-job.md)。

1. 選擇**建立**。

下列主題顯示報告的各區段：

**Topics**
+ [摘要](#data-wrangler-data-insights-summary)
+ [目標欄](#data-wrangler-data-insights-target-column)
+ [快速模型](#data-wrangler-data-insights-quick-model)
+ [功能摘要](#data-wrangler-data-insights-feature-summary)
+ [範例](#data-wrangler-data-insights-samples)
+ [定義](#data-wrangler-data-insights-definitions)

您可以下載報告或線上查看報告。若要下載報告，請選取畫面右上角的下載按鈕。下列影像顯示按鈕。

![\[顯示下載按鈕的範例。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-download.png)


## 摘要
<a name="data-wrangler-data-insights-summary"></a>

洞察報告提供資料的簡短摘要，其中包含一般資訊，例如缺少值、無效值、功能類型、極端值計數等。它還可以包含高嚴重性警告，指出資料可能出現的問題。出現警告時，建議您進行調查。

以下是報告摘要的範例。

![\[範例報告摘要。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-report-summary.png)


## 目標欄
<a name="data-wrangler-data-insights-target-column"></a>

當您建立資料品質與洞察報告時，Data Wrangler 會提供選取目標欄的選項。目標欄是您試圖預測的資料欄。當您選擇目標欄時，Data Wrangler 會自動建立目標欄分析。它還按照其預測能力的順序，對功能進行排名。當您選取目標欄時，您必須指定要試圖解決迴歸還是分類問題。

分類問題的話，Data Wrangler 顯示一個資料表和直方圖，其中包含最常見的分類。一個類別就是一個分類。它還會呈現觀測值或資料行，顯示缺少或無效的目標值。

下列影像顯示分類問題的範例目標欄分析。

![\[範例目標欄分析。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-target-column-classification.png)


迴歸問題的話，Data Wrangler 會顯示目標欄中所有值的長條圖。它還會呈現觀測值或資料行，顯示缺少、無效或極端的目標值。

下列影像顯示迴歸問題的範例目標欄分析。

![\[範例目標欄分析。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-target-column-regression.png)


## 快速模型
<a name="data-wrangler-data-insights-quick-model"></a>

**快速模型**提供以您的資料訓練的模型，其預期的預測品質估計。

Data Wrangler 會將您的資料分割成訓練和驗證折疊。它使用 80％ 的樣本進行訓練，20％ 的值進行驗證。分類的話，取樣是採分層分割。分層分割情況下，每個資料分割區具有相同的標籤比例。分類問題的話，重要的是要在訓練和分類折疊之間保持相同的標籤比例。Data Wrangler 使用預設的超參數來訓練 XGBoost 模型。它適用於驗證資料提前停止的情形，並執行最小的功能預先處理。

分類模型的話，Data Wrangler 會傳回模型摘要和混淆矩陣。

以下是分類模型摘要的範例。若要進一步了解其傳回的資訊，請參閱[定義](#data-wrangler-data-insights-definitions)。

![\[分類模型摘要範例。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-quick-model-classification-summary.png)


以下是快速模型傳回之混淆矩陣的範例。

![\[混淆矩陣範例。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-quick-model-classification-confusion-matrix.png)


混淆矩陣為您提供以下資訊：
+ 預測標籤與實際標籤相符的次數。
+ 預測標籤與實際標籤不相符的次數。

實際標籤代表在資料中實際觀察到的情形。例如，如果您使用模型來偵測詐騙交易，則實際標籤代表該交易實際上是否為詐騙。預測標籤表示模型指派給資料的標籤。

您可以透過混淆矩陣，查看模型預測條件存在或不存在的情況。如果您要預測詐騙交易，則可以使用混淆矩陣來了解模型的敏感度和明確性。敏感度是指模型偵測詐騙交易的能力。明確性是指模型避免將非詐騙交易檢測為詐騙交易的能力。

以下是迴歸問題的快速模型輸出的範例。

![\[迴歸問題的快速模型輸出範例。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-quick-model-regression-summary.png)


## 功能摘要
<a name="data-wrangler-data-insights-feature-summary"></a>

當您指定目標欄時，Data Wrangler 會依其預測力對功能排序。預測力是在資料分成 80% 訓練和 20% 驗證折疊之後測量的。針對訓練折疊上的每項個別特徵，Data Wrangler 都會對應一個模型。它會套用最少的特徵預處理，並測量驗證資料的預測效能。

它將分數標準化為 [0,1] 範圍。較高的預測分數，表示這些資料欄單獨使用時，對於預測目標更為有用。得分較低，表示這些欄對於預測目標欄來說不具預測能力。

當一欄單獨來看不具預測性時，它與其他欄搭配使用時通常也不會變得有預測性。您可以放心地使用預測分數，來判斷資料集內的特徵是否可預測。

分數較低通常表示該特徵是多餘的。分數為 1 意味著完美的預測能力，這通常表示目標洩漏。目標洩漏通常發生在資料集包含一個欄，其在預測時間內為不可用。例如，它可能是目標欄的副本。

以下是顯示每個特徵預測值的表格和長條圖的範例。

![\[顯示每個功能預測值的範例摘要資料表。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-feature-summary-table.png)


![\[顯示每個功能預測值的範例直方圖。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-feature-summary-histogram.png)


## 範例
<a name="data-wrangler-data-insights-samples"></a>

Data Wrangler 會提供有關您的樣本是否異常，或資料集內是否有所重複的資訊。

Data Wrangler 使用*隔離樹演算法*偵測異常樣本。隔離樹會將異常狀況分數與資料集的每個樣本 (列) 產生關聯。低異常狀況分數表示出現異常樣本。高分與非異常樣本有關。具有負異常狀況分數的樣本通常被視為異常，具有正異常狀況分數的樣本被視為非異常。

當您查看可能異常的樣本時，我們建議您注意不尋常的值。例如，您的極端值可能是由於收集和處理資料時發生錯誤而產生的。我們建議您在檢查異常樣本時，運用領域知識和商業邏輯。

Data Wrangler 會偵測重複的資料列，並計算資料中重複資料列的比例。某些資料來源可能包含有效的重複項。其他資料來源可能具有指向資料收集問題的重複項目。由於錯誤的資料收集而產生的重複範例，可能會干擾將資料分割為獨立訓練和驗證折疊的機器學習程序。

以下是可能受到重複樣本影響的洞察報告元素：
+ 快速模型
+ 預測力估算
+ 自動超參數調校

您可以使用**管理列**底下的**捨棄重複**轉換工具，從資料集中移除重複樣本。Data Wrangler 會顯示最常重複的資料列。

## 定義
<a name="data-wrangler-data-insights-definitions"></a>

下列是資料洞見報告中使用的技術詞彙定義。

------
#### [ Feature types ]

以下是每個特徵類型的定義：
+ **數值** — 數值可以是浮點數或整數，例如年齡或收入。機器學習模型假設數值已排序，並定義相關距離。例如，3 比 10 更接近 4，而 3 < 4 < 10。
+ 分類 - 資料欄項目屬於一組唯一值，通常比資料欄中的項目數小得多。例如，長度為 100 的欄可以包含唯一值`Dog`、`Cat`和`Mouse`。這些值可以是數值、文字或兩者的組合。 `Horse`、`House`、`8`、`Love`和`3.1`是有效值，並且可以在相同的分類欄中找到。有別於數字特徵，機器學習模型不會假設分類特徵值的順序或距離，即使所有值都是數字。
+ **二進位** — 二進位功能是一種特殊的分類功能類型，其中一組唯一值的基數為 2。
+ **文字** — 文字欄包含許多非數字的唯一值。在極端情況下，資訊欄的所有元素都是唯一的。在極端情況下，沒有任何項目是相同的。
+ **日期時間** — 日期時間欄包含日期或時間的相關資訊。它可以同時具有日期和時間的資訊。

------
#### [ Feature statistics ]

以下是每個特徵統計資料的定義：
+ **預測力**-預測力是衡量資訊欄在預測目標方面的有用程度。
+ **極端值** (在數值欄中) — Data Wrangler 使用兩種對極端值的統計資料來偵測極端值：中間值和強大的標準偏差 (RSTD)。RSTD 是透過將特徵值裁剪為 [5 百分位數, 95 百分位數] 範圍，並計算裁剪向量的標準偏差而得出。所有大於中間值 \$1 5 \$1 RSTD 或小於 中間值 - 5 \$1 RSTD 的值都被視為極端值。
+ **偏態** (在數值欄中) — 偏態用來衡量分佈的對稱性，並定義為分佈的三階矩除以標準偏差的三次方。常態分佈或任何其他對稱分佈的偏態為零。正值表示分佈的右尾長於左尾。負值表示分佈的左尾長於右尾。根據經驗法則，當偏態的絕對值大於 3 時，分佈會被視為偏斜。
+ **峰態** (以數值欄表示) — 皮爾森峰度測量分佈尾端的厚度。它被定義成第四矩除以第二矩的平方。常態分佈的峰態為 3。峰態值小於 3，代表分佈集中在平均值周圍，尾部比常態分佈的尾部輕。峰態值大於 3 代表尾部較重或極端值。
+ **缺少值**-類似空值的物件，空字串和僅由空格組成的字串，其被視為缺少值。
+ **數值功能或迴歸目標的有效值** — 可投射為有限浮點數的所有值都有效。缺少值無效。
+ **分類、二進位或文字功能或分類目標的有效值** — 所有未缺少的值都有效。
+ **日期時間功能** — 可轉換為日期時間物件的所有值都有效。缺少值無效。
+ **無效值** — 缺少或無法正確轉換的值。例如，在數值欄中，您無法轉換字串`"six"`或 Null 值。

------
#### [ Quick model metrics for regression ]

以下是快速模型指標的定義：
+ R2 或決定係數) — R2 是模型預測的目標中變化的比例。R2 在 [負無限，1] 的範圍內。1 是完美預測目標的模型的分數，0 表示簡單模型總是預測目標的平均值。
+ MSE 或均方誤差 — MSE 在 [0，無限] 範圍內。0 是完美預測目標的模型的分數。
+ MAE 或平均絕對誤差 — MAE 在 [0，無限] 範圍內，0 是完美預測目標模型的分數。
+ MSE 或均方根誤差 — RMSE 在 [0，無限] 範圍內。0 是完美預測目標的模型的分數。
+ 最大誤差 — 錯誤在資料集上的最大絕對值。最大誤差在 [0，無限] 範圍內。0 是完美預測目標的模型的分數。
+ 中間值絕對誤差 — 中間值絕對誤差在 [0，無限] 範圍內，0 是完美預測目標模型的分數。

------
#### [ Quick model metrics for classification ]

以下是快速模型指標的定義：
+ **準確度** — 準確度是準確預測樣本的比率。準確度在 [0, 1] 範圍內。0 是所有樣本預測失敗的模型分數，1 是完美模型的分數。
+ **平衡準確度** — 平衡準確度是在調整類別權重以平衡資料時，預測正確的樣本比例。不論分類出現的頻率如何，所有類別都被視為同等重要。平衡準確度在 [0, 1] 範圍內。0 是所有樣本預測錯誤的模型分數，1 是完美模型的分數。
+ **AUC (二進制分類)** — 這是接收者操作特性曲線下的面積。AUC 在 [0, 1] 範圍內，其中隨機模型傳回 0.5 的分數，完美模型會傳回 1 的分數。
+ **AUC (OVR)** — 對於多類別分類，這是使用一對多方法分別計算每個標籤的接收者操作特性曲線下的面積。Data Wrangler 報告面積的平均值。AUC 在 [0, 1] 範圍內，其中隨機模型傳回 0.5 的分數，完美模型會傳回 1 的分數。
+ **精確度**-精確度是針對特定類別定義的。精確度是是模型將一個類別正確分類的執行個體數，除以所有被模型分類為該類別的執行個體數之所得。精確度在 [0, 1] 範圍內，1 是沒有類別誤報的模型分數。如為二進制分類，Data Wrangler 報告正類別的精確度。
+ **召回率** － 召回率是針對特定類別定義的。召回率表示成功檢索到的相關類別執行個體數，占所有相關類別執行個體數的比例。召回率範圍在 [0, 1] 之間，1 是該類別所有執行個體經正確分類模型的分數。如為二進制分類，Data Wrangler 報告正類別的召回率。
+ **F1** — F1 是針對特定類別定義的。這是精確度和召回率之間的調和平均數。F1 在 [0, 1] 範圍內，1 是完美模型的分數。如為二進制分類，Data Wrangler 會針對具有正值的類別報告 F1。

------
#### [ Textual patterns ]

**模式**使用易於閱讀的格式來描述字串的文字格式。下列是文字模式的範例：
+ “\$1digits:4-7\$1” 描述長度介於 4 和 7 之間的數字序列。
+ “\$1alnum:5\$1” 描述長度恰好為 5 的英數混合字串。

Data Wrangler 會從資料中查看非空字串的樣本來推斷模式。它可以描述許多常用的模式。以百分比表示的**信賴度**，表示估計值與模式相符的資料量。使用文字模式，您可以查看資料中需要更正或捨棄的行。

以下說明 Data Wrangler 可以辨識的模式：


| 模式 | 文字格式 | 
| --- | --- | 
|  \$1alnum\$1  |  英數字串  | 
|  \$1any\$1  |  任何字詞字元字串  | 
|  \$1digits\$1  |  數字序列  | 
|  \$1lower\$1  |  一個小寫單字  | 
|  \$1mixed\$1  |  一個混合大小寫的單字  | 
|  \$1name\$1  |  開頭為大寫字母的單字  | 
|  \$1upper\$1  |  一個大寫單字  | 
|  \$1空格\$1  |  空格字元  | 

單字字元可以是底線，或可能出現在任何語言單字中的字元。例如，字串 'Hello\$1word' 和 'écoute' 都由單字字元組成。'H' 和 'é' 都是單字字元的範例。

------

# 在資料流程上自動訓練模型
<a name="data-wrangler-autopilot"></a>

您可以使用 Amazon SageMaker Autopilot，在資料流程中已轉換的資料上進行自動訓練、調校和部署模型。Amazon SageMaker Autopilot 可以執行多種演算法，並使用最適合您資料的演算法。如需 Amazon SageMaker Autopilot 的詳細資訊，請參閱[SageMaker Autopilot](autopilot-automate-model-development.md)。

當您訓練和調校模型時，Data Wrangler 會將您的資料匯出到 Amazon S3 位置，讓 Amazon SageMaker Autopilot 可以存取該位置。

您可以選擇 Data Wrangler 流程中的一個節點，然後在資料預覽中選擇**匯出和訓練**，來準備和部署模型。您可以使用這個方法來檢視資料集，然後再選擇訓練資料集上的模型進行訓練。

您也可以直接訓練和部署資料流程的模型。

以下程序會準備並部署資料流程的模型。對於具有多列轉換的 Data Wrangler 流程，您無法在部署模型時使用 Data Wrangler 流程的轉換。您可以使用以下程序來處理資料，然後再使用該資料來執行推論。

若要直接訓練和部署資料流程的模型，請執行以下操作。

1. 選擇包含訓練資料之節點旁邊的 **\$1**。

1. 選擇**訓練模型**。

1. （選用） 指定 AWS KMS 金鑰或 ID。如需建立和控制加密金鑰來保護資料的詳細資訊，請參閱 [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)。

1. 選擇**匯出並訓練**。

1. Amazon SageMaker Autopilot 在 Data Wrangler 匯出的資料上訓練模型後，請為**實驗名稱**指定一個名稱。

1. 在**輸入資料**下方，選擇**預覽**來驗證 Data Wrangler 是否將您的資料正確地匯出到 Amazon SageMaker Autopilot。

1. 針對**目標**，選擇目標欄。

1. (選用) 針對**輸出資料**下方的 **S3 位置**，請指定預設位置以外的 Amazon S3 位置。

1. 選擇**下一步：訓練方法**。

1. 選擇一種訓練方法。如需詳細資訊，請參閱[訓練模式](autopilot-model-support-validation.md#autopilot-training-mode)。

1. (選用) 針對**自動部署端點**，請指定端點的名稱。

1. 針對**部署選項**，請選擇一種部署方法。您可以選擇使用或不使用已對資料進行的轉換進行部署。
**重要**  
您無法使用已在 Data Wrangler 流程中進行的轉換來部署 Amazon SageMaker Autopilot 模型。如需那些轉換的詳細資訊，請參閱[匯出至推論端點](data-wrangler-data-export.md#data-wrangler-data-export-inference)。

1. 選擇**下一步：檢閱和建立**。

1. 選擇 **Create experiment (建立實驗)**。

如需模型訓練和部署的詳細資訊，請參閱[使用 AutoML API 建立表格式資料的迴歸或分類任務](autopilot-automate-model-development-create-experiment.md)。Autopilot 會顯示有關最佳模型效能的分析。如需有關模型效能的詳細資訊，請參閱[檢視 Autopilot 模型效能報告](autopilot-model-insights.md)。

# 轉換資料
<a name="data-wrangler-transform"></a>

Amazon SageMaker Data Wrangler 提供大量的機器學習資料轉換，以簡化資料的清理、轉換和功能化作業。當您新增轉換時，它會在資料流程中新增一個步驟。您新增的每個轉換都會修改資料集並產生新的資料框。所有後續轉換都會套用至產生的資料框。

Data Wrangler 包含內建的轉換，您可以用它來轉換資料欄，而不需要任何程式碼。您還可以使用 PySpark、Python (使用者定義函式)、pandas 和 PySpark SQL 來新增自訂轉換。有些轉換會就地運作，而有些則會在資料集中建立新的輸出資料欄。

您可以一次將轉換套用至多個資料欄。例如，您可以在一個步驟中刪除多個欄位。

您只能將**處理數字**和**處理遺漏**的轉換套用至單一欄位。

使用此頁面進一步瞭解這些內建和自訂轉換。

## 轉換使用者介面
<a name="data-wrangler-transform-ui"></a>

大部分的內建轉換都位於 Data Wrangler 使用者介面的**準備**索引標籤中。您可以透過資料流程視圖存取聯結和串連轉換。使用下表預覽這兩個視圖。

------
#### [ Transform ]

您可以將轉換新增至資料流程中的任何步驟。使用下列程序，將轉換新增至資料流程。

若要在資料流程中新增步驟，請執行以下操作。

1. 選擇資料流程中步驟旁邊的 **\$1**。

1. 選擇**新增轉換**。

1. 選擇**新增步驟**。  
![\[\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-wrangler-add-step.png)

1. 選擇一個轉換。

1. (選用) 您可以搜尋要使用的轉換。Data Wrangler 會在顯示結果中反白查詢。  
![\[\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-wrangler-search.png)

------
#### [ Join View ]

若要聯結兩個資料集，請選取資料流程中的第一個資料集，然後選擇**聯結**。選擇**聯結**時，您會看到類似於下方影像所示的結果。左側和右側資料集都會顯示在左側面板中。主面板會顯示您的資料流程，並新增新聯結的資料集。

![\[Data Wrangler 主控台資料流程區段中的聯結資料集流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/join-1.png)


選擇**設定**以設定您的聯結時，您會看到類似於下方影像所示的結果。您的聯結設定會顯示在左側面板中。您可以使用此面板來選擇聯結的資料集名稱、聯結類型和要聯結的資料欄。主面板顯示三個表格。前兩個表格會分別在左側和右側顯示左側和右側的資料集。在此資料表下，您可以預覽聯結的資料集。

![\[Data Wrangler 主控台資料流程區段中的聯結資料集資料表。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/join-2.png)


如需進一步了解，請參閱[聯結資料集](#data-wrangler-transform-join)。

------
#### [ Concatenate View ]

若要串連兩個資料集，請選取資料流程中的第一個資料集，然後選擇**串連**。選取**串連**時，您會看到類似於下方影像所示的結果。左側和右側資料集都會顯示在左側面板中。主面板會顯示您的資料流程，並新增新串連的資料集。

![\[Data Wrangler 主控台中資料流程區段中的範例串連資料集流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/concat-1.png)


選擇**設定**以設定您的串連時，您會看到類似於下方影像所示的結果。您的串連設定會顯示在左側面板中。您可以使用此面板來選擇串連資料集的名稱，並選擇在串連後移除重複項目，並新增資料欄以表示來源資料框。主面板顯示三個表格。前兩個表格會分別在左側和右側顯示左側和右側的資料集。在此資料表下，您可以預覽串連的資料集。

![\[Data Wrangler 主控台中資料流程區段中的範例串連資料集資料表。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/concat-2.png)


如需進一步了解，請參閱[串連資料集](#data-wrangler-transform-concatenate)。

------

## 聯結資料集
<a name="data-wrangler-transform-join"></a>

您可以直接在資料流程中聯結資料框。聯結兩個資料集時，產生的聯結資料集會顯示在流程中。Data Wrangler 目前支援下列聯結類型。
+ **Left Outer** – 包括左表中的所有列。如果左側資料表列中聯結的資料欄值與右側資料表列值不相符，則該資料列會包含聯結資料表中所有右側資料表欄位的 Null 值。
+ **Left Anti** – 在聯結欄的右表中包含左側表格中不包含值的列。
+ **Left semi** – 針對符合聯結陳述式中標準的所有相同列，包括左側資料表中的單一資料列。這會排除左側資料表中符合聯結標準的重複資料列。
+ **Right Outer** – 包括右表中的所有列。如果右側資料表列中聯結的資料欄值與左側資料表列值不相符，則該資料列會包含聯結資料表中所有左側資料表欄位的 Null 值。
+ **Inner** – 包括左右表格中包含聯結欄中相符值的資料列。
+ **Full Outer** – 包括左側和右側表格中的所有列。如果任一表格中聯結資料欄的列值不相符，則會在聯結的表格中建立單獨的列。如果資料列不包含聯結資料表中的欄值，則會針對該資料欄插入 null。
+ **Cartesian Cross** – 包括將第一個表中的每一列與第二個表中的每一列合併的資料列。這是來自聯結表列的[笛卡爾乘積](https://en.wikipedia.org/wiki/Cartesian_product)。乘積的結果是左表的大小乘以右表的大小。因此，我們建議您在非常大的資料集之間要謹慎使用此聯結。

使用以下程序來聯結兩個資料框。

1. 選取要聯結的左側資料框旁的 **\$1**。您選取的第一個資料框始終是聯結中的左表。

1. 選擇**聯結**。

1. 選擇正確的資料框。您選取的第二個資料框始終是聯結中的右表。

1. 選擇**設定**以設定您的聯結。

1. 使用**名稱**欄位為聯結的資料集命名。

1. 選取**聯結類型**。

1. 從左側和右側表格中選取要聯結的資料欄。

1. 選擇**套用**以預覽右側的聯結資料集。

1. 若要將聯結資料表新增至資料流程，請選擇**新增**。

## 串連資料集
<a name="data-wrangler-transform-concatenate"></a>

**串連兩個資料集：**

1. 選擇要串連的左側資料框旁的 **\$1**。您選取的第一個資料框始終是串連中的左表。

1. 選擇**串連**。

1. 選擇右側的資料框。您選取的第二個資料框始終是串連中的右表。

1. 選擇**設定**以設定您的串連。

1. 使用**名稱**欄位為串連的資料集命名。

1. (選用) 選取**串連後移除重複項目**旁的核取方塊以移除重複的資料欄。

1. (選用) 如果您想要新增資料欄來源的指標，則對每個新資料集的資料欄選取**新增資料欄以指示來源資料框**旁的核取方塊。

1. 選擇**套用**以預覽新資料集。

1. 若要將新資料集新增至資料流程，請選擇**新增**。

## 平衡資料
<a name="data-wrangler-transform-balance-data"></a>

您可以平衡不具代表性類別資料集的資料。平衡資料集可協助您建立更好的二進制分類模型。

**注意**  
您無法平衡包含資料欄向量的資料集。

您可以使用**平衡資料**作業以使用下列任一個運算子平衡資料：
+ *隨機過採樣* – 隨機複製少數類別中的範例。例如，如果您試圖偵測欺詐，則可能只有 10% 的資料中有欺詐案例。對於相同比例的欺詐和非欺詐性案件，此運算子會在資料集中隨機複製 8 次欺詐案例。
+ *隨機欠採樣*– 大致與隨機過採樣類似。從過度代表的類別中隨機移除範例，以獲得您想要的範例比例。
+ *合成少數過採樣技術 (SMOTE)* – 使用欠代表類別的範例插入新的合成少數範例。如需有關 SMOTE 的詳細資訊，請參閱以下說明。

您可以對同時包含數值和非數值特徵的資料集使用所有轉換。SMOTE 會使用相鄰範例來內插數值。Data Wrangler 使用 R 平方距離來決定附加範例內插的鄰近點。Data Wrangler 僅使用數字特徵來計算不具代表性群組中範例之間的距離。

對於不具代表性群組中的兩個實際範例，Data Wrangler 會使用加權平均值插補數字特徵。它將權重隨機分配給 [0, 1] 範圍內的範例。對於數字特徵，Data Wrangler 會使用範例的加權平均值插補樣本。對於範例 A 和 B，Data Wrangler 可以隨機分配權重 0.7 到 A，0.3 分配給 B。內插範例具有 0.7A \$1 0.3B 的值。

Data Wrangler 透過複製任一插補的實際範例來插補非數字特徵。它以隨機分配給每個範例的概率複製範例。對於範例 A 和 B，它可以將概率 0.8 分配給 A，將 0.2 分配給 B。對於它分配的機率，它在 80% 的情況下複製 A。

## 自訂轉換
<a name="data-wrangler-transform-custom"></a>

**自訂轉換**群組允許您使用 Python (使用者定義函式)、PySpark、pandas 或 PySpark (SQL) 來定義自訂轉換。對於這三個選項，您可以使用變數 `df` 來存取要套用轉換的資料框。要將自訂程式碼應用於資料框，請分配具有對 `df` 變量進行的轉換的資料框。如果您不使用 Python (使用者定義函式)，則無須納入 return 陳述式。選擇**預覽**以預覽自訂轉換的結果。選擇**新增**，將自訂轉換新增至**上一個步驟**清單。

您可以使用自訂轉換程式碼區塊中的 `import` 陳述式匯入常用程式庫，如下所示：
+ NumPy 版本 1.19.0
+ scikit-learn version 0.23.2
+ SciPy 版本 1.5.4
+ pandas 版本 1.0.3
+ PySpark 版本 3.0.0

**重要**  
**自訂轉換**不支援名稱中包含空格或特殊字元的資料欄。建議您指定只有英數字元和底線的資料欄名稱。您可以使用**管理資料欄**中的**重新命名資料欄**轉換來轉換群組，以移除資料欄名稱的空格。您還可以新增類似於以下內容的 ** Python (Pandas)****自訂轉換**，以在一個步驟中從多個資料欄中刪除空格。這個範例會將名為 `A column` 和 `B column` 的資料欄分別變更為 `A_column` 和 `B_column`。  

```
df.rename(columns={"A column": "A_column", "B column": "B_column"})
```

如果您在程式碼區塊中包含列印陳述式，結果會在您選取**預覽**時顯示。您可以調整自訂程式碼轉換器面板的大小。調整面板大小會提供更多撰寫程式碼的空間。下列影像顯示調整面板大小的結果。

![\[對於 Python 函式，請用您的程式碼取代 pd.Series 下的註解。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/resizing-panel.gif)


下列各節提供撰寫自訂轉換程式碼的其他內容和範例。

**Python (使用者定義函式)**

Python 函式使您能夠編寫自訂轉換，而無需知道 Apache Spark 或 pandas 的能力。Data Wrangler 經過最佳化，可以快速執行自訂程式碼。您可以使用自訂 Python 程式碼和 Apache Spark 外掛程式獲得類似的性能。

若要使用 Python (使用者定義函式) 程式碼區塊，請指定下列項目：
+ **輸入資料欄** – 您要套用轉換的輸入資料欄。
+ **模式** – 腳本模式，可以是 pandas 或 Python。
+ **傳回類型** – 您要傳回值的資料類型。

使用 pandas 模式可提供更好的性能。Python 模式使您可以更輕鬆地使用純 Python 函式來編寫轉換。

下列影片顯示如何使用自訂程式碼建立轉換的範例。它使用 [Titanic 資料集](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/walkthrough_titanic.csv)來建立一個包含人員稱呼的資料欄。

![\[對於 Python 函式，請用您的程式碼取代 pd.Series 下的註解。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/python-function-transform-titanic-720.gif)


**PySpark**

下列範例會從時間戳記擷取日期和時間。

```
from pyspark.sql.functions import from_unixtime, to_date, date_format
df = df.withColumn('DATE_TIME', from_unixtime('TIMESTAMP'))
df = df.withColumn( 'EVENT_DATE', to_date('DATE_TIME')).withColumn(
'EVENT_TIME', date_format('DATE_TIME', 'HH:mm:ss'))
```

**pandas**

下列範例提供您要新增轉換之資料框的概觀。

```
df.info()
```

**PySpark (SQL)**

以下範例建立了一個包含以下四個資料欄的新資料框：*姓名*、*船票價格*、*船票等級*、*是否倖存*。

```
SELECT name, fare, pclass, survived FROM df
```

如果您不知道如何使用 PySpark，可以使用自訂程式碼片段來協助您入門。

Data Wrangler 有一個可搜尋的程式碼片段集合。您可以使用程式碼片段來執行工作，例如捨棄欄、按欄分組或建立模型。

若要使用程式碼片段，請選擇**搜尋範例程式碼片段**，然後在搜尋列中指定查詢。您在查詢中指定的文字不一定要完全符合程式碼片段的名稱。

下列範例顯示**捨棄重複資料列**程式碼片段，此程式碼片段可刪除資料集中具有類似資料的資料列。您可以搜尋下列其中一項來尋找程式碼片段：
+ Duplicates (複製)
+ Identical (相同)
+ Remove (移除)

下列程式碼片段有註解，可協助您瞭解您需要進行的變更。對於大多數程式碼片段，您必須在程式碼中指定資料集的資料欄名稱。

```
# Specify the subset of columns
# all rows having identical values in these columns will be dropped

subset = ["col1", "col2", "col3"]
df = df.dropDuplicates(subset)  

# to drop the full-duplicate rows run
# df = df.dropDuplicates()
```

若要使用程式碼片段，請將其內容複製並貼到**自訂轉換**欄位中。您可以將多個程式碼片段複製並貼到自訂轉換欄位中。

## 自訂公式
<a name="data-wrangler-transform-custom-formula"></a>

使用**自訂公式**可使用 Spark SQL 運算式來定義新資料欄，以查詢目前資料框中的資料。查詢必須使用 Spark SQL 運算式的慣例。

**重要**  
**自訂公式**不支援名稱中包含空格或特殊字元的資料欄。建議您指定只有英數字元和底線的資料欄名稱。您可以使用**管理資料欄**中的**重新命名資料欄**轉換來轉換群組，以移除資料欄名稱的空格。您還可以新增類似於以下內容的 ** Python (Pandas)****自訂轉換**，以在一個步驟中從多個資料欄中刪除空格。這個範例會將名為 `A column` 和 `B column` 的資料欄分別變更為 `A_column` 和 `B_column`。  

```
df.rename(columns={"A column": "A_column", "B column": "B_column"})
```

您可以使用此轉換對資料欄執行作業，並依名稱參照資料欄。例如，假設目前的資料框包含名為 *col\$1a* 和 *col\$1 b* 的資料欄，您可以使用以下操作產生一個**輸出欄**，該欄是這兩個欄的乘積，程式碼如下：

```
col_a * col_b
```

假設資料框包含 `col_a` 和 `col_b` 欄，則其他常見操作包括以下內容：
+ 串連兩欄：`concat(col_a, col_b)`
+ 新增兩欄：`col_a + col_b`
+ 減去兩欄：`col_a - col_b`
+ 分隔兩欄：`col_a / col_b`
+ 取一欄的絕對值：`abs(col_a)`

如需詳細資訊，請參閱選取資料相關的 [Spark 文件](http://spark.apache.org/docs/latest/api/python)。

## 降低資料集內的維度
<a name="data-wrangler-transform-dimensionality-reduction"></a>

使用主元件分析 (PCA) 降低資料的維度。資料集的維度會對應特徵數量。當您在 Data Wrangler 中使用降維時，您會得到一組稱為元件的新特徵。每個元件都會考慮資料中的某些變異。

第一個元件會考慮資料中最大的變異量。第二個元件會考慮資料中第二大的變異量，以此類推。

您可以使用降維來減少用於訓練模型的資料集大小。您可以改用主體元件，而不是使用資料集中的特徵。

若要執行 PCA，Data Wrangler 會為您的資料建立軸。軸是資料集中資料欄的仿射組合。第一個主元件是軸上具有最大變異數的值。第二個主元件是軸上具有第二大變異數的值。第 n 個主元件是軸上具有第 n 大變異數的值。

您可以設定 Data Wrangler 傳回的主元件數目。您可以直接指定主要元件的數目，也可以指定變異數閾值百分比。每個主元件都會解釋資料中的變異數。例如，您可能有一個值為 0.5 的主元件。該元件將說明 50% 的資料變異數。當您指定變異數閾值百分比時，Data Wrangler 會傳回符合指定百分比的最小元件數目。

以下是主體元件範例，其中包含它們在資料中解釋的變異數。
+ 元件 1 – 0.5
+ 元件 2 – 0.45
+ 元件 3 – 0.05

如果您指定 `94` 或 `95` 的變異數閾值百分比，則 Data Wrangler 會傳回元件 1 和元件 2。如果您指定 `96` 的變異數閾值百分比，則 Data Wrangler 會傳回所有三個主要元件。

您可以使用下列程序在資料集上執行 PCA。

若要在資料集上執行 PCA，請執行以下操作。

1. 開啟 Data Wrangler 資料流程。

1. 選擇 **\$1**，然後選取**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇**降維**。

1. 對於**輸入資料欄**，請選擇要縮減為主要元件的特徵。

1. (選用) 在**主要元件數目**中，選擇 Data Wrangler 在資料集中傳回的主要元件數目。如果指定欄位的值，就無法指定**變異數閾值百分比**的值。

1. (選用) 針對**變異數閾值百分比**，指定您要由主體元件解釋的變異數百分比。如果您未指定變異數閾值的話，Data Wrangler 會使用 `95` 的預設值。如果您已指定 **主要元件數目**的值，則無法指定變異數閾值百分比。

1. (選用) 取消選取**置中**以不使用資料欄的平均值做為資料的中心。根據預設，Data Wrangler 會在調整資料之前以平均值為中心。

1. (選用) 取消選取**縮放**，不會以單位標準差縮放資料。

1. (選用) 選擇**資料欄**，將元件輸出至不同的資料欄。選擇**向量**，將元件輸出為單一向量。

1. (選用) 對於 **輸出欄**，指定輸出資料欄的名稱。如果要將元件輸出到單獨的欄，則指定的名稱為字首。如果要將元件輸出到向量，則指定的名稱是向量欄的名稱。

1. (選用) 選取**保留輸入資料欄**。如果您計劃僅使用主體元件來訓練模型，則不建議選取此選項。

1. 選擇**預覽**。

1. 選擇**新增**。

## 分類編碼
<a name="data-wrangler-transform-cat-encode"></a>

分類資料通常由有限數量的類別組成，其中每個類別都以字串表示。例如，如果您有一個客戶資料表，則表示使用者所居住的國家/地區的資料欄即為類別。類別為*阿富汗*、*阿爾巴尼亞*、*阿爾及利亞*等。分類資料可以是*名目*或*序數*。序數類別具有固有的順序，名目類別則沒有。獲得的最高學位 (*高中*、*學士*、*碩士*等) 是序數類別的一個例子。

編碼分類資料是為類別建立數值表示的過程。例如，如果您的類別是*狗*和*貓*，則可以將此資訊編碼為兩個向量，`[1,0]` 表示 *狗*，而 `[0,1]` 表示*貓*。

當您編碼序數類別時，您可能需要將類別的自然順序轉換為編碼。例如，您可以透過以下地圖表示取得的最高學位：`{"High school": 1, "Bachelors": 2, "Masters":3}`。

使用分類編碼將字串格式的分類資料編碼為整數陣列。

Data Wrangler 分類編碼器會在定義步驟時，為資料欄中存在的所有類別建立編碼。您啟動 Data Wrangler 工作以在時間 *t* 處理資料集時，如果已將新類別新增至資料欄，而且此資料欄是在 *t-1* 時間進行 Data Wrangler 分類編碼轉換的輸入，則這些新類別會被視為在 Data Wrangler 工作中*遺失*。您為**無效處理策略**選取的選項會套用至這些缺少值上。何時可能發生這種情況的範例如下：
+ 當您使用 .flow 檔案建立 Data Wrangler 工作以處理在建立資料流程後更新的資料集時。例如，您可以使用資料流程來定期處理每個月的銷售資料。如果銷售資料每週更新一次，則可能會在已定義編碼分類步驟的欄中引入新類別。
+ 當您在匯入資料集時，選取**取樣**，某些類別可能會被排除在範例之外。

在這些情況下，這些新類別會被視為 Data Wrangler 工作中的缺少值。

您可以選擇和設定*序數*和 *one-hot 編碼*。閱讀下列章節以進一步瞭解這些選項。

這兩種轉換都會建立名為**輸出欄名稱**的新資料欄。您可以使用**輸出樣式**以指定此資料欄的輸出格式：
+ 選取**向量**以產生含稀疏向量的單一資料欄。
+ 選取**資料欄**可為每個類別建立一個欄，其中包含一個指標變數，用於指示原本資料欄中的文字是否包含等於該類別的值。

### 序數編碼
<a name="data-wrangler-transform-cat-encode-ordinal"></a>

選取**序數編碼**，將類別編碼為介於 0 和所選**輸入欄**中類別總數之間的整數。

**無效的處理策略**：選取處理無效或缺少值的方法。
+ 如果您要省略缺少值的資料列，請選擇**略過**。
+ 選擇**保留**，將缺少值保留為最後一個類別。
+ 如果您希望 Data Wrangler 在**輸入**欄中遇到缺少值時擲回錯誤，請選擇**錯誤**。
+ 選擇**以 NaN 取代**，以用 NaN 取代缺少值。如果您的機器學習 (ML) 演算法可以處理缺少值，則建議使用此選項。否則，此清單中的前三個選項可能會產生更好的結果。

### One-Hot 編碼
<a name="data-wrangler-transform-cat-encode-onehot"></a>

為**轉換**選取 **One-hot 編碼**，即可使用 one-hot 編碼。使用下列項目設定此轉換：
+ **捨棄最後一個類別**：如果 `True`，則最後一個類別在 one-hot 編碼中沒有對應的索引。如果可能存在缺少值，則缺少的類別始終為最後一個類別，並將其設定為 `True` 表示缺少值會導致全部零向量。
+ **無效的處理策略**：選取處理無效或缺少值的方法。
  + 如果您要省略缺少值的資料列，請選擇**略過**。
  + 選擇**保留**，將缺少值保留為最後一個類別。
  + 如果您希望 Data Wrangler 在**輸入**欄中遇到缺少值時擲回錯誤，請選擇**錯誤**。
+ **輸入序數是否編碼**：如果輸入向量包含序數編碼資料，請選取此選項。此選項要求輸入資料包含非負數整數。如果為 **True**，則輸入 *i* 會編碼為第 *i* 個位置中具有非零的向量。

### 相似性編碼
<a name="data-wrangler-transform-cat-encode-similarity"></a>

當您具有以下條件時，請使用相似性編碼：
+ 大量的類別變數
+ 雜訊資料

相似性編碼器為具有分類資料的資料欄建立嵌入。內嵌是指從離散物件 (例如單字) 到實數向量的映射。它將類似的字串編碼為包含相似值的向量。例如，它為 “California” 和 “Calfornia” 建立非常相似的編碼。

Data Wrangler 會使用 3 gram 權杖產生器，將資料集中的每個類別轉換成一組權杖。它將權杖轉換為使用 mini-hash 編碼的內嵌。

以下範例示範相似性編碼器如何從字串建立向量。

![\[Data Wrangler 主控台中資料表使用 ENCODE CATEGORICAL 的範例。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/destination-nodes/similarity-encode-example-screenshot-0.png)


![\[Data Wrangler 主控台資料表中找到之變數的範例向量表示法。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/destination-nodes/similarity-encode-example-screenshot-1.png)


Data Wrangler 建立的相似性編碼：
+ 具有較低的維度
+ 可擴展到大量類別
+ 堅固耐用且抗雜噪

由於上述原因，相似性編碼比 one-hot 編碼更多樣化。

使用下列程序，新增相似性編碼轉換。

若要使用相似性編碼，請執行以下操作。

1. 登入 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker/)。

1. 選擇**開啟 Studio Classic**。

1. 選擇**啟動應用程式**。

1. 選擇 **Studio**。

1. 指定資料流程。

1. 選擇具有轉換的步驟。

1. 選擇**新增步驟**。

1. 選擇**編碼分類**。

1. 指定下列內容：
   + **轉換** – **相似性編碼**
   + **輸入資料欄** – 包含您正在編碼的分類資料欄。
   + **目標維度** – (選用) 分類內嵌向量的維度。預設值為 30。如果您的大型資料集包含許多類別，建議您使用較大的目標維度。
   + **輸出樣式** – 針對包含所有編碼值的單一向量選擇**向量**。選擇**資料欄**將編碼值放在不同的資料欄中。
   + **輸出資料欄** – (選用) 向量編碼輸出的輸出資料欄名稱。對於資料欄編碼的輸出，這是資料欄名稱的字首，隨後接續列出的數字。

## 功能化文字
<a name="data-wrangler-transform-featurize-text"></a>

使用**功能化文字**轉換群組來偵測字串類型的資料欄，並使用內嵌文字來功能化這些資料欄。

此特徵群組包含兩個功能，分別為*字元統計資料*和*向量化*。閱讀下列章節以進一步瞭解這些轉換。對於這兩個選項，**輸入欄**必須包含文字資料 (字串類型)。

### 字元統計資料
<a name="data-wrangler-transform-featurize-text-character-stats"></a>

使用**字元統計資料**來產生包含文字資料之資料欄中每一個資料列的統計資料。

此轉換會針對每一列計算下列比率和計數，並建立新資料欄來報告結果。新資料欄的名稱是使用輸入資料欄名稱做為字首，以及特定比率或計數的字尾。
+ **字數**：該行中的單詞總數。此輸出資料欄的字尾為 `-stats_word_count`。
+ **字元數**：該列中的字元總數。此輸出資料欄的字尾為 `-stats_char_count`。
+ **上限比率**：A 到 Z 的大寫字元數除以欄中的所有字元。此輸出資料欄的字尾為 `-stats_capital_ratio`。
+ **下限比率**：a 到 z 的小寫字元數除以欄中的所有字元。此輸出資料欄的字尾為 `-stats_lower_ratio`。
+ **位數比率**：單一列中的位數與輸入欄中的位數總合的比率。此輸出資料欄的字尾為 `-stats_digit_ratio`。
+ **特殊字元比率**：非英數字元 (例如 \$1\$1&%:@ 等字元) 與輸入欄中所有字元總和的比率。此輸出資料欄的字尾為 `-stats_special_ratio`。

### 向量化
<a name="data-wrangler-transform-featurize-text-vectorize"></a>

文字嵌入涉及將字彙中的單字或片語映射到實數向量。使用 Data Wrangler 文字內嵌轉換，以將權杖化和向量化文字資料轉為詞頻逆向檔案頻率 (TF-IDF) 向量。

當針對一欄文字資料計算 TF-IDF 時，每個句子中的每個單字都會轉換成代表其語意重要性的實數。較高的數字與較不頻繁的單詞相關聯，這往往會更有意義。

定義**向量化**轉換步驟時，Data Wrangler 會使用資料集中的資料來定義 CountVectorizer 和 TF-IDF 方法。執行 Data Wrangler 工作會使用這些相同的方法。

您可以使用下列項目設定此轉換：
+ **輸出資料欄名稱**：此轉換作業會建立含有內嵌文字的新資料欄。使用此欄位可指定此輸出資料欄的名稱。
+ **權杖產生器：**權杖產生器將句子轉換為單詞或*權杖*清單。

  選擇**標準**以使用透過空格分割並將每個單字轉換為小寫的權杖產生器。例如，`"Good dog"` 會被權杖化為 `["good","dog"]`。

  選擇**自訂**以使用自訂的權杖產生器。如果您選擇**自訂**，您可以透過下列欄位來設定權杖產生器：
  + **權杖長度下限**：有效權杖的最小長度 (以字元為單位)。預設為 `1`。例如，如果您指定 `3` 為權杖長度下限，則會從權杖化句子中捨棄類似 `a, at, in` 的文字。
  + **Reggex 應該在差距上分割**：如果選擇，**Regex** 會在差距上分割。否則則會符合權杖。預設為 `True`。
  + **Regex 模式**：定義權杖化程序的 Regex 模式。預設為 `' \\ s+'`。
  + **轉為小寫**：如果選擇，則 Data Wrangler 在權杖化之前會將所有字元轉換為小寫字母。預設為 `True`。

  如需進一步了解，請參閱[權杖產生器](https://spark.apache.org/docs/latest/ml-features#tokenizer)上的 Spark 文件。
+ **向量化器**：向量化器會將權杖清單轉換為稀疏的數值向量。每個權杖對應於向量中的索引，而非零表示輸入句子中存在權杖。您可以從兩個向量化器選項中進行選擇，*計數*和*雜湊*。
  + **計數向量化**允許自訂不常見或過於常見權杖的篩選條件。**計數向量化參數**包含以下內容：
    + **字詞頻率下限**：在每一列中，會篩選頻率較低的字詞 (權杖)。如果指定整數，此整數為絕對閾值 (含)。如果您指定介於 0 (含) 和 1 之間的分數，則閾值與總字詞數相關。預設為 `1`。
    + **文件頻率下限**：必須呈現包含字詞 (權杖) 的列數下限。如果指定整數，此整數為絕對閾值 (含)。如果您指定介於 0 (含) 和 1 之間的分數，則閾值與總字詞數相關。預設為 `1`。
    + **文件頻率上限**：必須呈現包含字詞 (權杖) 的文件 (列) 數上限。如果指定整數，此整數為絕對閾值 (含)。如果您指定介於 0 (含) 和 1 之間的分數，則閾值與總字詞數相關。預設為 `0.999`。
    + **字彙大小上限**：字彙的大小上限。字彙由資料欄中所有列中的所有字詞 (權杖) 組成。預設為 `262144`。
    + **二進位輸出**：如果選取，向量輸出不包括文件中字詞的出現次數，而是其出現次數的二進位指標。預設為 `False`。

    要進一步了解此選項，請參閱與 [CountVectorizer](https://spark.apache.org/docs/latest/ml-features#countvectorizer) 相關的 Spark 文件。
  + **雜湊**計算速度更快。**雜湊向量化參數**包含以下內容：
    + **雜湊期間的特徵數**：雜湊向量器根據其雜湊值將權杖映射到向量索引。此特徵決定可能的雜湊值的數目。較大的值會女導致雜湊值之間的衝突較少，但維度輸出向量較高。

    要進一步了解此選項，請參閱與 [FeatureHasher](https://spark.apache.org/docs/latest/ml-features#featurehasher) 相關的 Spark 文件。
+ **套用 IDF**會套用 IDF 轉換，該轉換會將術語出現頻率與用於 TF-IDF 嵌入的標準反向文件頻率相乘。**IDF 參數**包含以下項目：
  + **文件頻率下限**：必須呈現包含字詞 (權杖) 的文件 (列) 數下限。如果 **count\$1vectorize** 是選擇的向量化器，我們建議您保留預設值，並且只在**計數向量化**參數中修改 **min\$1doc\$1freq** 欄位。預設為 `5`。
+ **輸出格式**：每列的輸出格式。
  + 選取**向量**以產生含稀疏向量的單一資料欄。
  + 選取**平面化**可為每個類別建立一個欄，其中包含一個指標變數，用於指示原本資料欄中的文字是否包含等於該類別的值。只有當**向量化器**設定為**計數向量化器**時，您才能選擇平面化。

## 轉換時間序列
<a name="data-wrangler-transform-time-series"></a>

在 Data Wrangler 中，您可以轉換時間序列資料。時間序列資料集中的值會編製索引至特定時間。例如，顯示一天中每小時商店中客戶數量的資料集就是時間序列資料集。下表顯示時間序列資料集的範例。

每小時店內客戶數


| 顧客人數 | 時間 (小時) | 
| --- | --- | 
| 4 | 09：00 | 
| 10 | 10：00 | 
| 14 | 11：00 | 
| 25 | 12：00 | 
| 20 | 13：00 | 
| 18 | 14：00 | 

對於前面的表格，**客戶數量**欄包含時間序列資料。時間序列資料會根據**時間 (小時)** 欄中的每小時資料編製索引。

您可能需要對資料執行一系列轉換，才能取得可用於分析格式的資料。使用**時間序列**轉換群組來轉換您的時間序列資料。如需有關您可以執行的轉換詳細資訊，請參閱下列各節。

**Topics**
+ [依時間序列分組](#data-wrangler-group-by-time-series)
+ [重新取樣時間序列資料](#data-wrangler-resample-time-series)
+ [處理缺少的時間序列資料](#data-wrangler-transform-handle-missing-time-series)
+ [驗證時間序列資料的時間戳記](#data-wrangler-transform-validate-timestamp)
+ [標準化時間序列的長度](#data-wrangler-transform-standardize-length)
+ [從時間序列資料擷取特徵](#data-wrangler-transform-extract-time-series-features)
+ [從時間序列資料使用延遲特徵](#data-wrangler-transform-lag-time-series)
+ [在時間序列中建立日期時間範圍](#data-wrangler-transform-datetime-range)
+ [在您的時間序列中使用滾動時段](#data-wrangler-transform-rolling-window)

### 依時間序列分組
<a name="data-wrangler-group-by-time-series"></a>

您可以透過作業群組，將資料欄中特定值的時間序列資料分組。

例如，下列表格可讓您追蹤家庭每日平均用電量。

平均每日家庭用電量


| 家庭 ID | 每日時間戳 | 用電量 (千瓦小時) | 住戶人數序列 | 
| --- | --- | --- | --- | 
| household\$10 | 1/1/2020 | 30 | 2 | 
| household\$10 | 1/2/2020 | 40 | 2 | 
| household\$10 | 1/4/2020 | 35 | 3 | 
| household\$11 | 1/2/2020 | 45 | 3 | 
| household\$11 | 1/3/2020 | 55 | 4 | 

如果您選擇按 ID 進行分組，您會得到下表。

用電量按家庭 ID 分組


| 家庭 ID | 用電量序列 (千瓦小時) | 住戶人數序列 | 
| --- | --- | --- | 
| household\$10 | [30, 40, 35] | [2, 2, 3] | 
| household\$11 | [45, 55] | [3, 4] | 

時間序列中的每個項目都會依對應的時間戳記排序。序列的第一個元素對應於該系列的第一個時間戳記。對於 `household_0`，`30`是用**電量序列**的第一個值。`30` 的值對應於 `1/1/2020` 的第一個時間戳記。

您可以包含開始時間戳記和結束時間戳記。下表顯示該資訊的顯示方式。

用電量按家庭 ID 分組


| 家庭 ID | 用電量序列 (千瓦小時) | 住戶人數序列 | Start\$1time | End\$1time | 
| --- | --- | --- | --- | --- | 
| household\$10 | [30, 40, 35] | [2, 2, 3] | 1/1/2020 | 1/4/2020 | 
| household\$11 | [45, 55] | [3, 4] | 1/2/2020 | 1/3/2020 | 

您可以透過下列程序，依照時間序列資料欄分組。

1. 開啟 Data Wrangler 資料流程。

1. 如果您尚未匯入資料集，請在**資匯入資料**索引標籤下匯入資料集。

1. 在資料流程中的**資料類型**下，選擇 **\$1**，然後選取**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇**時間序列**。

1. 在**變形**下，選擇**分組條件**。

1. 在**依此欄分組**中指定資料欄。

1. 對**套用至欄**指定一個值。

1. 選擇**預覽**以產生轉換的預覽。

1. 選擇**新增**，將轉換作業新增至 Data Wrangler 資料流程。

### 重新取樣時間序列資料
<a name="data-wrangler-resample-time-series"></a>

時間序列資料通常具有不定期取樣的觀察值。例如，資料集可能會有一些每小時記錄的觀察值，以及每兩個小時記錄一次的其他觀察值。

許多分析，例如預測演算法，都需要定期取樣觀察值。重新取樣可讓您為資料集中的觀察值建立定期間隔的取樣時間。

您可以對時間序列進行擴大取樣或縮減取樣。縮減取樣會增加資料集中觀察值取樣的間隔時間。例如，如果您縮減取樣每小時或每兩個小時取樣一次的觀察值，則資料集中的每個觀察值會每兩小時取樣一次。每小時觀察值會使用彙總方法 (例如平均值或中值) 彙總成單一值。

擴大取樣縮減資料集中觀察取樣的間隔時間。例如，如果您將每兩個小時採樣一次的觀測值擴大取樣為每一小時取樣一次，則可以使用插補方法從每兩個小時取樣的觀察值來推斷每小時觀察值。如需有關插補方法的資訊，請參閱[pandas.DataFrame.interpolate](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html)。

您可以重新取樣數值和非數值資料。

使用**重新取樣**作業重新取樣時間序列資料。如果您的資料集中有多個時間序列，Data Wrangler 會將每個時間序列的時間間隔標準化。

下表顯示使用均值作為彙總方法以縮減取樣時間序列資料的範例。資料會從每兩個小時縮減取樣到每小時一次。

縮減取樣前一天的每小時溫度讀數


| 時間戳記 | 溫度 (攝氏) | 
| --- | --- | 
| 12：00 | 30 | 
| 1:00 | 32 | 
| 2:00 | 35 | 
| 3:00 | 32 | 
| 4:00 | 30 | 

溫度讀數縮減取樣至每兩小時


| 時間戳記 | 溫度 (攝氏) | 
| --- | --- | 
| 12：00 | 30 | 
| 2:00 | 33.5 | 
| 4:00 | 35 | 

您可以透過下列程序，重新取樣照時間序列資料。

1. 開啟 Data Wrangler 資料流程。

1. 如果您尚未匯入資料集，請在**資匯入資料**索引標籤下匯入資料集。

1. 在資料流程中的**資料類型**下，選擇 **\$1**，然後選取**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇**重新取樣**。

1. 對於**時間戳記**，選擇時間戳記欄。

1. 對於**頻率單位**，指定要重新取樣的頻率。

1. (選用) 指定**頻率數量**的值。

1. 指定剩餘欄位以設定轉換。

1. 選擇**預覽**以產生轉換的預覽。

1. 選擇**新增**，將轉換作業新增至 Data Wrangler 資料流程。

### 處理缺少的時間序列資料
<a name="data-wrangler-transform-handle-missing-time-series"></a>

如果資料集中有缺少值，您可以執行以下其中一項作業：
+ 對於具有多個時間序列的資料集，請捨棄缺少值大於指定閾值的時間序列。
+ 使用時間序列中的其他值來推算時間序列中的缺少值。

推算缺少值涉及透過指定一個值或透過使用推論方法來取代資料。以下是您可以用於推算的方法：
+ 常數值 – 以您指定的值取代資料集中所有遺失的資料。
+ 最常見的值 – 以資料集中出現頻率最高的值取代所有遺失的資料。
+ 向前填充 – 使用向前填充，將缺少值取代為缺少值之前的非缺少值。對於序列：[2，4，7，NaN，NaN，Nan, 8]，所有缺少值取代為 7。使用向前填充後產生的序列為 [2, 4, 7, 7, 7, 7, 8]。
+ 向後填充 – 使用向後填充，將缺少值取代為缺少值後面的非缺少值。對於序列：[2，4，7，NaN，NaN，Nan, 8]，所有缺少值取代為 8。使用向後填充後產生的序列為 [2, 4, 7, 8, 8, 8, 8]。
+ 插補 – 使用插補函式來推算缺少值。如需有關可用於插補的函式詳細資訊，請參閱 [pandas.DataFrame.interpolate](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html)。

某些推算方法可能無法推算出資料集的所有缺少值。例如，**向前填充**無法推算出現在時間序列開頭的缺少值。您可以使用向前填充或向後填充來推算值。

您可以推算儲存格內或資料欄內的缺少值。

以下範例顯示如何在儲存格內推算值。

用電量的缺少值


| 家庭 ID | 用電量序列 (千瓦小時) | 
| --- | --- | 
| household\$10 | [30, 40, 35, NaN, NaN] | 
| household\$11 | [45, NaN, 55] | 

使用向前填充推算出用電量的值


| 家庭 ID | 用電量序列 (千瓦小時) | 
| --- | --- | 
| household\$10 | [30, 40, 35, 35, 35] | 
| household\$11 | [45, 45, 55] | 

以下範例顯示如何在資料欄內推算值。

家庭平均每日用電量的缺少值


| 家庭 ID | 用電量 (千瓦小時) | 
| --- | --- | 
| household\$10 | 30 | 
| household\$10 | 40 | 
| household\$10 | NaN | 
| household\$11 | NaN | 
| household\$11 | NaN | 

使用向前填充推算出平均每日家庭用電量的值


| 家庭 ID | 用電量 (千瓦小時) | 
| --- | --- | 
| household\$10 | 30 | 
| household\$10 | 40 | 
| household\$10 | 40 | 
| household\$11 | 40 | 
| household\$11 | 40 | 

您可以使用以下程序處理缺少值。

1. 開啟 Data Wrangler 資料流程。

1. 如果您尚未匯入資料集，請在**資匯入資料**索引標籤下匯入資料集。

1. 在資料流程中的**資料類型**下，選擇 **\$1**，然後選取**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇**處理缺少**。

1. 針對**時間序列輸入類型**，選擇是要處理儲存格內部或資料欄的缺少值。

1. 對於**為此欄輸入缺少值**，請指定具有缺少值的資料欄。

1. 對於**推算值的方法**，請選取一種方法。

1. 指定剩餘欄位以設定轉換。

1. 選擇**預覽**以產生轉換的預覽。

1. 如果缺少值，您可以在**用於推算值的方法**下指定推算值的方法。

1. 選擇**新增**，將轉換作業新增至 Data Wrangler 資料流程。

### 驗證時間序列資料的時間戳記
<a name="data-wrangler-transform-validate-timestamp"></a>

您可能有無效的時間戳記資料。您可以使用**驗證時間戳記**功能來判斷資料集中的時間戳記是否有效。您的時間戳記可能因以下一個或多個原因而無效：
+ 您的時間戳記欄有缺少值。
+ 時間戳記欄中的值格式不正確。

如果您的資料集中有無效的時間戳記，就無法成功執行分析。您可以使用 Data Wrangler 識別無效的時間戳記，並了解您需要清理資料的位置。

時間序列驗證可以下列兩種的其中一種方式運作：

您可以設定 Data Wrangler，以在資料集中遇到缺少值時執行以下其中一項作業：
+ 捨棄具有缺少值或無效值的列。
+ 識別具有缺少值或無效值的列。
+ 如果在資料集中發現任何缺少或無效的值，就會擲回錯誤。

您可以驗證具有 `timestamp` 類型或 `string` 類型的資料欄上的時間戳記。如果資料行具有`string`類型，Data Wrangler 會將資料行的類型轉換為`timestamp`並執行驗證。

您可以使用下列程序驗證資料集中的時間戳記。

1. 開啟 Data Wrangler 資料流程。

1. 如果您尚未匯入資料集，請在**資匯入資料**索引標籤下匯入資料集。

1. 在資料流程中的**資料類型**下，選擇 **\$1**，然後選取**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇**驗證時間戳記**。

1. 對於**時間戳記欄**，請選擇時間戳記欄。

1. 在 **政策**中，選擇是否要處理缺少的時間戳記。

1. (選用) 對於 **輸出欄**，指定輸出資料欄的名稱。

1. 如果日期時間欄要針對字串類型進行格式化，請選擇**轉換為日期時間**。

1. 選擇**預覽**以產生轉換的預覽。

1. 選擇**新增**，將轉換作業新增至 Data Wrangler 資料流程。

### 標準化時間序列的長度
<a name="data-wrangler-transform-standardize-length"></a>

如果您將時間序列資料儲存為陣列，則可以將每個時間序列標準化為相同的長度。標準化時間序列陣列的長度可能會讓您更輕鬆地對資料執行分析。

您可以將時間序列標準化，以進行需要固定資料長度的資料轉換。

許多機器學習 (ML) 演算法會要求您在使用時間序列資料之前，先將其平面化。平面化時間序列資料會將時間序列的每個值分隔成資料集中的專屬資料欄。資料集中的資料欄數目無法變更，因此在您將每一陣列平面化為特徵集的期間，需要標準化時間序列的長度。

每個時間序列都會設定為您指定為時間序列集的分位數或百分位數的長度。例如，您可以有三個具有以下長度的序列：
+ 3
+ 4
+ 5

您可以將所有序列設定為有 50 個百分位數長度的序列。

短於您指定長度的時間序列陣列會新增缺少值。以下是將時間序列標準化為長度較長的範例格式：[2, 4, 5, NaN, NaN, NaN]。

您可以使用不同的方法來處理缺少值。如需這些方法的詳細資訊，請參閱[處理缺少的時間序列資料](#data-wrangler-transform-handle-missing-time-series)。

超過指定長度的時間序列陣列會被截短。

您可以使用下列程序以標準化時間序列的長度。

1. 開啟 Data Wrangler 資料流程。

1. 如果您尚未匯入資料集，請在**資匯入資料**索引標籤下匯入資料集。

1. 在資料流程中的**資料類型**下，選擇 **\$1**，然後選取**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇**標準化長度**。

1. 對於**標準化資料欄的時間序列長度**，請選擇一個資料欄。

1. (選用) 對於 **輸出欄**，指定輸出資料欄的名稱。若您沒有指定名稱，就地完成轉換。

1. 如果日期時間欄要針對字串類型進行格式化，請選擇**轉換為日期時間**。

1. 選擇**截止分位數**並指定分位數以設定序列的長度。

1. 選擇**平面化輸出**，將時間序列的值輸出到單獨的資料欄中。

1. 選擇**預覽**以產生轉換的預覽。

1. 選擇**新增**，將轉換作業新增至 Data Wrangler 資料流程。

### 從時間序列資料擷取特徵
<a name="data-wrangler-transform-extract-time-series-features"></a>

如果您對時間序列資料執行分類或迴歸演算法，建議您先從時間序列擷取特徵，然後再執行演算法。擷取特徵可能會提高演算法的效能。

使用以下選項可選擇要從資料中擷取特徵的方式：
+ 使用**最小子集**指定擷取 8 個您知道在下游分析中有用的特徵。當您需要快速執行計算時，則可以使用最小的子集。當您的機器學習 (ML) 演算法過度擬合的風險很高，並且想要提供較少的特徵時，也可以使用它。
+ 使用**高效率子集**指定擷取最多可能的特徵，而無需擷取分析中運算密集型的特徵。
+ 使用**所有特徵**可指定從微調序列擷取的所有特徵。
+ 使用**手動子集**選擇您認為可以很好地解釋資料變化的特徵表。

使用下列程序從時間序列資料擷取特徵。

1. 開啟 Data Wrangler 資料流程。

1. 如果您尚未匯入資料集，請在**資匯入資料**索引標籤下匯入資料集。

1. 在資料流程中的**資料類型**下，選擇 **\$1**，然後選取**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇**擷取特徵**。

1. 對於**擷取此欄特徵**，請選擇一欄。

1. (選用) 選取**平面化**，將功能輸出至單獨的資料欄。

1. 對於**策略**，請選擇要擷取特徵的策略。

1. 選擇**預覽**以產生轉換的預覽。

1. 選擇**新增**，將轉換作業新增至 Data Wrangler 資料流程。

### 從時間序列資料使用延遲特徵
<a name="data-wrangler-transform-lag-time-series"></a>

對於許多使用案例，預測時間序列未來行為的最佳方式是使用其最新行為。

延遲特徵的最常見用途如下：
+ 收集少數過去的數值。例如，對於時間，t \$1 1，您收集 t、t-1、t-2 和 t-3。
+ 收集對應於資料中的季節性行為值。例如，若要預測下午 1:00 在餐廳的佔用率，您可能想要使用自前一天下午 1:00 開始的特徵。使用同一天中午 12:00 或上午 11:00 的特徵可能不像使用前幾天的特徵那樣可預測。

1. 開啟 Data Wrangler 資料流程。

1. 如果您尚未匯入資料集，請在**資匯入資料**索引標籤下匯入資料集。

1. 在資料流程中的**資料類型**下，選擇 **\$1**，然後選取**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇**延遲功能**。

1. 對於**產生此欄的延遲特徵**，請選擇一欄。

1. 對於**時間戳記欄**，請選擇包含時間戳記的資料欄。

1. 對於**延遲**，請指定延遲的持續時間。

1. (選用) 使用以下選項之一設定輸出：
   + **包含整個延遲視窗**
   + **平面化輸出**
   + **不包含歷程記錄的捨棄列**

1. 選擇**預覽**以產生轉換的預覽。

1. 選擇**新增**，將轉換作業新增至 Data Wrangler 資料流程。

### 在時間序列中建立日期時間範圍
<a name="data-wrangler-transform-datetime-range"></a>

您可能有沒有時間戳記的時間序列資料。如果您知道觀察值經過定期取樣，則可以在單獨的資料欄中產生時間序列的時間戳。若要產生時間戳記，請指定開始時間戳記的值和時間戳記的頻率。

例如，您可能擁有以下餐廳顧客人數的時間序列資料。

餐廳顧客人數的時間序列資料


| 顧客人數 | 
| --- | 
| 10 | 
| 14 | 
| 24 | 
| 40 | 
| 30 | 
| 20 | 

如果您知道餐廳在下午 5:00 開放，而且觀察值是每小時進行的，則可以新增與時間序列資料相對應的時間戳記欄。您可以在下表中看到時間戳記資料欄。

餐廳顧客人數的時間序列資料


| 顧客人數 | 時間戳記 | 
| --- | --- | 
| 10 | 1:00 PM | 
| 14 | 2:00 PM | 
| 24 | 3:00 PM | 
| 40 | 4:00 PM | 
| 30 | 5:00 PM | 
| 20 | 6:00 PM | 

使用下列程序，以將日期時間範圍新增至您的資料。

1. 開啟 Data Wrangler 資料流程。

1. 如果您尚未匯入資料集，請在**資匯入資料**索引標籤下匯入資料集。

1. 在資料流程中的**資料類型**下，選擇 **\$1**，然後選取**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇**日期時間範圍**。

1. 對於**頻率類型**，選擇用來測量時間戳記頻率的單位。

1. 對於**開始時間戳記**，請指定開始時間戳記。

1. 對於**輸出欄**，指定輸出資料欄的名稱。

1. (選用) 使用剩餘欄位設定輸出。

1. 選擇**預覽**以產生轉換的預覽。

1. 選擇**新增**，將轉換作業新增至 Data Wrangler 資料流程。

### 在您的時間序列中使用滾動時段
<a name="data-wrangler-transform-rolling-window"></a>

您可以擷取一段時間內的特徵。例如，對於時間、*t* 和時間時段長度為 3，而對於表示第 *t* 個時間戳記的列，我們會附加從時間序列 (*t*-3、*t* -2 和 *t*-1) 擷取的特徵 。如需擷取特徵的資訊，請參閱[從時間序列資料擷取特徵](#data-wrangler-transform-extract-time-series-features)。

您可以透過下列程序擷取一段時間內的特徵。

1. 開啟 Data Wrangler 資料流程。

1. 如果您尚未匯入資料集，請在**資匯入資料**索引標籤下匯入資料集。

1. 在資料流程中的**資料類型**下，選擇 **\$1**，然後選取**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇**滾動時段特徵**。

1. 對於**產生此欄的滾動時段特徵**，請選擇一欄。

1. 對於**時間戳記欄**，請選擇包含時間戳記的資料欄。

1. (選用) 對於 **輸出資料欄**，請指定輸出資料欄的名稱。

1. 對於**視窗大小**，請指定視窗大小。

1. 對於**策略**，請選擇擷取策略。

1. 選擇**預覽**以產生轉換的預覽。

1. 選擇**新增**，將轉換作業新增至 Data Wrangler 資料流程。

## 特徵化日期時間
<a name="data-wrangler-transform-datetime-embed"></a>

使用**特徵化日期/時間**來建立代表日期時間欄位的向量內嵌。若要使用此轉換，您的日期時間資料格式必須為下列其中一種：
+ 描述日期時間的字串：例如：`"January 1st, 2020, 12:44pm"`。
+ Unix 時間戳記：Unix 時間戳記描述了自 1970 年 1 月 1 日開始的秒數、毫秒數、微秒數或納秒數。

您可以選擇**推論日期時間格式**並提供**日期時間格式**。如果您提供日期時間格式，則必須使用 [Python 文件](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes)中描述的程式碼。您為這兩個組態選擇的選項會影響作業速度和最終結果。
+ 最手動和計算速度最快的選項是指定**日期時間格式**，並針對**推論日期時間格式**選取**否**。
+ 若要減少人工，您可以選擇**推論日期時間格式**，而不要指定日期時間格式。它也是一個快速計算的操作；然而，會假定在輸入欄中遇到的第一個日期時間格式為整欄的格式。如果欄中有其他格式，則這些值在最終輸出中為 NaN。推論日期時間格式可以給你未剖析的字串。
+ 如果您沒有指定格式，並針對**推論日期時間格式**選取**否**，就會得到最可靠的結果。所有有效的日期時間字串都會被剖析。但是，此操作可能會比此清單中的前兩個選項慢一個量級。

使用此轉換時，您可以指定包含上述所列一種格式的日期時間資料的**輸入資料欄**。轉換會建立一個名為**輸出資料欄名稱**的輸出欄。輸出欄的格式取決於您使用下列內容所定的組態：
+ **向量**：將單一欄輸出為向量。
+ **欄**：為每個特徵建立新資料欄。例如，如果輸出包含年、月和日，則會針對年、月和日建立三個單獨的資料欄。

此外，您必須選擇**內嵌項目模式**。對於線性模型和深度網路，我們建議選擇**循環**。對於樹狀演算法，我們建議選擇**序數**。

## 格式字串
<a name="data-wrangler-transform-format-string"></a>

**格式字串**轉換包含標準字串格式化作業。例如，您可以使用這些作業來移除特殊字元、標準化字串長度，以及更新字串大小寫。

此特徵群組包含下列轉換。所有轉換都會傳回**輸入欄**中字串的副本，並將結果新增至新的輸出欄。


| 名稱 | 函式 | 
| --- | --- | 
| 左填充 |  以特定**填充字元**向左填充至特定**寬度**的字串。如果字串長於**寬度**，則傳回值將縮短為**寬度**字元。  | 
| 右填充 |  以特定**填充字元**向右填充至特定**寬度**的字串。如果字串長於**寬度**，則傳回值將縮短為**寬度**字元。  | 
| 置中 (於任一側填充) |  以特定**填充字元**置中填充 (在字串兩側加入填充) 至特定**寬度**的字串。如果字串長於**寬度**，則傳回值將縮短為**寬度**字元。  | 
| 以零字首 |  以零向左填充一個數字字串，直到特定的**寬度**。如果字串長於**寬度**，則傳回值將縮短為**寬度**字元。  | 
| 去除左右 |  傳回移除字首和後加字元的字串副本。  | 
| 從左去除字元 |  傳回移除字首字元的字串副本。  | 
| 從右去除字元 |  傳回移除後加字元的字串副本。  | 
| 小寫 |  將文字中的所有字母轉換為小寫。  | 
| 大寫 |  將文字中的所有字母轉換為大寫。  | 
| 首字母大寫 |  將每個句子的第一個字母大寫。  | 
| 大小寫交換 | 將指定字串的所有大寫字元轉換為小寫字元，並將所有小寫字元轉換為大寫字元，然後加以傳回。 | 
| 新增字首或字尾 |  新增字串欄的字首和字尾。您必須至少指定一個**字首**和**字尾**。  | 
| 移除符號 |  從字串中刪除指定的符號。所有已列出的字元都會被移除。預設為空格。  | 

## 處理極端值
<a name="data-wrangler-transform-handle-outlier"></a>

機器學習模型對特徵值的分佈和範圍很敏感。極端值或稀有值可能會對模型準確性產生負面影響，並導致訓練時間延長。使用此特徵群組可偵測並更新您的資料集中的極端值。

當您定義**處理極端值**轉換步驟時，將根據 Data Wrangler 中的可用資料產生用於偵測極端值的統計資料。執行 Data Wrangler 工作時，會使用這些相同的統計資料。

使用下列章節以進一步了解此群組所包含的轉換。您可以指定**輸出名稱**，每個轉換都會產生含有結果資料的輸出欄。

### 強大的標準偏差數值極端值
<a name="data-wrangler-transform-handle-outlier-rstdev"></a>

此轉換使用對極端值強大的統計資料，偵測並修正數值特徵中的極端值。

您必須為用於計算極端值的統計資料定義**上分位數**和**下分位數**。您還必須指定**標準偏差**的數值，其值必須與平均值不同，才能被視為極端值。例如，如果您指定 3 為**標準偏差**，則值必須與平均值的標準偏差必須超過 3，才能被視為極端值。

**修正方法**是偵測到極端值時用來處理的方法。您可以選擇下列項目：
+ **剪裁**：使用此選項可將極端值裁剪為對應的極端值偵測界限。
+ **移除**：使用此選項可從資料框中移除具有極端值的列。
+ **無效**：使用此選項可用無效值取代極端值。

### 標準偏差數值極端值
<a name="data-wrangler-transform-handle-outlier-sstdev"></a>

此轉換會使用平均值和標準偏差來偵測並修復數值特徵中的極端值。

您可以指定**標準偏差**的數目，值必須與平均值不同，才能被視為極端值。例如，如果您指定 3 為**標準偏差**，則值必須與平均值的標準偏差必須超過 3，才能被視為極端值。

**修正方法**是偵測到極端值時用來處理的方法。您可以選擇下列項目：
+ **剪裁**：使用此選項可將極端值裁剪為對應的極端值偵測界限。
+ **移除**：使用此選項可從資料框中移除具有極端值的列。
+ **無效**：使用此選項可用無效值取代極端值。

### 分位數值極端值
<a name="data-wrangler-transform-handle-outlier-quantile-numeric"></a>

使用此轉換可以使用分位數偵測和修復數值特徵中的極端值。您可以定義**上分位數**和**下分位數**。高於上分位數或低於下分位數的所有值都被視為極端值。

**修正方法**是偵測到極端值時用來處理的方法。您可以選擇下列項目：
+ **剪裁**：使用此選項可將極端值裁剪為對應的極端值偵測界限。
+ **移除**：使用此選項可從資料框中移除具有極端值的列。
+ **無效**：使用此選項可用無效值取代極端值。

### 最小-最大數值極端值
<a name="data-wrangler-transform-handle-outlier-minmax-numeric"></a>

此轉換會使用上限和下限閾值來偵測並修復數值特徵中的極端值。如果您知道分開極端值的閾值，請使用此方法。

您可以指定**閾值上限**和**閾值下限**，如果值分別高於或低於這些閾值，則將其視為極端值。

**修正方法**是偵測到極端值時用來處理的方法。您可以選擇下列項目：
+ **剪裁**：使用此選項可將極端值裁剪為對應的極端值偵測界限。
+ **移除**：使用此選項可從資料框中移除具有極端值的列。
+ **無效**：使用此選項可用無效值取代極端值。

### 取代稀有
<a name="data-wrangler-transform-handle-outlier-replace-rare"></a>

當您使用**取代稀有**轉換時，您可以指定閾值，Data Wrangler 會尋找符合該閾值的所有值，並以您指定的字串取代這些值。例如，您可能想要使用此轉換，將資料欄中的所有極端值分類為 “其他” 類別。
+ **取代字串**：用來取代極端值的字串。
+ **絕對閾值**：如果執行個體數目小於或等於此絕對閾值，則類別為稀有。
+ **分數閾值**：如果執行個體數目小於或等於此分數閾值乘以列數，則該類別為稀有。
+ **最大常見類別**：操作後保留的非稀有上限類別。如果閾值沒有篩選出足夠的類別，那些具有最多外觀數目的類別將被分類為非稀有。如果設定為 0 (預設值)，則類別數量沒有硬性限制。

## 處理缺少值
<a name="data-wrangler-transform-handle-missing"></a>

缺少值是機器學習資料集中常見的情況。在某些情況下，適用於以計算值推算遺失資料，例如平均值或已分類的常見值。您可以使用**處理缺少值**轉換群組來處理缺少值。此群組包含下列轉換。

### 填充缺少
<a name="data-wrangler-transform-fill-missing"></a>

使用**填充缺少**轉換指令，以您定義的**填充值**取代缺少值。

### 推算缺少
<a name="data-wrangler-transform-impute"></a>

使用**推算缺少**轉換來建立包含導入值的新資料欄，其中會在輸入分類和數值資料中找到缺少值。組態取決於您的資料類型。

對於數值資料，請選擇推算策略，也就是用來決定要推算新值的策略。您可以選擇推算在於您的資料集中的平均值或中間值。Data Wrangler 會使用它所計算的值來導入缺少值。

對於分類資料，Data Wrangler 會使用資料欄中最常用的值來算出缺少值。若要推算自訂字串，請改用**填充缺少**轉換。

### 新增缺少的指標
<a name="data-wrangler-transform-missing-add-indicator"></a>

使用**新增缺少的指標**轉換以建立新的指標欄，其中如果一列包含一個值，則包含布林值 `"false"`，如果一列包含缺少值，則為 `"true"`。

### 捨棄缺少
<a name="data-wrangler-transform-drop-missing"></a>

您可以使用**捨棄缺少**選項，從**輸入資料欄**捨棄包含缺少值的資料列。

## 管理欄
<a name="data-wrangler-manage-columns"></a>

您可以使用下列轉換來快速更新和管理資料集中的資料欄：


| 名稱 | 函式 | 
| --- | --- | 
| 捨棄資料欄 | 刪除資料欄。 | 
| 複製資料欄 | 複製資料欄。 | 
| 重新命名資料欄 | 重新命名資料欄。 | 
| 移動資料欄 |  在資料集中移動資料欄的位置。選擇將資料欄移至資料集的開頭或結尾、參考資料欄之前或之後，或移至特定索引。  | 

## 管理資料列
<a name="data-wrangler-transform-manage-rows"></a>

使用此轉換群組可快速對資料列執行排序和隨機顯示操作。此群組包含下列轉換。
+ **排序**：按指定資料欄對整個資料框進行排序。選取此選項**遞增排列**旁邊的核取方塊；否則，取消選取核取方塊，排序會使用遞減排列。
+ **隨機顯示**：隨機顯示資料集中的所有資料列。

## 管理向量
<a name="data-wrangler-transform-manage-vectors"></a>

使用此轉換群組可合併或平面化向量欄。此群組包含下列轉換。
+ **組合**：使用此轉換可將 Spark 向量和數值資料合併為單一欄。例如，您可以合併三欄：兩欄包含數值資料，另一欄包含向量。在**輸入資料欄**中新增要組合的所有資料欄，並為組合資料指定**輸出資料欄名稱**。
+ **平面化**：使用此轉換可將包含向量資料的單一資料欄平面化。輸入資料欄必須包含 PySpark 向量或類似陣列的物件。您可以透過指定**偵測輸出數目的方法**來控制建立的欄數。例如，如果您選取**第一個向量的長度**，則在資料欄中找到的第一個有效向量或陣列中的元素數目會決定建立的輸出欄數。所有其他具有太多項目的輸入向量都會被截斷。項目太少的輸入會填入 NaNs。

  您也可以指定**輸出字首**作為每個輸出資料欄的字首。

## 處理數值
<a name="data-wrangler-transform-process-numeric"></a>

使用**處理數值**特徵群組來處理數值資料。此組中的每個純量是使用 Spark 資料庫定義的。支援下列純量：
+ **標準純量**：透過從每個值減去平均值並擴屋至單位變異數來標準化輸入欄。若要進一步了解，請參閱[StandardScaler](https://docs.aws.amazon.com/sagemaker/latest/dg/data-wrangler-transform.html) 的 Spark 文件。
+ **強大的純量**：使用對極端值強大的統計資量來擴展輸入欄。如需進一步了解，請參閱 [RobustScaler](https://spark.apache.org/docs/latest/ml-features#robustscaler) 的 Spark 文件。
+ **純量上下限**：透過將每個特徵擴展到指定範圍來轉換輸入欄。如需進一步了解，請參閱 [MinMaxScaler](https://spark.apache.org/docs/latest/ml-features#minmaxscaler) 的 Spark 文件。
+ **絕對純量上限**：透過將每個值除以最大絕對值來擴展輸入欄。如需進一步了解，請參閱 [MaxAbsScaler](https://spark.apache.org/docs/latest/ml-features#maxabsscaler) 的 Spark 文件。

## 抽樣
<a name="data-wrangler-transform-sampling"></a>

匯入資料之後，您可以使用**取樣**轉換器以取得一或多個樣本。當您使用取樣轉換器時，Data Wrangler 會對原始資料集進行取樣。

您可以選擇下列其中一種取樣方法：
+ **限制**：從第一列開始，直到您指定的限制為止，對資料集進行抽樣。
+ **隨機化**：取得您指定大小的隨機範例。
+ **分層**：採取分層隨機範例。

您可以分層隨機範例，以確保其代表資料集的原始分佈。

您可能正在為多個使用案例執行資料準備。對於每個使用案例，您都可以取得不同的範例並套用不同的轉換組。

下列程序描述建立隨機範例的程序。

從您的資料中獲取隨機範例。

1. 選擇已匯入資料集右側的 **\$1**。您的資料集名稱位於 **\$1** 下方。

1. 選擇**新增轉換**。

1. 選擇**抽樣**。

1. 對於**取樣方法**，請選擇取樣方法。

1. 對於**大約範例大小**，請選擇範例中所需的大約觀察次數。

1. (選用) 為**隨機種子**指定一個整數，以建立可再生的範例。

下列程序描述建立分層範例的程序。

從您的資料中獲取分層範例。

1. 選擇已匯入資料集右側的 **\$1**。您的資料集名稱位於 **\$1** 下方。

1. 選擇**新增轉換**。

1. 選擇**抽樣**。

1. 對於**取樣方法**，請選擇取樣方法。

1. 對於**大約範例大小**，請選擇範例中所需的大約觀察次數。

1. 對於**分層欄**，指定要分層的欄名稱。

1. (選用) 為**隨機種子**指定一個整數，以建立可再生的範例。

## 搜尋與編輯
<a name="data-wrangler-transform-search-edit"></a>

您可以使用此區段來搜尋和編輯字串中的特定模式。例如，您可以尋找和更新句子或文件中的字串、以分隔符號分隔字串，以及尋找特定字串的出現次數。

**搜尋和編輯**支援下列轉換。所有轉換都會傳回**輸入欄**中字串的副本，並將結果新增至新的輸出欄。


| 名稱 | 函式 | 
| --- | --- | 
|  尋找子字串  |  傳回您搜尋**子字串**第一次出現的索引。您可以分別在**開始**和**結束**位置開始和結束搜尋。  | 
|  尋找子字串 (從右側)  |  傳回您搜尋的**子字串**上次出現的索引。您可以分別在**開始**和**結束**位置開始和結束搜尋。  | 
|  相符字首  |  如果字串包含一個特定的**模式**，則傳回一個布爾值。模式可以是字元序列或規則表達式。或者，您可以將模式區分大小寫。  | 
|  尋找所有出現次數  |  傳回具有特定模式的所有出現次數陣列。模式可以是字元序列或規則表達式。  | 
|  使用 regex 擷取  |  傳回一個與特定 Regex 模式匹配的字串。  | 
|  在分隔符號之間擷取  |  傳回在**左分隔符**和**右分隔符**之間找到的所有字元的字串。  | 
|  從位置擷取  |  傳回一個字串，從輸入字串中的**開始位置**開始，該字串包含直到開始位置的所有字元加**長度**。  | 
|  尋找和取代子字串  |  傳回由**取代字串**取代特定**模式** (正規表示式) 的全部相符字串。  | 
|  取代分隔符號之間  |  傳回一個字串，其中包含由**取代字串**所取代的**左分隔符號**的第一個外觀和**右分隔符號**的最後一個外觀之間的子字串。若無相符項目，則不會取代任何項目。  | 
|  從位置取代  |  傳回一個字串，其中包含由**取代字串**所取代的**開始位置**和**開始位置**加**長度**之間的子字串。如果**開始位置**加**長度**大於取代字串的長度，則輸出包含**……**。  | 
|  轉換 regex 至缺失  |  若無效，則將字串轉換為 `None`，並傳回結果。有效性是使用**模式**中的規則表達式定義。  | 
|  按分隔符號分割字串  |  傳回來自輸入字串的字串陣列，由**分隔符號**分隔，具有**分隔數量上限** (選用)。分隔符號預設為空格。  | 

## 分隔資料
<a name="data-wrangler-transform-split-data"></a>

使用**分隔資料**轉換，將資料集分隔為兩個或三個資料集。例如，您可以將資料集分割成用於訓練模型的資料集，以及用來測試模型的資料集。您可以決定進入每個分割的資料集比例。例如，如果您要將一個資料集分割成兩個資料集，則訓練資料集可以有 80% 的資料，而測試資料集則有 20%。

將資料分割為三個資料集，讓您能夠建立訓練、驗證和測試資料集。您可以透過捨棄目標資料欄來查看模型在測試資料集上的效能。

您的使用案例會決定每個資料集取得的原始資料集數量，以及您用來分割資料的方法。例如，您可能想要使用分層分割，以確保目標欄中的觀測值在資料集之間的分佈相同。您可以使用下列分割轉換：
+ 隨機分割 – 每個分割都是原始資料集的隨機、非重疊範例。對於較大的資料集，使用隨機分割可能在計算上很昂貴，而且花費的時間比排序分割還要長。
+ 排序分割 – 根據觀察值的順序分割資料集。例如，對於 80/20 訓練測試分割，構成資料集 80% 的第一個觀察值將轉到訓練資料集。最後 20% 的觀察值進入測試資料集。排序分割可以有效地保持分割之間資料的現有順序。
+ 分層分割 – 分割資料集，以確保輸入資料欄中的觀察數目具有比例代表性。對於具有觀察值 1，1，1，1，1，1，2，2，2，2，2，2，2，2，3，3，3，3，3，3，3 的輸入欄，資料欄上的 80/20 分割代表大約 80% 的 1、80% 的 2 和 80% 的 3 進入訓練集。每種觀察類型的約 20% 進入測試集。
+ 按鍵分割 – 避免在大於一個的分割中發生具有相同索引鍵的資料。例如，如果您有一個包含 'customer\$1id' 欄的資料集，並且您將其用作索引鍵，則不會在超過一個的分割中存在任何客戶 ID。

分割資料之後，您可以對每個資料集套用其他轉換。對於大多數使用案例，它們不是必要的。

Data Wrangler 計算分割的比例以實現性能。您可以選擇錯誤閾值來設定分割的準確度。較低的錯誤閾值會更準確地反映您為分割指定的比例。如果您設定較高的錯誤閾值，您可以獲得較佳的效能，但準確度會降低。

若要完美分割資料，請將錯誤閾值設定為 0。您可以指定介於 0 到 1 之間的閾值，以獲得較佳效能。如果指定大於 1 的值，Data Wrangler 會將該值解譯為 1。

如果您的資料集中有 10000 個資料列，而且您指定了一個具備 0.001 錯誤值的 80/20 分割，您會得到接近下列其中一個結果的觀察值：
+ 在訓練集中為 8010 觀察值和在測試集中則為 1990
+ 在訓練集中為 7990 觀察值和在測試集中則為 2010

在前面的例子中的測試集觀察數目是介於 8010 和 7990 之間。

預設情況下，Data Wrangler 使用隨機種子來使分割可重現。您可以為種子指定不同的值，以建立不同的可重現的分割。

------
#### [ Randomized split ]

請使用下列程序，對您的資料集執行隨機分割。

若要隨機分割資料集，請執行以下操作

1. 選擇包含要分割之資料集節點旁邊的 **\$1**。

1. 選擇**新增轉換**。

1. 選擇**分割資料**。

1. (選用) 對於**分割**，指定每個分割的名稱和比例。比例必須總和為 1。

1. (選用) 選擇 **\$1** 以建立其他分割。

   1. 指定所有分割的名稱和比例。比例必須總和為 1。

1. (選用) 指定**錯誤閾值**的值，而非預設值。

1. (選用) 指定**隨機種子**的值。

1. 選擇**預覽**。

1. 選擇**新增**。

------
#### [ Ordered split ]

請使用下列程序，對資料集執行排序分割。

若要在資料集中排序分割，請執行下列動作。

1. 選擇包含要分割之資料集節點旁邊的 **\$1**。

1. 選擇**新增轉換**。

1. 在**轉換**中，選擇**排序分割**。

1. 選擇**分割資料**。

1. (選用) 對於**分割**，指定每個分割的名稱和比例。比例必須總和為 1。

1. (選用) 選擇 **\$1** 以建立其他分割。

   1. 指定所有分割的名稱和比例。比例必須總和為 1。

1. (選用) 指定**錯誤閾值**的值，而非預設值。

1. (選用) 對於 **輸入欄**，請指定含有數值的欄。使用資料欄的值來推斷每次分割中有哪些記錄。較小的值在一個分割中，而較大的值在其他分割中。

1. (選用) 選取**處理重複**，新增雜訊到重複的值中，並建立具有完全唯一值的資料集。

1. (選用) 指定**隨機種子**的值。

1. 選擇**預覽**。

1. 選擇**新增**。

------
#### [ Stratified split ]

使用下列程序，對資料集執行分層分割。

要在資料集中進行分層分割，請執行以下操作。

1. 選擇包含要分割之資料集節點旁邊的 **\$1**。

1. 選擇**新增轉換**。

1. 選擇**分割資料**。

1. 對於**轉換**，選擇**分層分割**。

1. (選用) 對於**分割**，指定每個分割的名稱和比例。比例必須總和為 1。

1. (選用) 選擇 **\$1** 以建立其他分割。

   1. 指定所有分割的名稱和比例。比例必須總和為 1。

1. 對於 **輸入欄**，請指定最多包含 100 個唯一值的欄。Data Wrangler 不能分層具有超過 100 個唯一值的欄。

1. (選用) 指定**錯誤閾值**的值，而非預設值。

1. (選用) 指定**隨機種子**的值，以指定不同的種子。

1. 選擇**預覽**。

1. 選擇**新增**。

------
#### [ Split by column keys ]

請使用下列程序，依資料集中的資料欄索引鍵分割。

若要依資料集中的資料欄索引鍵分割，請執行下列操作。

1. 選擇包含要分割之資料集節點旁邊的 **\$1**。

1. 選擇**新增轉換**。

1. 選擇**分割資料**。

1. 在**轉換**中，選擇**按索引鍵分割**。

1. (選用) 對於**分割**，指定每個分割的名稱和比例。比例必須總和為 1。

1. (選用) 選擇 **\$1** 以建立其他分割。

   1. 指定所有分割的名稱和比例。比例必須總和為 1。

1. 對於**索引鍵欄**，請指定含有您不想在兩個資料集中顯示值的資料欄。

1. (選用) 指定**錯誤閾值**的值，而非預設值。

1. 選擇**預覽**。

1. 選擇**新增**。

------

## 將值剖析為類型
<a name="data-wrangler-transform-cast-type"></a>

使用此轉換可將資料欄轉換為新類型。支援的 Data Wrangler 資料類型為：
+ Long
+ Float
+ Boolean
+ 日期格式為 DD-MM-yyyy，分別代表日、月和年。
+ String

## 驗證字串
<a name="data-wrangler-transform-validate-string"></a>

使用**驗證字串**轉換建立新資料欄，指出符合指定條件的文字資料列。例如，您可以使用**驗證字串**轉換來驗證字串只包含小寫字元。**驗證字串**支援下列轉換。

下列轉換包含在此轉換群組中。如果轉換輸出布林值，則 `True` 以 `1` 表示，而 `False` 以 `0` 表示。


| 名稱 | 函式 | 
| --- | --- | 
|  字串長度  |  如果字串長度等於指定的長度，則傳回 `True`。如果不是，則傳回 `False`。  | 
|  開頭為  |  如果字串以特定字首起始，則返回 `True`。如果不是，則傳回 `False`。  | 
|  Ends with  |  如果字串長度等於指定的長度，則傳回 `True`。如果不是，則傳回 `False`。  | 
|  為英數字元  |  如果一個字串只包含數字和字母，則傳回 `True`。如果不是，則傳回 `False`。  | 
|  為字母  |  如果一個字串只包含字母，則傳回 `True`。如果不是，則傳回 `False`。  | 
|  為數字  |  如果一個字串只包含數字，則傳回 `True`。如果不是，則傳回 `False`。  | 
|  為空間  |  如果一個字串只包含數字和字母，則傳回 `True`。如果不是，則傳回 `False`。  | 
|  為標題  |  如果一個字串包含任何空格，則傳回 `True`。如果不是，則傳回 `False`。  | 
|  為小寫  |  如果一個字串只包含小寫字母，則傳回 `True`。如果不是，則傳回 `False`。  | 
|  為大寫  |  如果一個字串只包含大寫字母，則傳回 `True`。如果不是，則傳回 `False`。  | 
|  為數值  |  如果一個字串只包含數字，則傳回 `True`。如果不是，則傳回 `False`。  | 
|  為小數  |  如果一個字串只包含小數，則傳回 `True`。如果不是，則傳回 `False`。  | 

## 將 JSON 資料解除巢狀化
<a name="data-wrangler-transform-flatten-column"></a>

如果您有 .csv 檔案，資料集中的值可能是 JSON 字串。同樣地，可能會在 Parquet 檔案或 JSON 文件的資料欄中有巢狀資料。

使用**平面化結構**運算子，將第一層索引鍵分隔為單獨的資料欄。第一層索引鍵是未嵌套在值中的索引鍵。

例如，您可能有一個資料集，其中有一個*人員*資料欄，其中包含儲存為 JSON 字串的每個人人口統計資訊。JSON 字串結構可能如下。

```
 "{"seq": 1,"name": {"first": "Nathaniel","last": "Ferguson"},"age": 59,"city": "Posbotno","state": "WV"}"
```

**平面化結構**運算子會將下列第一層索引鍵轉換為資料集中的其他資料欄：
+ seq
+ name
+ age
+ 城市
+ state

Data Wrangler 把索引鍵的值作為資料欄下的值。下列顯示 JSON 的資料欄名稱與值。

```
seq, name,                                    age, city, state
1, {"first": "Nathaniel","last": "Ferguson"}, 59, Posbotno, WV
```

對於包含 JSON 的資料集中的每個值，**平面化結構**運算子會為第一層級索引鍵建立資料欄。若要為巢狀索引鍵建立欄，請再次呼叫運算子。在前述範例中，呼叫運算子會建立資料欄：
+ name\$1first
+ name\$1last

下列範例顯示再次呼叫操作所產生的資料集。

```
seq, name,                                    age, city, state, name_first, name_last
1, {"first": "Nathaniel","last": "Ferguson"}, 59, Posbotno, WV, Nathaniel, Ferguson
```

選擇**要平面化的索引鍵**，以指定要擷取為單獨欄的第一層級索引鍵。如果您未指定任何索引鍵，Data Wrangler 預設會擷取所有索引鍵。

## 爆炸陣列
<a name="data-wrangler-transform-explode-array"></a>

使用 **爆炸陣列**將陣列的值展開為單獨的輸出資料列。例如，該作業可以獲取陣列 [[1, 2, 3,], [4, 5, 6], [7, 8, 9]] 中的每個值，並建立具有以下列的新資料欄：

```
                [1, 2, 3]
                [4, 5, 6]
                [7, 8, 9]
```

Data Wrangler 將新資料欄命名為 input\$1column\$1name\$1flatten。

您可以多次呼叫 **Explode 陣列**作業，以將陣列的巢狀值取至不同的輸出資料欄。下列範例顯示在具有巢狀陣列的資料集上多次呼叫作業的結果。

將嵌套陣列的值置入單獨的資料欄中


| id | 陣列 | id | array\$1items | id | array\$1items\$1items | 
| --- | --- | --- | --- | --- | --- | 
| 1 | [ [cat, dog], [bat, frog] ] | 1 | [貓, 狗] | 1 | cat | 
| 2 |  [[rose, petunia], [lily, daisy]]  | 1 | [蝙蝠, 青蛙] | 1 | 狗 | 
|  |  | 2 | [玫瑰, 矮牽牛] | 1 | bat | 
|  |  | 2 | [百合, 雛菊] | 1 | 青蛙 | 
|  |  |  | 2 | 2 | 玫瑰 | 
|  |  |  | 2 | 2 | 矮牽牛 | 
|  |  |  | 2 | 2 | 百合 | 
|  |  |  | 2 | 2 | 雛菊 | 

## 轉換影像資料
<a name="data-wrangler-transform-image"></a>

使用 Data Wrangler 匯入和轉換您用於機器學習 (ML) 管道的影像。準備好影像資料之後，您可以將其從 Data Wrangler 流程匯出至機器學習 (ML) 管道。

您可以使用此處提供的資訊熟悉 Data Wrangler 中影像資料的匯入和轉換。Data Wrangler 使用 OpenCV 導入影像。如需有關支援的影像格式詳細資訊，請參閱[影像檔案讀取和寫入](https://docs.opencv.org/3.4/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56)。

熟悉轉換影像資料的概念之後，請參閱下列教學課程[使用 Amazon SageMaker Data Wrangler 預備影像資料](https://aws.amazon.com/blogs/machine-learning/prepare-image-data-with-amazon-sagemaker-data-wrangler/)。

以下產業和使用案例是將機器學習應用於已轉換影像資料時可能會很有用的範例：
+ 製造 – 從組裝線識別物品中的瑕疵
+ 食物 – 識別變質或腐爛的食物
+ 藥物 – 識別組織中的病變

當您在 Data Wrangler 中使用影像資料時，會經過下列程序：

1. 匯入 – 選擇 Amazon S3 儲存貯體中包含影像的目錄以選取影像。

1. 轉換 – 使用內建轉換為您的機器學習管道預備影像。

1. 匯出 – 將已轉換的影像匯出至可從管道存取的位置。

請使用下列程序來匯入您的影像資料。

**若要匯入影像資料**

1. 導覽至**建立連線**頁面。

1. 選擇 **Amazon S3**。

1. 指定包含影像資料的 Amazon S3 檔案路徑。

1. 對於**檔案類型**，選擇**影像**。

1. (選用) 選擇**匯入巢狀目錄**以從多個 Amazon S3 路徑匯入影像。

1. 選擇**匯入**。

Data Wrangler 使用開放源程式碼 [imgaug](https://imgaug.readthedocs.io/en/latest/) 程式庫進行內建的映像轉換。您可以使用下列內建值轉換：
+ **ResizeImage**
+ **EnhanceImage**
+ **CorruptImage**
+ **SplitImage**
+ **DropCorruptedImages**
+ **DropImageDuplicates**
+ **Brightness**
+ **ColorChannels**
+ **Grayscale**
+ **Rotate**

使用下列程序，無須撰寫程式碼即可轉換映像。

**在不撰寫程式碼的情況下轉換映像**

1. 在 Data Wrangler 流程中，選擇代表您匯入映像節點旁邊的 **\$1**。

1. 選擇**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇轉換並加以設定。

1. 選擇**預覽**。

1. 選擇**新增**。

除了使用 Data Wrangler 提供的轉換之外，您也可以使用自己的自訂程式碼片段。如需使用自訂程式碼片段的詳細資訊，請參閱[自訂轉換](#data-wrangler-transform-custom)。您可以在程式碼片段中匯入 OpenCV 和 imgaug 程式庫，並使用與它們相關聯的轉換。以下是偵測映像邊緣的程式碼片段範例。

```
# A table with your image data is stored in the `df` variable
import cv2
import numpy as np
from pyspark.sql.functions import column

from sagemaker_dataprep.compute.operators.transforms.image.constants import DEFAULT_IMAGE_COLUMN, IMAGE_COLUMN_TYPE
from sagemaker_dataprep.compute.operators.transforms.image.decorators import BasicImageOperationDecorator, PandasUDFOperationDecorator


@BasicImageOperationDecorator
def my_transform(image: np.ndarray) -> np.ndarray:
  # To use the code snippet on your image data, modify the following lines within the function
    HYST_THRLD_1, HYST_THRLD_2 = 100, 200
    edges = cv2.Canny(image,HYST_THRLD_1,HYST_THRLD_2)
    return edges
    

@PandasUDFOperationDecorator(IMAGE_COLUMN_TYPE)
def custom_image_udf(image_row):
    return my_transform(image_row)
    

df = df.withColumn(DEFAULT_IMAGE_COLUMN, custom_image_udf(column(DEFAULT_IMAGE_COLUMN)))
```

在 Data Wrangler 流程中套用轉換時，Data Wrangler 只會將它們套用至資料集中的映像範例。為了最佳化您使用應用程式的體驗，Data Wrangler 不會將轉換套用於您的所有映像。

若要將轉換套用至所有映像，請將 Data Wrangler 流程匯出到 Amazon S3 位置。您可以使用已在訓練或推論管道中匯出的映像。使用目的地節點或 Jupyter 筆記本匯出資料。您可以存取任一種從 Data Wrangler 流程匯出資料的方法。如需這些方法的用法詳細資訊，請參閱[匯出至 Amazon S3](data-wrangler-data-export.md#data-wrangler-data-export-s3)。

## 篩選資料
<a name="data-wrangler-transform-filter-data"></a>

使用 Data Wrangler 篩選資料欄中的資料。當您篩選資料欄中的資料時，請指定下列欄位：
+ **欄名稱** – 您用來篩選資料的資料欄名稱。
+ **條件** – 您要套用至資料欄中值的篩選類型。
+ **值** – 您要套用篩選條件的資料欄中的值或類別。

您可以依照下列條件篩選：
+ **=** – 傳回與您指定的值或類別相符的值。
+ **\$1=** – 傳回與您指定的值或類別不相符的值。
+ **>=** – 對於**長**或**浮動**資料，篩選大於或等於您指定值的值。
+ **<=** – 對於**長**或**浮動**資料，篩選小於或等於您指定值的值。
+ **>** – 對於**長**或**浮動**資料，篩選大於您指定值的值。
+ **<** – 對於**長**或**浮動**資料，篩選小於您指定值的值。

對於具有類別 `male` 和 `female` 的資料欄，您可以過濾掉所有 `male` 值。您也可以篩選所有 `female` 值。因為資料欄中只有 `male` 和 `female` 值，所以篩選條件會傳回只有 `female` 值的資料欄。

您也可以新增多個篩選條件。篩選條件可套用至多個資料欄或同一個資料欄。例如，如果您要建立的資料欄只有特定範圍內的值，您可以新增兩個不同的篩選條件。一個篩選條件指定資料欄的值必須大於您提供的值。另一個篩選條件指定資料欄的值必須小於您提供的值。

使用下列程序，將篩選條件轉換新增至您的資料。

**若要篩選資料**

1. 在 Data Wrangler 流程中，選擇包含您要篩選資料節點旁邊的 **\$1**。

1. 選擇**新增轉換**。

1. 選擇**新增步驟**。

1. 選擇**篩選資料**。

1. 為下列欄位：
   + **資料欄名稱** – 您要篩選的資料欄。
   + **條件** – 篩選條件。
   + **值** – 您要套用篩選條件的資料欄中的值或類別。

1. (選用) 選擇您建立篩選條件後的 **\$1**。

1. 設定篩選條件。

1. 選擇**預覽**。

1. 選擇**新增**。

## Amazon Personalize 的地圖資料欄
<a name="data-wrangler-transform-personalize"></a>

Data Wrangler 與 Amazon Personalize 整合，這是一種全受管的機器學習服務，可產生項目建議和使用者區段。您可以使用 **Amazon Personalize 的地圖欄**轉換，將您的資料轉換為 Amazon Personalize 可解釋的格式。如需有關 Amazon Personalize 特定轉換的詳細資訊，請參閱[使用 Amazon SageMaker Data Wrangler 匯入資料](https://docs.aws.amazon.com/personalize/latest/dg/preparing-importing-with-data-wrangler.html#dw-transform-data)。如需有關 Amazon Personalize 的更多資訊，請參閱[什麼是 Amazon Personalize？](https://docs.aws.amazon.com/personalize/latest/dg/what-is-personalize.html)

# 分析與視覺化
<a name="data-wrangler-analyses"></a>

Amazon SageMaker Data Wrangler 包含內建分析，只要按幾下滑鼠，即可協助您產生視覺化和資料分析。您還可以使用自己的程式碼建立自訂分析。

在資料流程中選取一個步驟，然後選擇**新增分析**，藉此將一項分析新增至資料框。若要存取您已建立的分析，請選取包含分析的步驟，然後選取分析。

所有分析資料都是使用您資料集的 100,000 列產生的。

您可以將下列分析新增至資料框：
+ 資料視覺化，包括長條圖和散佈圖。
+ 資料集的快速摘要，包括項目數量、最小值和最大值 (針對數值資料)，以及最常用和最不常用的類別 (針對分類資料)。
+ 資料集的快速模型，可用來產生每個功能的重要性分數。
+ 目標洩漏報告，可用於確定一個或多個功能是否與目標功能有密切關聯。
+ 使用您自己的程式碼自訂視覺化。

請參閱以下各節，進一步了解這些選項。

## 直方圖
<a name="data-wrangler-visualize-histogram"></a>

使用長條圖來查看特定功能的功能值計數。您可以使用**顏色顯示依據**選項，檢查功能之間的關係。例如，以下長條圖將 2009-2019 年 Amazon 上最暢銷書籍的使用者評分，按類型著色製成分佈圖表。

![\[Data Wrangler 主控台中的範例直方圖。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/histogram.png)


您可以使用**構面顯示依據**功能，為另一欄中的每個值，建立一欄的長條圖。例如，下圖顯示 Amazon 上暢銷書籍的使用者評論之長條圖 (按年份劃分)。

![\[Data Wrangler 主控台中的範例直方圖。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/review_by_year.png)


## 散佈圖
<a name="data-wrangler-visualize-scatter-plot"></a>

使用**散佈圖**功能檢查功能之間的關係。若要建立散佈圖，請選取要在 **X 軸**和 **Y 軸**上繪製的功能。這兩個資料欄都必須是數字類型的資料欄。

您可以按附加資料欄為散佈圖著色。例如，以下範例顯示了一個散佈圖，比較 2009 年至 2019 年之間 Amazon 上最暢銷書籍的使用者評分與評論數量。散佈圖按書籍類別著色。

![\[Data Wrangler 主控台中的範例散佈圖。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/scatter-plot.png)


此外，您可以按功能構面劃分散佈圖。例如，以下影像顯示相同評論與使用者評分的散佈圖範例，並依年份劃分。

![\[Data Wrangler 主控台中的範例面向散佈圖。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/scatter-plot-facet.png)


## 資料表摘要
<a name="data-wrangler-table-summary"></a>

使用**資料表摘要**分析來快速總結資料。

對於包含數值資料的資料欄，包括對數和浮點資料，表格摘要裡會告訴您每欄的條目數 (count)、最小值 (min)、最大值 (max)、平均值 (mean)和標準差 (stddev)。

對於包含非數值資料的資料欄，像是字串、布林值或日期/時間資料的，表格摘要會告訴您每欄的項目數 (計數)、最少出現的值 (最小值) 和最常出現的值 (最大值)。

## 快速模型
<a name="data-wrangler-quick-model"></a>

使用**快速模型**視覺化可快速評估您的資料，並為每項功能產生重要性分數。[功能重要性評分](http://spark.apache.org/docs/2.1.0/api/python/pyspark.ml.html#pyspark.ml.classification.DecisionTreeClassificationModel.featureImportances)評分代表該功能在預測目標標籤方面的有用程度。功能重要性評分介於 [0, 1] 之間，較高的數字表示該功能對整個資料集更為重要。在快速模型圖表的頂部，有一個模型分數。分類問題顯示 F1 評分。迴歸問題具有均方錯誤 (MSE) 評分。

建立快速模型圖表時，您可以選取要評估的資料集，以及要比較功能重要性的目標標籤。Data Wrangler 會進行以下項目：
+ 推論所選資料集中，目標標籤和每項功能的資料類型。
+ 決定問題類型。基於標籤欄中的數字相異值，Data Wrangler 判斷這是迴歸還是分類問題類型。Data Wrangler 設置一個分類閾值為 100。如果標籤欄中有超過 100 個相異值，則 Data Wrangler 會將其歸類為迴歸問題；沒有的話，會歸類為分類問題。
+ 預先處理功能和訓練用標籤資料。使用的演算法需要將功能編碼成向量類型，並將標籤編碼成雙精度浮點數類型。
+ 使用 70％ 資料訓練一組隨機森林演算法。Spark 的[RandomForestRegressor](https://spark.apache.org/docs/latest/ml-classification-regression.html#random-forest-regression)用於訓練迴歸問題的模型。[RandomForestClassifier](https://spark.apache.org/docs/latest/ml-classification-regression.html#random-forest-classifier)用於訓練分類問題的模型。
+ 使用剩餘 30% 的資料評估隨機森林模型。Data Wrangler 使用 F1 分數評估分類模型，並使用 MSE 分數評估迴歸模型。
+ 使用 Gini 重要性方法計算每個功能的功能重要性。

下列影像展示快速模型功能的使用者介面。

![\[Data Wrangler 主控台中快速模型功能的範例 UI。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/quick-model.png)


## 目標洩漏
<a name="data-wrangler-analysis-target-leakage"></a>

當機器學習訓練資料集中存在與目標標籤密切關聯的資料，但在實際資料中無法使用時，就會發生目標洩漏。例如，您的資料集中可能有一個資料欄，作為您要使用模型預測資料欄的代理。

使用**目標洩漏**分析時，請指定下列項目：
+ **目標**：這是您希望機器學習 (ML) 模型能夠進行預測的功能。
+ **問題類型**：這是您正在使用的機器學習 (ML) 問題類型。問題類型可以是**分類**或**迴歸**。
+  (選用) **最大功能數**：這是視覺化中顯示的功能數量上限，顯示依據其目標洩漏風險進行排序。

在分類問題中，目標洩漏分析使用接收者操作特性下的區域，或每欄使用 AUC-ROC 曲線，最多到**功能最大值**。迴歸問題中，它使用判定係數或 R2 指標。

AUC-ROC 曲線提供了一個預測指標，在最多約 1000 個資料列的樣本中，針對每個資料欄使用交叉驗證個別運算。分數為 1 代表完美的預測能力，這通常表示目標洩漏。分數為 0.5 或更低，表示資料欄上的資訊本身無法提供任何有用的預測目標資訊。雖然資料欄本身可能不具有效資訊，但在與其他功能串聯使用來預測目標很有用，但分數較低可能表示該功能是多餘的。

例如，下列影像顯示了糖尿病分類問題的目標洩漏報告，即預測一個人是否患有糖尿病。AUC-ROC 曲線用來計算五個功能的預測能力，並確定所有功能都是安全的，不會發生目標洩漏。

![\[Data Wrangler 主控台中的範例目標洩漏報告。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/target-leakage.png)


## 多共線性
<a name="data-wrangler-multicollinearity"></a>

多共線性是兩個或多個預測器變數彼此相關的情況。預測器變數是資料集內，用來預測目標變數的功能。當您具有多重共線性時，預測器變數不僅可以預測目標變數，還可以預測彼此。

您可以使用**變異數膨脹因子 (VIF)**、**主成份分析 (PCA)**或**套索功能選擇**，以測量資料中多重共線性。如需更多資訊，請參閱下列內容。

------
#### [ Variance Inflation Factor (VIF) ]

變異數膨脹因子 (VIF) 是對變數對之間共線性的測量方法。Data Wrangler 會傳回 VIF 評分，以衡量變數彼此相關的程度。VIF 分數是大於或等於 1 的正數。

分數為 1 表示變數與其他變數不相關。分數大於 1 表示相關性較高。

理論上，您可以獲得值為無限大的 VIF 分數。Data Wrangler 的評分上限為 50。如果您的 VIF 分數大於 50，Data Wrangler會將分數設定為 50。

您可以使用下列指南來解讀 VIF 評分：
+ VIF 分數小於或等於 5，表示變數與其他變數適度相關。
+ VIF 分數大於或等於 5，表示變數與其他變數高度相關。

------
#### [ Principle Component Analysis (PCA) ]

主成份分析 (PCA) 測量功能空間中沿不同方向的資料變異。功能空間包含了您用來預測資料集中，目標變數的所有預測器變數。

例如，如果您試圖預測在 *RMS 鐵達尼號*撞上冰山後仍存活下來的人，您的功能空間可以包括乘客的年齡、性別以及他們支付的票價。

從功能空間中，PCA 會產生變異數的排序清單。這些變異數也稱為奇異值。變異數清單中的值大於或等於 0。我們可以使用它們來確定資料中有多少的多重共線性。

當數字大致一致時，資料具有極少數多重共線性的執行個體。當值之間存在很多變異性時，就有許多的多重共線性的執行個體。在執行 PCA 之前，Data Wrangler 將每個功能標準化，使其平均值為 0，標準偏差為 1。

**注意**  
在這種情況下，PCA 也可以稱為奇異值分解 (SVD)。

------
#### [ Lasso feature selection ]

套索功能選擇使用 L1 正則化技術，只在資料集中包含最多的預測功能。

不論是分類或迴歸，正則化技術都會為每個功能產生一個係數。係數的絕對值為功能提供重要性分數。較高的重要性分數表示它對目標變數的預測性較高。一種常見的功能選擇方法，是使用所有非零套索係數的功能。

------

## 偵測時間序列資料中的異常狀況
<a name="data-wrangler-time-series-anomaly-detection"></a>

您可以使用異常偵測視覺化來查看時間序列資料中的極端值。要了解決異常狀況的原因，您需要了解我們將時間序列分解為預測項和錯誤項。我們將時間序列的季節性和趨勢視為預測項。我們將殘差視為錯誤項。

錯誤項的話，您可以指定閾值，作為殘差可偏離平均值的標準差數，以便將其視為異常狀況。例如，您可以將閾值指定為 3 個標準差。任何超過 3 個偏離平均值標準差的殘差都是異常狀況。

您可以使用下列程序來執行**異常偵測**分析。

1. 開啟 Data Wrangler 資料流程。

1. 在資料流程中的**資料類型**下，選擇 **\$1**，然後選取**新增分析**。

1. 在**分析類型**部分，選擇**時間序列**。

1. 在**視覺化**部分，選擇**異常偵測**。

1. 在**異常狀況閾值**部分，選擇閾值以判定異常的值。

1. 選擇**預覽**以產生分析的預覽。

1. 選擇**新增**，將轉換作業新增至 Data Wrangler 資料流程。

## 時間序列資料中的季節趨勢分解
<a name="data-wrangler-seasonal-trend-decomposition"></a>

您可以使用季節性趨勢分解視覺化，來判斷時間序列資料中是否有季節性。我們使用 STL (使用 LOESS 分解季節趨勢) 方法進行分解。我們將時間序列分解為季節性、趨勢和殘差部分。該趨勢反映了該系列的長期進展。季節性部分是在一段時間內反覆出現的訊號。從時間序列中移除趨勢和季節性部分後，就是殘差部分。

您可以使用下列程序來執行**季節性-趨勢分解**分析。

1. 開啟 Data Wrangler 資料流程。

1. 在資料流程中的**資料類型**下，選擇 **\$1**，然後選取**新增分析**。

1. 在**分析類型**部分，選擇**時間序列**。

1. 在**視覺化**中，選擇**季節性-趨勢分解**。

1. 在**異常狀況閾值**部分，選擇閾值以判定異常的值。

1. 選擇**預覽**以產生分析的預覽。

1. 選擇**新增**，將轉換作業新增至 Data Wrangler 資料流程。

## 偏差報告
<a name="data-wrangler-bias-report"></a>

您可以使用 Data Wrangler 中的偏差報告，發現資料中的潛在偏差。若要產生偏差報告，您必須指定要預測的目標欄或**標籤**以及一個**構面**，或是您要檢查偏差的欄。

**標籤**：關於您希望模型進行預測的功能。例如，如果您要預測客戶轉換率，則可以選取包含客戶是否已下訂單之資料的資訊欄。您還必須指定此功能是標籤還是閾值。如果您指定標籤，則必須指定*正向結果*在資料中的模樣。在客戶轉換率範例中，正向結果可以是訂單欄中的 1，代表客戶在過去三個月內下過訂單的正向結果。如果您指定閾值，則必須指定正向結果的下限。例如，如果您的客戶訂單欄包含去年下達的訂單數量，您可能需要指定 1。

**構面**：您要檢查偏差的資料欄。例如，如果您試圖預測客戶轉換率，則您的構面可能是客戶的年齡。您可以選擇此構面，因為您認為資料偏向於特定年齡群組。您必須確認構面是以值還是閾值來進行測量。例如，如果您想要檢查一或多個特定年齡，請選取**值**並指定這些年齡。如果您想要查看年齡群組，請選取**閾值**並指定您要檢查的年齡閾值。

選取功能和標籤後，您可以選取要計算的偏差指標類型。

如需進一步了解，請參閱[透過訓練前資料產生偏差報告](https://docs.aws.amazon.com/sagemaker/latest/dg/data-bias-reports.html)。

## 建立自訂視覺化
<a name="data-wrangler-visualize-custom"></a>

您可以將分析新增至 Data Wrangler 流程，以建立自訂視覺化。您的資料集和已套用的所有轉換，都可以作為[Pandas DataFrame](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)使用。Data Wrangler 使用`df`變數來儲存資料框。您可以透過呼叫變數來存取資料框。

您必須提供輸出變數`chart`，才能儲存 [Altair](https://altair-viz.github.io/) 輸出圖表。例如，您可以透過下列程式碼區塊，使用 Titanic 資料集建立自訂長條圖。

```
import altair as alt
df = df.iloc[:30]
df = df.rename(columns={"Age": "value"})
df = df.assign(count=df.groupby('value').value.transform('count'))
df = df[["value", "count"]]
base = alt.Chart(df)
bar = base.mark_bar().encode(x=alt.X('value', bin=True, axis=None), y=alt.Y('count'))
rule = base.mark_rule(color='red').encode(
    x='mean(value):Q',
    size=alt.value(5))
chart = bar + rule
```

**若要建立自訂視覺化：**

1. 在包含您想要視覺化之轉換的節點旁邊，選擇 **\$1**。

1. 選擇 **新增分析**。

1. **分析類型**部分，請選擇**自訂視覺化**。

1. **分析名稱**部分，指定一個名稱。

1. 在程式碼方框中輸入您的代碼。

1. 選擇**預覽**以預覽視覺化。

1. 選擇**儲存**以新增視覺化。

![\[如何在 Data Wrangler 主控台中新增視覺化的範例。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/custom-visualization.png)


如果您不知道如何在 Python 使用 Altair 視覺化套裝元件，可以使用自訂程式碼片段來協助您入門。

Data Wrangler 有一個可搜尋的視覺化程式碼片段集合。若要使用視覺化程式碼片段，請選擇**搜尋範例程式碼片段**，然後在搜尋列中指定查詢。

下面的範例使用**量化散點圖**程式碼片段。它繪製出一份二維的長條圖。

這些程式碼片段有註解，可協助您了解您需要對程式碼進行的變更。您通常需要在程式碼中指定資料集的資料欄名稱。

```
import altair as alt

# Specify the number of top rows for plotting
rows_number = 1000
df = df.head(rows_number)  
# You can also choose bottom rows or randomly sampled rows
# df = df.tail(rows_number)
# df = df.sample(rows_number)


chart = (
    alt.Chart(df)
    .mark_circle()
    .encode(
        # Specify the column names for binning and number of bins for X and Y axis
        x=alt.X("col1:Q", bin=alt.Bin(maxbins=20)),
        y=alt.Y("col2:Q", bin=alt.Bin(maxbins=20)),
        size="count()",
    )
)

# :Q specifies that label column has quantitative type.
# For more details on Altair typing refer to
# https://altair-viz.github.io/user_guide/encoding.html#encoding-data-types
```

# 重複使用不同資料集的資料流量
<a name="data-wrangler-parameterize"></a>

您可以在 Amazon Simple Storage Service (Amazon S3) 資料來源建立和使用參數。參數是您儲存在 Data Wrangler 流程中的變數。其值可以是資料來源 Amazon S3 路徑的任何部分。使用參數可快速變更要匯入至 Data Wrangler 流程或匯出至處理任務的資料。您還可以使用參數來選取和匯入資料的特定子集。

建立 Data Wrangler 流程之後，您可以用已轉換的資料訓練模型。對於具有相同結構描述的資料集，您可以使用參數，在不同的資料集上套用相同的轉換，並訓練不同的模型。您可以透過新資料集來對模型執行推論，也可以使用它們來重新訓練模型。

一般而言，參數有下列屬性：
+ 名稱—您為參數指定的名稱
+ 類型—參數代表的值的類型
+ 預設值—未指定新值時的參數的值

**注意**  
日期時間參數具有時間範圍屬性，作為預設值。

Data Wrangler 使用大括號 `{{}}` 來表示某參數正在 Amazon S3 路徑中被使用。例如，您可以有一個 URL，如 `s3://amzn-s3-demo-bucket1/{{example_parameter_name}}/example-dataset.csv`。

您在編輯已匯入的 Amazon S3 資料來源時建立參數。您可以將檔案路徑的任何部分設定為參數值。您可以將參數值設定為一個值或一個陣列。以下是 Data Wrangler 流程中可用的參數值類型：
+ Number
+ String
+ 模式
+ 日期時間

**注意**  
您無法在 Amazon S3 路徑中，為儲存貯體名稱建立模式參數或日期時間參數。

您必須將數字參數的預設值設定為數字。您可以在編輯參數或啟動處理任務時，將參數的值變更為不同的數字。例如，在 S3 路徑中，`s3://amzn-s3-demo-bucket/example-prefix/example-file-1.csv`，您可以在 `1` 之處建立名為 `number_parameter` 的數字參數。您的 S3 路徑現在會顯示為 `s3://amzn-s3-demo-bucket/example-prefix/example-file-{{number_parameter}}.csv`。路徑會繼續指向 `example-file-1.csv` 資料集，直到您變更參數的值為止。如果您將 `number_parameter` 的值變更為 `2`，現在路徑為 `s3://amzn-s3-demo-bucket/example-prefix/example-file-2.csv`。如果已將檔案上傳到該 Amazon S3 位置，則您可以可以將 `example-file-2.csv` 匯入至 Data Wrangler。

字串參數會儲存字串為其預設值。例如，在 S3 路徑中，`s3://amzn-s3-demo-bucket/example-prefix/example-file-1.csv`，您可以在檔案名稱 `example-file-1.csv` 之處建立名為 `string_parameter` 的字串參數。路徑現在會顯示為 `s3://amzn-s3-demo-bucket/example-prefix/{{string_parameter}}`。它會繼續符合 `s3://amzn-s3-demo-bucket/example-prefix/example-file-1.csv`，直到您變更參數的值為止。

您可以使用整個 Amazon S3 路徑建立字串參數，而不是將檔案名稱指定為字串參數。您可以在字串參數中，從任何 Amazon S3 位置指定資料集。

模式參數會將規則運算式 (Python REGEX) 字串儲存為其預設值。您可以使用模式參數同時匯入多個資料檔案。若要一次匯入多個物件，請指定與要匯入之 Amazon S3 物件符合的參數值。

您還可以為下列資料集建立模式參數：
+ s3://amzn-s3-demo-bucket1/example-prefix/example-file-1.csv
+ s3://amzn-s3-demo-bucket1/example-prefix/example-file-2.csv
+ s3://amzn-s3-demo-bucket1/example-prefix/example-file-10.csv
+ s3://amzn-s3-demo-bucket/example-prefix/example-file-0123.csv

對於 `s3://amzn-s3-demo-bucket1/example-prefix/example-file-1.csv`，您可以在 `1` 的位置建立模式參數，並將參數的預設值設定為 `\d+`。`\d+` REGEX 字串符合任何一個或多個小數數字。如果您建立名為 `pattern_parameter` 的模式參數，您的 S3 路徑會顯示為 `s3://amzn-s3-demo-bucket1/example-prefix/example-file-{{pattern_parameter}}.csv`。

您還可以使用模式參數來比對您的儲存貯體中的所有 CSV 物件。若要符合儲存貯體中的所有物件，請使用預設值 `.*` 建立模式參數，並將路徑設定為 `s3://amzn-s3-demo-bucket/{{pattern_parameter}}.csv`。`.*` 字元符合路徑中的任何字串字元。

`s3://amzn-s3-demo-bucket/{{pattern_parameter}}.csv` 路徑可以符合下列資料集。
+ `example-file-1.csv`
+ `other-example-file.csv`
+ `example-file-a.csv`

日期時間參數以下列的資訊儲存格式：
+ Amazon S3 路徑內部剖析字串的格式。
+ 一個相對時間的範圍，用於限制符合的日期時間值

例如，在 Amazon S3 檔案路徑中，`s3://amzn-s3-demo-bucket/2020/01/01/example-dataset.csv`，2020/01/01 代表格式為 `year/month/day` 的日期時間。您可以將參數的時間範圍設定為間隔，例如 `1 years` 或 `24 hours`。`1 years` 的間隔會比對所有 S3 路徑的日期時間，位於介於目前時間及恰恰一年之前者。目前時間是您開始匯出對資料所做的轉換的時間。如需匯出資料的更多相關資訊，請參閱[Export (匯出)](data-wrangler-data-export.md)。如果目前的日期是 2022/01/01，而時間範圍是 `1 years`，S3 路徑就會符合下列資料集：
+ s3://amzn-s3-demo-bucket/2021/01/01/example-dataset.csv
+ s3://amzn-s3-demo-bucket/2021/06/30/example-dataset.csv
+ s3://amzn-s3-demo-bucket/2021/12/31/example-dataset.csv

在相對時間範圍內的日期時間值，會隨著時間的推移而改變。落在相對時間範圍內的 S3 路徑，也可能有所不同。

對於 Amazon S3 檔案路徑 `s3://amzn-s3-demo-bucket1/20200101/example-dataset.csv`，`20220101` 是可以成為日期時間參數的路徑範例。

若要檢視您在 Data Wrangler 流程中建立的所有參數的表格，請選擇包含 Amazon S3 路徑之文字方塊右側的 `\$1\$1\$1\$1`。如果不再需要已建立的參數，您可以加以編輯或刪除。若要編輯或刪除參數，請選擇參數右側的圖示。

**重要**  
刪除參數之前，請確定您尚未在 Data Wrangler 流程中的任何位置使用該參數。刪除仍在流程中的參數會導致錯誤。

您可以為 Data Wrangler 流程的任何步驟建立參數。您可以編輯或刪除您已建立的參數。如果您要套用轉換至與您的使用案例不再相關的資料，您可以修改參數的值。修改參數的值會變更您要匯入的資料。

下列各節提供有關使用參數的其他範例和一般指引。您可以透過這些章節來瞭解最適合您的參數。

**注意**  
下列各節包含使用 Data Wrangler 介面覆寫參數和建立處理任務的程序。  
您還可以使用下列程序覆寫參數。  
若要匯出 Data Wrangler 流程並覆寫參數的值，請執行下列動作。  
選擇欲匯出的節點旁的 **\$1** 號。
選擇 **匯出至**。
選擇您要匯出資料的位置。
在 `parameter_overrides` 底下，為您建立的參數指定不同的值。
執行 Jupyter 筆記本。

## 使用模式將 Data Wrangler 流程套用至多個檔案
<a name="data-wrangler-pattern-parameters"></a>

您可以使用參數將 Data Wrangler 流程中的轉換套用至符合 Amazon S3 URI 路徑中某個模式的不同檔案。這有助於非常明確地指定 S3 儲存貯體中要進行轉換的檔案。例如，您可能有一個資料集路徑為 `s3://amzn-s3-demo-bucket1/example-prefix-0/example-prefix-1/example-prefix-2/example-dataset.csv`。名為 `example-dataset.csv` 的不同的資料集儲存在許多不同的範例字首下。字首也可能是循序編號。您可以為 Amazon S3 URI 中的數字建立模式。模式參數使用 REGEX 來選取與表達式的模式匹配的任意數量檔案。以下是可能有幫助的 REGEX 模式：
+ `.*` — 符合零個或多個任意字元，除了換行字元
+ `.+` — 符合一個或多個任意字元，不包括換行字元
+ `\d+` — 符合一個或多個任意小數數字
+ `\w+` — 符合一個或多個任意字母數字字元
+ `[abc-_]{2,4}` — 符合由兩個、三個或四個字元的字串，由一組括號內的字元構成
+ `abc|def` — 符合一個字串或另一個字串。例如，該作業符合 `abc` 或 `def`

您可以使用具有 `\d+` 的值的單一參數，取代下列路徑中的每個數字。
+ `s3://amzn-s3-demo-bucket1/example-prefix-3/example-prefix-4/example-prefix-5/example-dataset.csv`
+ `s3://amzn-s3-demo-bucket1/example-prefix-8/example-prefix-12/example-prefix-13/example-dataset.csv`
+ `s3://amzn-s3-demo-bucket1/example-prefix-4/example-prefix-9/example-prefix-137/example-dataset.csv`

下列程序會為具有 `s3://amzn-s3-demo-bucket1/example-prefix-0/example-prefix-1/example-prefix-2/example-dataset.csv` 路徑的資料集建立模式參數。

若要建立模式參數，請執行下列步驟。

1. 在您已匯入的資料集旁邊，選擇 **編輯資料集**。

1. 強調顯示 `example-prefix-0` 中的 `0`。

1. 為下列欄位指定數值：
   + **名稱**－參數的名稱
   + **類型**－**模式**
   + **值**—**\$1d\$1** 對應於一個或多個數字的規則表達式

1. 選擇 **建立**。

1. 使用參數取代 S3 URI 路徑中的 `1` 和 `2`。路徑應具有下列格式：`s3://amzn-s3-demo-bucket1/example-prefix-{{example_parameter_name}}/example-prefix-{{example_parameter_name}}/example-prefix-{{example_parameter_name}}/example-dataset.csv`

以下是建立模式參數的一般程序。

1. 導覽至您的 Data Wrangler 流程。

1. 在您已匯入的資料集旁邊，選擇 **編輯資料集**。

1. 強調顯示您用作模式參數的值的 URI 部分。

1. 選擇**建立自訂參數**。

1. 為下列欄位指定數值：
   + **名稱**－參數的名稱
   + **類型**－**模式**
   + **值**—包含您要儲存之模式的規則運算式。

1. 選擇**建立**。

## 使用數值將 Data Wrangler 流程套用至檔案
<a name="data-wrangler-numeric-parameters"></a>

您可以使用參數，將 Data Wrangler 流程中的轉換套用至具有類似路徑的不同檔案。例如，您可能有一個資料集路徑為 `s3://amzn-s3-demo-bucket1/example-prefix-0/example-prefix-1/example-prefix-2/example-dataset.csv`。

您可以將 Data Wrangler 流程中的轉換套用至 `example-prefix-1` 下的資料集。您可能想要將相同的轉換套用至 `example-prefix-10` 或 `example-prefix-20` 下的 `example-dataset.csv`。

您可以建立儲存值 `1` 的參數。如果要將轉換套用至不同的資料集，您可以建立處理任務，以不同值取代參數的值。當您想要將 Data Wrangler 流程的轉換套用至新資料時，參數會充當預留位置，以供您變更。您可以在建立 Data Wrangler 處理任務時覆寫參數的值，將 Data Wrangler 流程中的轉換套用至不同的資料集。

請使用下列程序為 `s3://amzn-s3-demo-bucket1/example-prefix-0/example-prefix-1/example-prefix-2/example-dataset.csv` 建立數值參數。

若要為前面的 S3 URI 路徑建立參數，請執行下列動作。

1. 導覽至您的 Data Wrangler 流程。

1. 在您已匯入的資料集旁邊，選擇 **編輯資料集**。

1. 重點標示範例字首 `example-prefix-number` 的數字。

1. 選擇**建立自訂參數**。

1. 在**名稱**指定參數的名稱。

1. 在**類型**選擇 **整數**。

1. 在**值**指定數字。

1. 透過重複此程序為剩餘的數字建立參數。

建立參數之後，請將轉換套用至您的資料集，並為它建立目的地節點。如需目的地節點的更多相關資訊，請參閱[Export (匯出)](data-wrangler-data-export.md)。

使用下列程序，將 Data Wrangler 流程的轉換套用至不同的時間範圍。它假設您已為流程中的轉換建立目的地節點。

若要變更 Data Wrangler 處理任務中的數值參數的值，請執行下列動作。

1. 在 Data Wrangler 流程中，選擇 **建立任務**

1. 僅選取包含對有日期時間參數的資料集的轉換之目的地節點。

1. 選擇**設定作業**。

1. 選擇**參數**。

1. 選擇您已建立之參數的名稱。

1. 變更參數的值。

1. 對其他參數重複此程序。

1. 選擇**執行**。

## 使用字串將 Data Wrangler 流程套用至多個檔案
<a name="data-wrangler-string-parameters"></a>

您可以使用參數，將 Data Wrangler 流程中的轉換套用至具有類似路徑的不同檔案。例如，您可能有一個資料集路徑為 `s3://amzn-s3-demo-bucket1/example-prefix/example-dataset.csv`。

您可將 Data Wrangler 流程​​中的轉換套用至 `example-prefix` 下的資料集。您可能想要將相同的轉換套用至 `another-example-prefix` 或 `example-prefix-20` 下的 `example-dataset.csv`。

您可以建立儲存值 `example-prefix` 的參數。如果要將轉換套用至不同的資料集，您可以建立處理任務，以不同值取代參數的值。當您想要將 Data Wrangler 流程的轉換套用至新資料時，參數會充當預留位置，以供您變更。您可以在建立 Data Wrangler 處理任務時覆寫參數的值，將 Data Wrangler 流程中的轉換套用至不同的資料集。

使用下列程序為 `s3://amzn-s3-demo-bucket1/example-prefix/example-dataset.csv` 建立字串參數。

若要為前面的 S3 URI 路徑建立參數，請執行下列動作。

1. 導覽至您的 Data Wrangler 流程。

1. 在您已匯入的資料集旁邊，選擇 **編輯資料集**。

1. 強調顯示範例字首 `example-prefix`。

1. 選擇**建立自訂參數**。

1. 在**名稱**指定參數的名稱。

1. 在**類型**選擇**字串**。

1. 在**值**指定字首。

建立參數之後，請將轉換套用至您的資料集，並為它們建立目的地節點。如需目的地節點的更多相關資訊，請參閱[Export (匯出)](data-wrangler-data-export.md)。

使用下列程序，將 Data Wrangler 流程的轉換套用至不同的時間範圍。它假設您已為流程中的轉換建立目的地節點。

若要變更 Data Wrangler 處理任務中的數值參數的值，請執行下列動作：

1. 在 Data Wrangler 流程中，選擇 **建立任務**

1. 僅選取包含對有日期時間參數的資料集的轉換之目的地節點。

1. 選擇**設定作業**。

1. 選擇**參數**。

1. 選擇您已建立之參數的名稱。

1. 變更參數的值。

1. 對其他參數重複此程序。

1. 選擇**執行**。

## 將 Data Wrangler 流程套用至不同的日期時間範圍
<a name="data-wrangler-datetime-parameters"></a>

使用日期時間參數，將 Data Wrangler 流程中的轉換套用至不同的時間範圍。強調顯示具有時間戳記的 Amazon S3 URI 部分，並為它建立參數。建立參數時，您可以指定時間範圍，從目前時間到過去的某個時間。例如，您的 Amazon S3 URI 可能如下所示：`s3://amzn-s3-demo-bucket1/example-prefix/2022/05/15/example-dataset.csv`。您可以儲存 `2022/05/15` 為日期時間參數。如果您指定一年作為時間範圍，則時間範圍會包含您執行該處理任務的時刻，包含日期時間參數，以及剛好一年之前的時間。如果您執行該處理任務的時刻是 2022 年九月 6 日，或是 `2022/09/06`，時間範圍可能包含下列項目：
+ `s3://amzn-s3-demo-bucket1/example-prefix/2022/03/15/example-dataset.csv`
+ `s3://amzn-s3-demo-bucket1/example-prefix/2022/01/08/example-dataset.csv`
+ `s3://amzn-s3-demo-bucket1/example-prefix/2022/07/31/example-dataset.csv`
+ `s3://amzn-s3-demo-bucket1/example-prefix/2021/09/07/example-dataset.csv`

Data Wrangler 流程中的轉換會套用至前面的所有字首。變更該處理任務中的參數的值，不會變更 Data Wrangler 流程中的參數的值。若要將轉換套用至不同時間範圍內的資料集，請執行下列動作：

1. 建立目的地節點，包含您要使用的所有轉換。

1. 建立 Data Wrangler 任務。

1. 設定任務，使用不同的時間範圍為參數。變更該處理任務中的參數的值，不會變更 Data Wrangler 流程中的參數的值。

如需目的地節點和 Data Wrangler 任務的更多相關資訊，請參閱[Export (匯出)](data-wrangler-data-export.md)。

下列程序會為 Amazon S3 路徑建立日期時間參數：`s3://amzn-s3-demo-bucket1/example-prefix/2022/05/15/example-dataset.csv`。

若要為前面的 S3 URI 路徑建立日期時間參數，請執行下列動作。

1. 導覽至您的 Data Wrangler 流程。

1. 在您已匯入的資料集旁邊，選擇 **編輯資料集**。

1. 強調顯示您用作日期時間參數的值的 URI 部分。

1. 選擇**建立自訂參數**。

1. 在**名稱**指定參數的名稱。

1. 在 **類型**選擇 **日期時間**。
**注意**  
根據預設值，Data Wrangler 會選取 **預先定義**，它會提供下拉式清單，供您選取日期格式。不過，您使用的時間戳記格式可能不可用。您可以選擇 **自訂**並手動指定時間戳記格式，而不是使用 **預先定義**做為預設選項。

1. 在**日期格式**開啟**預先定義**後面的下拉式清單，然後選擇 **yyyy/MM/dd**。格式 **yyyy/MM/dd** 對應時間戳記的年/月/日。

1. 在**時區**，選擇時區。
**注意**  
您正在分析的資料可能會採用與您所在時區不同的時區時間戳記。請確定您選取的時區與資料的時區相符。

1. 在**時間範圍**指定參數的時間範圍。

1. (選用) 輸入描述以描述您如何使用該參數。

1. 選擇**建立**。

建立日期時間參數之後，請將轉換套用至您的資料集，並為它們建立目的地節點。如需目的地節點的更多相關資訊，請參閱[Export (匯出)](data-wrangler-data-export.md)。

使用下列程序，將 Data Wrangler 流程的轉換套用至不同的時間範圍。它假設您已為流程中的轉換建立目的地節點。

若要變更 Data Wrangler 處理任務中的日期時間參數的值，請執行下列動作：

1. 在 Data Wrangler 流程中，選擇**建立任務**

1. 僅選取包含對有日期時間參數的資料集的轉換之目的地節點。

1. 選擇**設定作業**。

1. 選擇**參數**。

1. 選擇您已建立之日期時間參數的名稱。

1. 在**時間範圍**變更資料集的時間範圍。

1. 選擇**執行**。

# Export (匯出)
<a name="data-wrangler-data-export"></a>

在 Data Wrangler 流程中，您可以匯出您所做的資料處理管道部分或全部轉換。

*Data Wrangler *是您對資料執行的一系列資料準備步驟。在資料準備中，您可以對資料執行一次或多次轉換。每個轉換都是使用轉換步驟完成的。流程具有一系列節點，代表匯入資料以及您已執行的轉換。如需節點範例，請參閱下列影像。

![\[Data Wrangler 主控台中的範例資料流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-0.png)


上圖顯示了具有兩個節點的 Data Wrangler 流程。**來源 - 取樣**節點會顯示您已從中匯入資料的資料來源。**資料類型**節點表示 Data Wrangler 已執行轉換，將資料集轉換成可用的格式。

您新增至 Data Wrangler 流程的每個轉換都會顯示為額外節點。關於您可以新增的轉和，請參閱[轉換資料](data-wrangler-transform.md)。下列影像顯示 Data Wrangler 流程，該流程具有可變更資料集中資料欄名稱的**重新命名資料欄**節點。

您可以將資料轉換匯出為以下功能：
+ Amazon S3
+ 管道
+ Amazon SageMaker Feature Store
+ Python 程式碼

**重要**  
我們建議您使用 IAM `AmazonSageMakerFullAccess`受管政策來授予使用 Data Wrangler 的 AWS 許可。如果您不使用受管政策，則可以使用 IAM 政策，讓 Data Wrangler 存取 Amazon S3 儲存貯體。如需關於政策的詳細資訊，請參閱[安全與許可](data-wrangler-security.md)。

匯出資料流程時，您需要支付所使用的 AWS 資源費用。您可以使用成本分配標籤來組織和管理這些資源的成本。您可以針對使用者設定檔建立這些標籤，Data Wrangler 會自動將這些標籤套用至用於匯出資料流程的資源。如需詳細資訊，請參閱[使用成本分配標籤](https://docs.aws.amazon.com//awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)。

## 匯出至 Amazon S3
<a name="data-wrangler-data-export-s3"></a>

Data Wrangler 可讓您將資料匯出到 Amazon S3 儲存貯體中的某個位置。您可以使用下列其中一種方法指定位置：
+ 目的地節點 — Data Wrangler 在處理資料之後儲存資料的位置。
+ 匯出至 — 將轉換產生的資料匯出到 Amazon S3。
+ 匯出資料 — 針對小型資料集，可以快速匯出已轉換的資料。

閱讀下列各節來進一步瞭解這些方法。

------
#### [ Destination Node ]

如果您想要輸出一系列在 Amazon S3 已執行的資料處理步驟，請建立目標節點。*目標節點*會告訴 Data Wrangler 在您處理完資料之後儲存資料的位置。建立目的節點之後，您將建立輸出資料的處理工作。*處理任務*是 Amazon SageMaker Processing 任務。當您使用目標節點時，它會執行輸出已轉換至 Amazon S3 的資料所需的運算資源。

您可以使用目標節點匯出部分轉換或您在 Data Wrangler 流程中進行的所有轉換。

您可以使用多個目標節點來匯出不同的轉換或一組轉換。下列範例顯示出單一 Data Wrangler 流程中的兩個目標節點。

![\[顯示 Data Wrangler 主控台中兩個目標節點的範例資料流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-4.png)


您可以使用下列程序建立目標節點，並將其匯出至 Amazon S3 儲存貯體。

若要匯出資料流程，請建立目標節點和 Data Wrangler 任務以匯出資料。建立 Data Wrangler 任務會啟動 SageMaker Processing 任務以匯出流程。建立完成後，您要選擇要匯出的目標節點。
**注意**  
您可以在 Data Wrangler 流程中選擇**建立任務**，以檢視使用處理任務的指示。

使用下列程序以建立目標節點。

1. 選擇代表您要匯出之轉換的節點旁邊的 **\$1**。

1. 選擇 **Add destination** (新增目的地)。  
![\[顯示如何在 Data Wrangler 主控台中新增目的地的範例資料流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-add-destination-0.png)

1. 選擇 **Amazon S3**。  
![\[顯示如何在 Data Wrangler 主控台中新增目的地的範例資料流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-add-destination-S3-selected.png)

1. 為下列欄位：
   + **資料集名稱** — 您為要匯出的資料集指定的名稱。
   + **檔案類型** — 您要匯出的檔案格式。
   + **分隔符號** (僅適用於 CSV 和 Parquet 檔案) — 用來分隔其他值的值。
   + **壓縮** (僅限 CSV 和 Parquet 檔案) — 用於減少檔案大小的壓縮方法。您可以使用下列壓縮方式：
     + bzip2
     + deflate
     + gzip
   + (選用) **Amazon S3 位置** — 您用來輸出檔案的 S3 位置。
   + (選用) **分割區數目** — 您要當作處理任務輸出加以寫入的資料集數目。
   + (選用) **依資料欄分割** — 從資料欄寫入具有相同唯一值的所有資料。
   + (選用) **推論參數** — 選取**產生推論成品**，會將您在 Data Wrangler 流程中使用的所有轉換，套用至進入推論管道的資料。管道中的模型會針對轉換的資料進行預測。

1. 選擇 **Add destination** (新增目的地)。

使用下列程序以建立處理任務。

從**資料流程**頁面建立任務，然後選擇要匯出的目標節點。
**注意**  
您可以在 Data Wrangler 流程中選擇**建立任務**，以檢視建議處理任務的指示。

1. 選擇**建立任務**。下列影像顯示選取**建立任務**之後所顯示的窗格。  
![\[Data Wrangler 主控台中的範例資料流程建立任務窗格。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-create-job.png)

1. 在**任務名稱**中指定匯出任務的名稱。

1. 選擇您要匯出的目標節點。

1. （選用） 指定 AWS KMS 金鑰 ARN。 AWS KMS 金鑰是密碼編譯金鑰，可用來保護資料。如需 AWS KMS 金鑰的詳細資訊，請參閱 [AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html)。

1. (選用) 在**訓練的參數**之下。如果您已完成下列動作，請選擇**重新調整**：
   + 取樣您的資料集
   + 套用轉換，該轉換用您的資料在資料集中建立新資料欄

   如需有關重新調整在整個資料集中所進行轉換的詳細資訊，請參閱[將轉換重新調整為整個資料集並導出](#data-wrangler-data-export-fit-transform)。
**注意**  
針對影像資料，Data Wrangler 會匯出您對所有影像做的轉換。重新調整轉換不適用於您的使用案例。

1. 選擇**設定作業**。下列影像顯示**設定作業**頁面。  
![\[Data Wrangler 主控台中的範例資料流程設定任務頁面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-configure-job.png)

1. (選用) 設定 Data Wrangler 作業。您可以使用下列設定：
   + **任務組態**
   + **Spark 記憶體組態**
   + **網路組態**
   + **Tags** (標籤)
   + **參數**
   + **關聯排程**

1. 選擇**執行**。

------
#### [ Export to ]

除了使用目標節點之外，您還可以使用**匯出至**選項，使用 Jupyter 筆記本將 Data Wrangler 流程匯出到 Amazon S3。您可以選擇 Data Wrangler 流程中的任何資料節點並將其匯出。匯出資料節點會匯出節點所代表的轉換，以及其先前的轉換。

使用下列程序產生 Jupyter 筆記本並執行它，將 Data Wrangler 流程匯出到 Amazon S3。

1. 選擇欲匯出節點旁的 **\$1**。

1. 選擇**匯出至**。

1. 選擇 **Amazon S3 (透過 Jupyter 筆記本**)。

1. 執行 Jupyter 筆記本  
![\[展示如何在 Data Wrangler 主控台中匯出 Data Wrangler 流程的範例資料流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)

當您執行筆記本時，它會在與 Data Wrangler 流程 AWS 區域 相同的 中匯出資料流程 (.flow 檔案）。

筆記本提供的選項可讓您用來配置處理任務及其輸出的資料。

**重要**  
我們為您提供任務組態以設定資料的輸出。針對分割和驅動程式記憶體選項，我們強烈建議您不要指定組態，除非您對其相當熟悉。

在**任務組態**下，您可以設定下列項目：
+ `output_content_type` — 輸出檔案的內容類型。使用 `CSV` 做為預設格式，但您可以指定 `Parquet`。
+ `delimiter` — 寫入 CSV 檔案時，用來分隔資料集中值的字元。
+ `compression` — 如果已設定，則壓縮輸出檔案。預設會使用 gzip 壓縮格式。
+ `num_partitions` — Data Wrangler 當作輸出寫入的分割或檔案數目。
+ `partition_by` — 您用來分割輸出的資料欄名稱。

若要將輸出檔案格式從 CSV 變更為Parquet，請將值從 `"CSV"` 變更為 `"Parquet"`。針對先前資料欄的其餘部分，請取消包含要指定的欄位的資料行註解。

在**(選用) 設定 Spark 叢集驅動程式記憶體**下，您可以在 `config` 字典中設定任務的 Spark 屬性，例如 Spark 驅動程式記憶體。

以下顯示 `config` 字典。

```
config = json.dumps({
    "Classification": "spark-defaults",
    "Properties": {
        "spark.driver.memory": f"{driver_memory_in_mb}m",
    }
})
```

若要將組態套用至處理任務，請取消下列資料行的註解：

```
# data_sources.append(ProcessingInput(
#     source=config_s3_uri,
#     destination="/opt/ml/processing/input/conf",
#     input_name="spark-config",
#     s3_data_type="S3Prefix",
#     s3_input_mode="File",
#     s3_data_distribution_type="FullyReplicated"
# ))
```

------
#### [ Export data ]

如果您要快速匯出的小型資料集中的轉換，可以使用**匯出資料**方法。當您開始選擇**匯出資料**時，Data Wrangler 會同步運作將您轉換的資料匯出到 Amazon S3。在 Data Wrangler 完成匯出資料或取消作業之前，您無法使用 Data Wrangler。

如需有關在 Data Wrangler 流程中使用**匯出資料**方法的資訊，請參閱下列程序。

若要使用**匯出資料**方法：

1. 在 Data Wrangler 流程中開啟 (連按兩下) 即可選擇節點。  
![\[顯示如何在 Data Wrangler 主控台中匯出資料的範例資料流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/export-s3.png)

1. 設定您要匯出資料的方式。

1. 選擇**開始匯出**。

------

將資料流程匯出到 Amazon S3 儲存貯體時，Data Wrangler 會將流程檔案的副本儲存在 S3 儲存貯體中。它會將流程檔案儲存為包含 *data\$1wrangler\$1flows* 的字首。如果您使用預設的 Amazon S3 儲存貯體來存放流程檔案，則其會使用下列命名慣例：`sagemaker-region-account number`。例如，如果您的帳戶號碼是 111122223333，而您在 us-east-1 中使用 Studio Classic，則匯入的資料集會存放在 `sagemaker-us-east-1-111122223333` 中。在此範例中，您在 us-east-1 中建立的 .flow 檔案會儲存在 `s3://sagemaker-region-account number/data_wrangler_flows/` 中。

## 匯出至 Pipelines
<a name="data-wrangler-data-export-pipelines"></a>

當您想要建立和部署大規模的機器學習 (ML) 工作流程時，可以使用 Pipelines 來建立能管理和部署 SageMaker AI 任務的工作流程。您可以使用 Pipelines 建立工作流程，以管理 SageMaker AI 資料準備、模型訓練和模型部署任務。您可以使用 Pipelines 來利用 SageMaker AI 提供的第一方演算法。如需 Pipelines 的詳細資訊，請參閱 [SageMaker Pipelines](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines.html)。

當您將資料流程中的一或多個步驟匯出至 Pipelines 時，Data Wrangler 會建立 Jupyter 筆記本，您可以使用該筆記本來定義、具現化、執行和管理管道。

### 使用 Jupyter 筆記本建立管道
<a name="data-wrangler-pipelines-notebook"></a>

使用下列程序建立 Jupyter 筆記本，以將 Data Wrangler 流程匯出至 Pipelines。

使用下列程序產生 Jupyter 筆記本並執行，以將 Data Wrangler 流程匯出至 Pipelines。

1. 選擇欲匯出的節點旁的 **\$1** 號。

1. 選擇**匯出至**。

1. 選擇 **Pipelines (透過 Jupyter 筆記本)**。

1. 執行 Jupyter 筆記本。

![\[展示如何在 Data Wrangler 主控台中匯出 Data Wrangler 流程的範例資料流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)


您可以使用 Data Wrangler 產生的 Jupyter 筆記本來定義管道。管道包括 Data Wrangler 流程所定義的資料處理步驟。

您可以將步驟新增至筆記本中下列程式碼的 `steps` 清單，以將其他步驟新增至管道：

```
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[instance_type, instance_count],
    steps=[step_process], #Add more steps to this list to run in your Pipeline
)
```

如需定義管道的詳細資訊，請參閱[定義 SageMaker AI Pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/define-pipeline.html)。

## 匯出至推論端點
<a name="data-wrangler-data-export-inference"></a>

透過從 Data Wrangler 流程建立 SageMaker AI 序列推論管道，使用 Data Wrangler 流程在推論時處理資料。推論管道是一系列步驟，可讓經過訓練的模型對新資料進行預測。Data Wrangler 中的序列推論管道可轉換原始資料，並將其提供給機器學習模型以進行預測。您可以從 Studio Classic 內的 Jupyter 筆記本建立、執行和管理推論管道。如需存取筆記本的詳細資訊，請參閱[使用 Jupyter 筆記本建立推論端點](#data-wrangler-inference-notebook)。

在筆記本中，您可以訓練機器學習模型，也可以指定您已經訓練過的模型。您可以使用 Amazon SageMaker Autopilot 或 XGBoost 來訓練模型，使用您在 Data Wrangler 流程中轉換的資料來訓練模型。

管道具有執行批次或即時推論的功能。您也可以將 Data Wrangler 流程新增至 SageMaker Model Registry。若要取得關於託管模型的詳細資訊，請參閱[多模型端點](multi-model-endpoints.md)。

**重要**  
如果 Data Wrangler 流程具有下列轉換，則無法將其匯出至推論端點：  
Join
串連
分組依據
如果您必須使用前述轉換來準備資料，請使用下列程序。  
建立 Data Wrangler 流程。
套用不支援的先前轉換。
將資料匯出至 Amazon S3 儲存貯體。
建立個別 Data Wrangler 流程。
匯入您從先前流程匯出的資料。
套用剩餘的轉換。
使用我們提供的 Jupyter 筆記本建立序列推論管道。
如需將資料匯出至 Amazon S3 儲存貯體的詳細資訊，請參閱[匯出至 Amazon S3](#data-wrangler-data-export-s3)。如需開啟用來建立序列推論管道的 Jupyter 筆記本詳細資訊，請參閱[使用 Jupyter 筆記本建立推論端點](#data-wrangler-inference-notebook)。

Data Wrangler 會忽略在推論時移除資料的轉換。例如，如果您使用**刪除遺失**的組態，則 Data Wrangler 會忽略 [處理缺少值](data-wrangler-transform.md#data-wrangler-transform-handle-missing) 轉換。

如果您已將重新調整整個資料集的轉換，則轉換會繼承至您的推論管道。例如，如果您使用中位數值來推算缺少的值，則重新調整轉換的中位數值會套用至您的推論請求。您可以在使用 Jupyter 筆記本或將資料匯出至推論管道時，重新調整 Data Wrangler 流程的轉換。如需關於重新調整轉換的詳細資訊，請參閱[將轉換重新調整為整個資料集並導出](#data-wrangler-data-export-fit-transform)。

序列推論管道支援輸入和輸出字串的下列資料類型。每種資料類型都有一組請求。

**支援的資料類型**
+ `text/csv` — CSV 字串的資料類型
  + 字串不能有標題。
  + 用於推論管道的功能必須與訓練資料集中的功能順序相同。
  + 功能之間必須有逗號分隔符號。
  + 記錄必須以換行字元分隔。

  以下範例是您可以在推論請求中提供的有效格式 CSV 字串。

  ```
  abc,0.0,"Doe, John",12345\ndef,1.1,"Doe, Jane",67890                    
  ```
+ `application/json` — JSON 字串的資料類型
  + 用於推論管道中的資料集功能必須與訓練資料集中的功能順序相同。
  + 資料必須具有特定的結構描述。您可以將結構描述定義為具有一組 `features` 的單一 `instances` 物件。每個 `features` 物件都代表一個觀察。

  以下範例是您可以在推論請求中提供的有效格式 JSON 字串。

  ```
  {
      "instances": [
          {
              "features": ["abc", 0.0, "Doe, John", 12345]
          },
          {
              "features": ["def", 1.1, "Doe, Jane", 67890]
          }
      ]
  }
  ```

### 使用 Jupyter 筆記本建立推論端點
<a name="data-wrangler-inference-notebook"></a>

使用下列程序匯出 Data Wrangler 流程，以建立推論管道。

若要使用 Jupyter 筆記本建立推論管道，請執行下列動作。

1. 選擇欲匯出節點旁的 **\$1**。

1. 選擇**匯出至**。

1. 選擇 **SageMaker AI Inference Pipeline (透過 Jupyter 筆記本)**。

1. 執行 Jupyter 筆記本。

當您執行 Jupyter 筆記本時，它會建立推論流程成品。推論流程成品是 Data Wrangler 流程檔案，其中包含用於建立序列推論管道的其他中繼資料。您要匯出的節點會包含先前節點的所有轉換。

**重要**  
Data Wrangler 需要推論流程成品才能執行推論管道。您無法使用自己的流程檔案做為成品。您必須使用上述程序來建立。

## 匯出為 Python 程式碼
<a name="data-wrangler-data-export-python-code"></a>

若要將資料流程中的所有步驟匯出至可手動整合至任何資料處理工作流程的 Python 檔案，請使用下列程序。

使用下列程序產生 Jupyter 筆記本並執行它，將 Data Wrangler 流程匯出為 Python 程式碼。

1. 選擇欲匯出節點旁的 **\$1**。

1. 選擇**匯出至**。

1. 選擇 **Python 程式碼**。

1. 執行 Jupyter 筆記本。

![\[展示如何在 Data Wrangler 主控台中匯出 Data Wrangler 流程的範例資料流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)


您可能需要設定 Python 指令碼，使其在您的管道中執行。例如，如果您正在執行 Spark 環境，請確定您從有權存取 AWS 資源的環境執行指令碼。

## 匯出至 Amazon SageMaker Feature Store
<a name="data-wrangler-data-export-feature-store"></a>

您可以使用 Data Wrangler 將您建立的功能匯出至 Amazon SageMaker Feature Store。特徵是資料集中的資料欄。特徵商店是特徵及其關聯中繼資料的集中儲存區。您可以使用特徵商店為機器學習 (ML) 開發建立、共用和管理策劃的資料。集中式儲存可以您更輕易發掘資料且可重複使用。如需有關特徵商店的詳細資訊，請參閱 [Amazon SageMaker Feature Store](https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store.html)。

特徵商店的核心概念是一個特徵群組。特徵群組是特徵、其記錄 (觀察) 和關聯中繼資料的集合。它類似於資料庫中的資料表。

您可以使用 Data Wrangler 執行以下其中一項：
+ 使用新記錄更新既有特徵群組。記錄是資料集中的觀察。
+ 從 Data Wrangler 流程中的節點建立新特徵群組。Data Wrangler 將資料集中的觀察加入為特徵群組中的記錄。

如果您要更新現有的特徵群組，則資料集的結構定義必須與特徵群組的結構描述相符。特徵群組中的所有記錄都會被取代為資料集中的觀察。

您可以使用 Jupyter 筆記本或目標節點，用資料集中的觀察更新您的特徵群組。

如果具有 Iceberg 表格格式的特徵群組具有自訂的離線儲存加密金鑰，則請確保授與您用於 Amazon SageMaker Processing 任務的 IAM 權限，以使用該金鑰。您至少必須授予其權限，以便加密即將寫入 Amazon S3 的資料。若要授予權限，請讓 IAM 角色能夠使用 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)。如需授予 IAM 角色許可以使用 AWS KMS 金鑰的詳細資訊，請參閱 [https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)

------
#### [ Destination Node ]

如果您想要輸出一系列在特徵群組已執行的資料處理步驟，可以建立目標節點。當您建立並執行目標節點時，Data Wrangler 會使用您的資料更新特徵群組。您也可以從目標節點使用者介面建立新的特徵群組。建立目標節點之後，您將建立輸出資料的處理工作。處理任務是 Amazon SageMaker Processing 任務。當您使用目標節點時，它會執行輸出已轉換至特徵群組的資料所需的運算資源。

您可以使用目標節點匯出部分轉換或您在 Data Wrangler 流程中進行的所有轉換。

使用以下程序建立目標節點，以使用資料集中的觀察更新特徵群組。

若要使用目標節點更新特徵群組，請執行以下步驟。
**注意**  
您可以在 Data Wrangler 流程中選擇**建立任務**，以檢視使用處理任務來更新特徵群組的指示。

1. 選擇包含您要匯出之資料集的節點旁邊的 **\$1** 符號。

1. 在**新增目的地**下，選擇 **SageMaker AI 特徵存放區**。  
![\[顯示如何在 Data Wrangler 主控台中新增目的地的範例資料流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/feature-store-destination-node-selection.png)

1. 選擇 (連按兩下) 特徵群組。Data Wrangler 會檢查特徵群組的結構描述是否符合您用來更新特徵群組的資料結構描述。

1. (選用) 針對同時具有線上儲存和離線儲存的特徵群組，選請選擇**僅匯出供離線儲存**。此選項只會使用資料集的觀察來更新離線儲存。

1. Data Wrangler 驗證資料集的結構描述之後，請選擇**新增**。

依照下列程序使用資料集中的資料建立新的特徵群組。

您可透過下列其中一種方式儲存您的特徵群組：
+ 線上 — 提供即時查閱記錄的低延遲、高可用性快取的特徵群組。線上儲存可讓您快速存取特徵群組中記錄的最新值。
+ 離線 — 將您特徵群組的資料儲存在 Amazon S3 儲存貯體中。當您不需要低延遲 (低於一秒) 讀取時，您可以將資料離線儲存。您可以將離線儲存用於資料探索、模型訓練和批次推論中使用的特徵。
+ 線上和離線 — 將您的資料儲存在線上儲存和離線儲存中。

若要使用目標節點建立特徵群組，請執行以下步驟。

1. 選擇包含您要匯出之資料集的節點旁邊的 **\$1** 符號。

1. 在**新增目的地**下，選擇 **SageMaker AI 特徵存放區**。

1. 選擇**建立特徵群組**。

1. 在下列對話方塊中，如果您的資料集沒有事件時間資料欄，請選取**建立“EventTime”**資料欄。

1. 選擇**下一步**。

1. 選擇**複製 JSON 結構描述**。建立特徵群組時，將結構描述貼到特徵定義中。

1. 選擇**建立**。

1. 針對**特徵群組名稱**，請指定特徵群組的名稱。

1. 針對**描述 (選用)**，請指定描述，好讓您的特徵群組更容易被搜尋到。

1. 若要針對線上儲存建立特徵群組，請執行以下步驟。

   1. 選取**啟用線上儲存**。

   1. 對於**線上儲存加密金鑰**，請指定 AWS 受管加密金鑰或您自己的加密金鑰。

1. 若要針對離線儲存建立特徵群組，請執行以下步驟。

   1. 選取**啟用離線儲存**。指定下列欄位的值：
      + **S3 儲存貯體名稱** — 用於儲存特徵群組的 Amazon S3 儲存貯體名稱。
      + (選用) **資料集目錄名稱** — 您用來儲存特徵群組的 Amazon S3 字首。
      + **IAM 角色 ARN** — 可存取特徵商店的 IAM 角色。
      + **資料表格式** — 離線儲存的資料表格式。您可以指定 **Glue** 或 **Iceberg**。**Glue** 為預設格式。
      + **離線儲存加密金鑰** — 依預設，特徵商店使用一組 AWS Key Management Service 受管金鑰，但您可以使用此欄位指定自己的金鑰。

   1. 指定下列欄位的值：
      + **S3 儲存貯體名稱** — 用於儲存特徵群組的儲存貯體名稱。
      + **(選用) 資料集目錄名稱** — 您用來儲存特徵群組的 Amazon S3 字首。
      + **IAM 角色 ARN** — 可存取特徵商店的 IAM 角色。
      + **離線儲存加密金鑰** — 依預設，特徵商店使用一組 AWS 受管金鑰，但您可以使用此欄位指定自己的金鑰。

1. 選擇**繼續**。

1. 選擇 **JSON**。

1. 移除視窗中的預留位置括號。

1. 貼上步驟 6 中的 JSON 文字。

1. 選擇**繼續**。

1. 針對**記錄識別符特徵名稱**中，針對資料集中每筆具有唯一識別符的記錄，選擇資料集中的資料欄。

1. 在**事件時間特徵名稱**中，選擇具有時間戳記值的資料欄。

1. 選擇**繼續**。

1. (選用) 新增標籤，讓您的特徵群組更容易被搜尋到。

1. 選擇**繼續**。

1. 選擇**建立特徵群組**。

1. 導覽回您的 Data Wrangler 流程，然後選擇**特徵群組**搜尋列旁邊的重新整理圖示。

**注意**  
如果您已為流程中的特徵群組建立了目標節點，則無法為同一特徵群組建立另一個目標節點。如果要為同一特徵群組建立另一個目標節點，則必須建立另一個流程檔案。

使用下列程序來建立 Data Wrangler 任務。

從**資料流程**頁面建立任務，然後選擇要匯出的目標節點。

1. 選擇**建立任務**。下列影像顯示選取**建立任務**之後所顯示的窗格。

1. 在**任務名稱**中指定匯出任務的名稱。

1. 選擇您要匯出的目標節點。

1. （選用） 對於**輸出 KMS 金鑰**，指定 AWS KMS 金鑰的 ARN、ID 或別名。KMS 金鑰是密碼編譯金鑰。您可以使用金鑰來加密任務的輸出資料。如需 AWS KMS 金鑰的詳細資訊，請參閱 [AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html)。

1. 下列影像顯示**設定作業**頁面，其中**任務組態**索引標籤已開啟。  
![\[Data Wrangler 主控台中的範例資料流程建立任務頁面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-configure-job.png)

   (選用) 在**訓練的參數**之下。如果您已完成下列動作，請選擇**重新調整**：
   + 取樣您的資料集
   + 套用轉換，該轉換用您的資料在資料集中建立新資料欄

   如需有關重新調整在整個資料集中所進行轉換的詳細資訊，請參閱[將轉換重新調整為整個資料集並導出](#data-wrangler-data-export-fit-transform)。

1. 選擇**設定作業**。

1. (選用) 設定 Data Wrangler 作業。您可以使用下列設定：
   + **任務組態**
   + **Spark 記憶體組態**
   + **網路組態**
   + **Tags** (標籤)
   + **參數**
   + **關聯排程**

1. 選擇**執行**。

------
#### [ Jupyter notebook ]

請在 Jupyter 筆記本中使用下列程序，以匯出至 Amazon SageMaker Feature Store。

使用下列程序產生 Jupyter 筆記本並執行它，將 Data Wrangler 流程匯出至特徵商店。

1. 選擇欲匯出節點旁的 **\$1**。

1. 選擇**匯出至**。

1. 選擇 **Amazon SageMaker Feature Store (透過 Jupyter 筆記本)**。

1. 執行 Jupyter 筆記本。

![\[展示如何在 Data Wrangler 主控台中匯出 Data Wrangler 流程的範例資料流程。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)


執行 Jupyter 筆記本會執行 Data Wrangler 任務。執行 Data Wrangler 任務會啟動 SageMaker AI 處理任務。處理任務會將流程擷取至線上和離線特徵商店。

**重要**  
您用來執行此筆記本的 IAM 角色必須附加下列 AWS 受管政策：`AmazonSageMakerFullAccess` 和 `AmazonSageMakerFeatureStoreAccess`。

您只需要在建立特徵群組時啟用一個線上或離線特徵商店。您也可以同時啟用兩種儲存。若要停用線上儲存建立，請 `EnableOnlineStore` 將設定為 `False`：

```
# Online Store Configuration
online_store_config = {
    "EnableOnlineStore": False
}
```

筆記本使用您匯出的資料框的資料欄名稱和類型來建立特徵群組結構描述，該結構描述將用於建立特徵群組。特徵群組是在特徵商店中定義的一組特徵，用於描述記錄。特徵群組定義特徵群組中包含的結構描述和特徵。特徵群組定義由特徵清單、記錄識別符特徵名稱、事件時間特徵名稱，以及其線上儲存和離線儲存的組態組成。

特徵群組中的每個特徵都可以屬於以下類型之一：*字串*、*分數*或*整數*。如果匯出的資料框中的資料欄不是這些類型之一，則預設為 `String`。

以下是特徵群組結構描述的範例。

```
column_schema = [
    {
        "name": "Height",
        "type": "long"
    },
    {
        "name": "Input",
        "type": "string"
    },
    {
        "name": "Output",
        "type": "string"
    },
    {
        "name": "Sum",
        "type": "string"
    },
    {
        "name": "Time",
        "type": "string"
    }
]
```

此外，您必須指定記錄識別符名稱和事件時間特徵名稱：
+ *記錄識別符名稱*是特徵的名稱，其值可唯一識別特徵商店中定義的記錄。線上儲存只會儲存每個識別符值的最新記錄。記錄識別符特徵名稱必須是特徵定義的名稱之一。
+ *事件時間特徵名稱*是儲存特徵群組中 `EventTime` 記錄的特徵名稱。`EventTime` 是發生新事件時的時間點，對應於特徵中的記錄建立或更新。特徵群組中的所有記錄都必須具有對應的 `EventTime`。

筆記本使用這些組態來建立特徵群組、大規模處理資料，然後將處理的資料擷取至線上和離線特徵商店。若要進一步瞭解，請參閱[資料來源和擷取](https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store-ingest-data.html)。

------

筆記本使用這些組態來建立特徵群組、大規模處理資料，然後將處理的資料擷取至線上和離線特徵商店。若要進一步瞭解，請參閱[資料來源和擷取](https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store-ingest-data.html)。

## 將轉換重新調整為整個資料集並導出
<a name="data-wrangler-data-export-fit-transform"></a>

當您匯入資料時，Data Wrangler 會使用資料樣本來套用編碼。Data Wrangler 會根據預設使用前 50,000 個資料列做為樣本，但您可以匯入整個資料集或使用不同的取樣方法。如需詳細資訊，請參閱[Import (匯入)](data-wrangler-import.md)。

下列轉換會使用您的資料在資料集中建立資料欄：
+ [分類編碼](data-wrangler-transform.md#data-wrangler-transform-cat-encode)
+ [功能化文字](data-wrangler-transform.md#data-wrangler-transform-featurize-text)
+ [處理極端值](data-wrangler-transform.md#data-wrangler-transform-handle-outlier)
+ [處理缺少值](data-wrangler-transform.md#data-wrangler-transform-handle-missing)

如果您使用取樣匯入資料，則前述轉換只會使用樣本中的資料來建立資料欄。轉換可能不會使用所有相關資料。例如如果您使用**分類編碼**轉換，則整個資料集中可能有一個類別不存在於樣本中。

您可以使用目標節點或 Jupyter 筆記本來重新調整整個資料集的轉換。當 Data Wrangler 匯出流程中的轉換時，其會建立 SageMaker Processing 任務。處理任務完成後，Data Wrangler 會將下列檔案儲存在預設 Amazon S3 位置或您指定的 S3 位置：
+ 指定重新調整為資料集之轉換的 Data Wrangler 流程檔案
+ 套用重新調整轉換的資料集

您可以在 Data Wrangler 中開啟 Data Wrangler 流程檔案，然後將轉換套用至不同的資料集。例如，如果您已將轉換套用至訓練資料集，則可以開啟並使用 Data Wrangler 流程檔案，將轉換套用至用於推論的資料集。

如需有關使用目標節點重新調整轉換和匯出的資訊，請參閱下列頁面：
+ [匯出至 Amazon S3](#data-wrangler-data-export-s3)
+ [匯出至 Amazon SageMaker Feature Store](#data-wrangler-data-export-feature-store)

使用下列程序來執行 Jupyter 筆記本，重新調整轉換並匯出資料。

若要執行 Jupyter 筆記本，以重新調整轉換並匯出 Data Wrangler 流程，請執行下列步驟。

1. 選擇欲匯出節點旁的 **\$1**。

1. 選擇**匯出至**。

1. 選擇要匯出資料的目標位置。

1. 針對 `refit_trained_params` 物件，將 `refit` 設定為 `True`。

1. 針對 `output_flow` 欄位，請指定有重新調整轉換的輸出流程檔案名稱。

1. 執行 Jupyter 筆記本。

## 建立自動處理新資料的排程
<a name="data-wrangler-data-export-schedule-job"></a>

如果您要定期處理資料，則可以建立排程以自動執行處理任務。例如您可以建立排程，在獲得新資料時自動執行處理任務。如需處理任務的詳細資訊，請參閱[匯出至 Amazon S3](#data-wrangler-data-export-s3)和[匯出至 Amazon SageMaker Feature Store](#data-wrangler-data-export-feature-store)。

建立任務時，必須指定具有建立該任務授權的 IAM 角色。您用來存取 Data Wrangler 的 IAM 角色根據預設為 `SageMakerExecutionRole`。

下列權限允許 Data Wrangler 存取 EventBridge，並允許 EventBridge 執行處理任務：
+ 將下列 AWS 受管政策新增至 Amazon SageMaker Studio Classic 執行角色，該角色提供 Data Wrangler 使用 EventBridge 的許可：

  ```
  arn:aws:iam::aws:policy/AmazonEventBridgeFullAccess
  ```

  如需有關該政策的詳細資訊，請參閱 [AWS EventBridge 受管政策](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-identity-based.html#eb-full-access-policy)。
+ 將下列政策新增至您在 Data Wrangler 中建立任務時指定的 IAM 角色：

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "sagemaker:StartPipelineExecution",
              "Resource": "arn:aws:sagemaker:us-east-1:111122223333:pipeline/data-wrangler-*"
          }
      ]
  }
  ```

------

  如果您使用預設的 IAM 角色，則請將上述政策新增至 Amazon SageMaker Studio Classic 執行角色。

  將下列信任政策新增至角色，以便 EventBridge 加以採用。

  ```
  {
      "Effect": "Allow",
      "Principal": {
          "Service": "events.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
  }
  ```

**重要**  
當您建立排程時，Data Wrangler 會在 EventBridge 中建立一個 `eventRule`。您建立的事件規則和用於執行處理任務的執行個體都會產生費用。  
如需 EventBridge 定價的詳細資訊，請參閱 [Amazon EventBridge 定價](https://aws.amazon.com/eventbridge/pricing/)。有關處理任務定價的資訊，請參閱 [Amazon SageMaker 定價](https://aws.amazon.com/sagemaker/pricing/)。

您可以使用以下其中一個方法建立排程：
+ [Cron 表達式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html)
**注意**  
Data Wrangler 不支援以下表達式：  
LW \$1
天的縮寫
月的縮寫
+ [Rate 表達式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html#eb-rate-expressions)
+ 週期性 — 設定每小時或每日執行任務的間隔。
+ 指定時間 — 設定執行任務的特定日期和時間。

下列各節將說明了建立任務的程序。

------
#### [ CRON ]

使用下列程序建立包含 CRON 表達式的排程。

若要使用 CRON 表達式指定排程，請執行下列動作。

1. 開啟 Data Wrangler 流程。

1. 選擇 **建立任務**。

1. （選用） 對於**輸出 KMS 金鑰**，請指定 AWS KMS 金鑰來設定任務的輸出。

1. 選擇 **下一步，2.。設定任務**。

1. 選取**關聯排程**。

1. 選擇**建立新排程**。

1. 針對**排程名稱**，請指定排程的名稱。

1. 針對**執行頻率**，請選擇 **CRON**。

1. 請指定有效的 CRON 表達式。

1. 選擇**建立**。

1. (選用) 選擇**新增另一個排程**，在另一個排程執行任務。
**注意**  
您最多可以關聯兩個排程。這些排程是獨立的，除非時間重疊，否則不會相互影響。

1. 選擇下列其中一項：
   + **立即排程並執行** — Data Wrangler 任務會立即執行，之後按排程執行。
   + **僅限排程** — Data Wrangler 任務只會在您指定的排程上執行。

1. 選擇**執行**。

------
#### [ RATE ]

使用下列程序建立包含 RATE 表達式的排程。

若要使用 RATE 表達式指定排程，請執行下列動作。

1. 開啟 Data Wrangler 流程。

1. 選擇 **建立任務**。

1. （選用） 對於**輸出 KMS 金鑰**，請指定 AWS KMS 金鑰來設定任務的輸出。

1. 選擇 **下一步，2.。設定任務**。

1. 選取**關聯排程**。

1. 選擇**建立新排程**。

1. 針對**排程名稱**，請指定排程的名稱。

1. 針對**執行頻率**，請選擇 **Rate**。

1. 針對**值**，請指定整數。

1. 針對**單位**，請選擇下列項目之一：
   + **分鐘**
   + **小時**
   + **天**

1. 選擇**建立**。

1. (選用) 選擇**新增另一個排程**，在另一個排程執行任務。
**注意**  
您最多可以關聯兩個排程。這些排程是獨立的，除非時間重疊，否則不會相互影響。

1. 選擇下列其中一項：
   + **立即排程並執行** — Data Wrangler 任務會立即執行，之後按排程執行。
   + **僅限排程** — Data Wrangler 任務只會在您指定的排程上執行。

1. 選擇**執行**。

------
#### [ Recurring ]

請使用下列程序來建立週期性基礎的任務執行排程。

若要使用 CRON 表達式指定排程，請執行下列動作。

1. 開啟 Data Wrangler 流程。

1. 選擇 **建立任務**。

1. （選用） 對於**輸出 KMS 金鑰**，請指定 AWS KMS 金鑰來設定任務的輸出。

1. 選擇 **下一步，2.。設定任務**。

1. 選取**關聯排程**。

1. 選擇**建立新排程**。

1. 針對**排程名稱**，請指定排程的名稱。

1. 針對**執行頻率**，請確認預設為選取**週期性**。

1. 針對**每 x 小時**，請指定任務在一天中執行的小時頻率。有效值是 **1** 與 **23** 之包含範圍內的整數。

1. 針對**在這些日子**，選擇以下其中一個選項：
   + **每天**
   + **週末**
   + **平日**
   + **選擇天數**

   1. (選用) 如果您已選取**選取天數**，請選擇一週中的哪幾天要執行任務。
**注意**  
排程會每天重設一次。如果您將任務排定為每五個小時執行一次，則它會在一天的下列時間執行：  
00：00
05：00
10：00
15：00
20：00

1. 選擇**建立**。

1. (選用) 選擇**新增另一個排程**，在另一個排程執行任務。
**注意**  
您最多可以關聯兩個排程。這些排程是獨立的，除非時間重疊，否則不會相互影響。

1. 選擇下列其中一項：
   + **立即排程並執行** — Data Wrangler 任務會立即執行，之後按排程執行。
   + **僅限排程** — Data Wrangler 任務只會在您指定的排程上執行。

1. 選擇**執行**。

------
#### [ Specific time ]

請使用下列程序來建立在指定時間執行任務的排程。

若要使用 CRON 表達式指定排程，請執行下列動作。

1. 開啟 Data Wrangler 流程。

1. 選擇 **建立任務**。

1. （選用） 對於**輸出 KMS 金鑰**，請指定 AWS KMS 金鑰來設定任務的輸出。

1. 選擇 **下一步，2.。設定任務**。

1. 選取**關聯排程**。

1. 選擇**建立新排程**。

1. 針對**排程名稱**，請指定排程的名稱。

1. 選擇**建立**。

1. (選用) 選擇**新增另一個排程**，在另一個排程執行任務。
**注意**  
您最多可以關聯兩個排程。這些排程是獨立的，除非時間重疊，否則不會相互影響。

1. 選擇下列其中一項：
   + **立即排程並執行** — Data Wrangler 任務會立即執行，之後按排程執行。
   + **僅限排程** — Data Wrangler 任務只會在您指定的排程上執行。

1. 選擇**執行**。

------

您可以使用 Amazon SageMaker Studio Classic 檢視排程要執行的任務。您的處理任務會在 Pipelines 內執行。每個處理任務都有自己的管道。它的運作方式為管道內的處理步驟。您可以檢視您在管道中建立的排程。如需在檢視管道更多資訊，請參閱[檢視管道的詳細資訊](pipelines-studio-list.md)。

使用下列程序來檢視您已排定的任務。

若要檢視您已排定的任務，請執行下列操作。

1. 開啟 Amazon SageMaker Studio Classic。

1. 開啟管道

1. 檢視您已建立之任務管道。

   執行任務的管道字首會使用任務名稱。例如，如果您已建立名為 `housing-data-feature-enginnering` 的任務，則管道的名稱為 `data-wrangler-housing-data-feature-engineering`。

1. 選擇包含任務的管道。

1. 檢視管道的狀態。**狀態**為**成功**的管道表示已成功執行處理任務。

若要停止執行處理任務，請執行下列動作：

若要停止執行處理任務，請刪除指定排程的事件規則。刪除事件規則會停止執行與該排程相關聯的所有任務。如需刪除規則的相關資訊，請參閱[停用或刪除 Amazon EventBridge 規則](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-delete-rule.html)。

您也可以停止和刪除與排程相關聯的管道。如需停止管道的相關資訊，請參閱 [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)。如需刪除管道的相關資訊，請參閱 [DeletePipeline](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeletePipeline.html#API_DeletePipeline_RequestSyntax)。

# 使用 Amazon SageMaker Studio Classic 筆記本中的互動式資料準備小工具取得資料洞見
<a name="data-wrangler-interactively-prepare-data-notebook"></a>

使用 Data Wrangler 資料準備小工具與您的資料互動、取得視覺效果、探索可行的洞見，以及修正資料品質問題。

您可以從 Amazon SageMaker Studio Classic 筆記本存取資料準備小工具。小工具會為每一欄建立視覺效果，協助您進一步了解其分佈情況。如果欄有資料品質問題，該欄標題會顯示警告。

若要查看資料品質問題，請選取顯示警告的欄標題。您可以使用從洞見和視覺效果取得的資訊，套用小工具的內建轉換，協助您解決問題。

例如，小工具可能會偵測到欄只有一個唯一值，並顯示警告。警告提供從資料集捨棄欄的選項。

## 立即開始執行小工具
<a name="data-wrangler-interactively-prepare-data-notebook-getting-started"></a>

使用以下資訊，協助您開始執行筆記本。

在 Amazon SageMaker Studio Classic 開啟筆記本。如需開啟筆記本的相關資訊，請參閱[建立或開啟 Amazon SageMaker Studio Classic 筆記本](notebooks-create-open.md)。

**重要**  
若要執行小工具，筆記本必須使用下列其中一個映像：  
Python 3 (資料科學)，配備 Python 3.7
Python 3 (資料科學 2.0)，配備 Python 3.8
Python 3 (資料科學 3.0)，配備 Python 3.10
SparkAnalytics 1.0
SparkAnalytics 2.0
如需基礎映像的更多相關資訊，請參閱[Amazon SageMaker 映像可與 Studio Classic 筆記本搭配使用](notebooks-available-images.md)。

使用以下程式碼匯入資料準備小工具和 Pandas。小工具使用 Pandas DataFrames 分析您的資料。

```
import pandas as pd
import sagemaker_datawrangler
```

以下程式碼範例會將檔案載入名為 `df` 的資料框。

```
df = pd.read_csv("example-dataset.csv")
```

您可以使用任何格式的資料集，並且當成 Pandas DataFrames 物件載入。如需 Pandas 格式的更多相關資訊，請參閱 [IO 工具 (文字、CSV、HDF5…)](https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html)。

下列儲存格會執行 `df` 變數，啟動小工具。

```
df
```

資料框的最上方有以下選項：
+ **檢視 Pandas 表格** — 在互動式視覺效果與 Pandas 表格之間切換。
+ **使用資料集中的所有列計算洞見。使用整個資料集可能會增加產生洞見所需的時間。**— 如果您未選取此選項，Data Wrangler 會計算資料集前 10,000 列的洞見。

資料框會顯示資料集的前 1000 行。每個欄標題都有一個堆疊長條圖，顯示欄的特性。標頭會顯示有效值、無效值和缺少值的比例。您可以將游標暫留在堆疊長條圖的不同部分，取得計算出來的百分比。

每欄標題都有視覺化。以下顯示欄可以有的視覺化類型：
+ 分類 - 長條圖
+ 數值 - 長條圖
+ 日期時間 - 長條圖
+ 文字 - 長條圖

針對每個視覺化，資料準備小工具會以橘色強調顯示極端值。

當您選擇欄時，它會開啟一個側面板。側面板會顯示**洞見**索引標籤。窗格提供下列值類型的計數：
+ 無效值 — 類型與欄類型不符的值。
+ 缺少值 — 缺少的值，例如 `NaN` 或 `None`。
+ 有效值 — 既非缺少也不是無效的值。

針對數值欄，**洞見**索引標籤會顯示下列總結統計資料：
+ 下限 — 最小值。
+ 上限 — 最大值。
+ 平均值 – 值的平均值。
+ 模式 — 最常顯示的值。
+ 標準偏差 — 值的標準差。

針對分類欄，**洞見**索引標籤會顯示下列總結統計資料：
+ 唯一值 — 欄中唯一值的數量。
+ 模式 — 最常顯示的值。

標題中有警告圖示的欄存在資料品質問題。選擇欄會開啟**資料品質**索引標籤，您可以使用該標籤尋找轉換資料，協助您修正問題。警告有下列其中一個嚴重性等級：
+ 低 — 可能不會影響您的分析，但可能有助於修復的問題。
+ 中 — 可能會影響您的分析，但可能並不重要的問題。
+ 高 — 我們強烈建議修復的嚴重問題。

**注意**  
小工具會對欄進行排序，在資料框最上方顯示存在資料品質問題的值。它也會強調顯示造成問題的值。強調顯示的顏色對應嚴重性等級。

在**建議的轉換**下，您可以選擇轉換，修復資料品質問題。該小工具可以提供多個修復此問題的轉換。它可以為最適合該問題的轉換提供建議。您可以將游標移到轉換上，取得該轉換的更多相關資訊。

若要將轉換套用至資料集，請選擇**套用並匯出程式碼**。轉換會修改資料集，並以修改後的值更新視覺化。轉換的程式碼會出現在筆記本的下列儲存格中。如果您將其他轉換套用至資料集，小工具會將轉換附加至儲存格。您可以透過小工具產生的程式碼執行下列工作：
+ 自訂後讓它更符合您的需求。
+ 在自己的工作流程使用它。

您可以重新執行筆記本中的所有儲存格，重現已完成所有的轉換。

小工具可以提供目標欄的洞見和警告。目標欄是您嘗試預測的欄。使用以下程序取得目標欄洞見。

若要取得目標欄洞見，請執行下列動作。

1. 選擇您要當成目標欄的欄。

1. 選擇**選擇作為目標欄**。

1. 選擇問題類型。小工具的洞見和警告是針對問題類型量身打造。以下是動作類型：
   + **分類** — 目標欄具有分類資料。
   + **回歸** — 目標欄具有數值資料。

1. 選擇**執行**。

1. (選用) 在**目標欄洞見**下，選擇其中一個建議的轉換。

## 小工具中洞見和轉換的參考
<a name="data-wrangler-notebook-dataprep-assistant-reference"></a>

針對功能欄 (不是目標欄的欄)，您可以取得下列洞見，就資料集的問題警告您。
+ **缺少值** — 欄缺少值，例如 `None`、`NaN` (不是數字) 或 `NaT` (非時間戳記)。許多機器學習演算法不支援輸入資料中的缺少值。因此，在缺少資料的列輸入或捨棄它們，是關鍵的資料準備步驟。如果您看到缺少值警告，您可以使用下列其中一個轉換更正此問題。
  + **刪除缺少** — 捨棄有缺少值的列。我們建議您，如果遺失資料的列百分比較小，而且不適合歸於缺少值，請捨棄列。
  + **以新值取代** — 以 `Other` 取代文字缺少值。您可以在輸出程式碼中，將 `Other` 變更為不同的值。用 0 取代數值缺少值。
  + **以平均值取代** — 以欄的平均值取代缺少值。
  + **以中位數取代** — 以欄的中位數取代缺少值。
  + **捨棄欄** — 從資料集捨棄有缺少值的欄。我們建議，如果有很高百分比的列遺失資料，請捨棄整欄。
+ **偽裝的缺少值** — 此欄具有偽裝缺少值。偽裝的缺少值是未明確編碼為缺少值的值。例如，不要使用 `NaN` 代表缺少值，值可以使用 `Placeholder`。您可以使用下列其中一個轉換處理缺少值：
  + **刪除缺少** — 捨棄有缺少值的列
  + **以新值取代** — 以 `Other` 取代文字缺少值。您可以在輸出程式碼中，將 `Other` 變更為不同的值。用 0 取代數值缺少值。
+ **常數欄** — 欄只有一個值。因此，它沒有預測能力。強烈建議您使用**捨棄欄**轉換，將欄從資料集捨棄。
+ **ID 欄** — 欄沒有重複值。欄中所有的值都是唯一。值可能是 ID 或資料庫金鑰。如果沒有其他資訊，該欄就沒有預測能力。強烈建議您使用**捨棄欄**轉換，將欄從資料集捨棄。
+ **高基數** — 欄具有很高百分比的唯一值。高基數限制了分類欄的預測能力。在分析中檢查欄的重要性，並考慮使用**捨棄欄**轉換將欄捨棄。

針對目標欄，您可以取得下列洞見，就資料集的問題警告您。您可以透過隨附警告的建議轉換更正問題。
+ **目標中的混合資料類型 (迴歸)** — 目標欄中有一些非數值。可能存在資料輸入錯誤。建議您移除具有無法轉換之值的列。
+ **經常標籤** — 目標欄中某些值出現的頻率高於迴歸內容中的正常值。資料收集或處理可能有錯誤。經常出現的類別可能表示，該值被當成預設值，或者它是缺少值的預留位置。我們建議使用**以新值取代**轉換，用 `Other` 取代缺少值。
+ **每個類別的執行個體太少** — 目標欄的類別很少出現。某些類別沒有足夠的列，目標欄無法發揮作用。您可以使用下列其中一個轉換：
  + **捨棄稀有目標** — 將觀察少於十的唯一值捨棄。例如，如果值在欄出現九次，則捨棄 `cat` 這個值。
  + **取代稀有目標** — 以 `Other` 這個值取代資料集中很少出現的類別。
+ **類別過於不平衡 (多類別分類)** — 資料集中有些類別比其他類別出現的頻率高很多。類別不平衡可能影響預測準確性。為了獲得最準確的預測，我們建議使用目前有出現頻率較低之類別的列更新資料集。
+ **大量的類別/過多的類別** - 目標欄中有大量類別。類別多可能導致訓練時間延長，或是預測品質較差。我們建議您執行下列其中一項操作：
  + 將某些類別分組為專屬的類別。例如，如果六個類別密切相關，我們建議您用單一類別代表這些類別。
  + 使用可彈性適應多個類別的機器學習 (ML) 演算法。

# 安全與許可
<a name="data-wrangler-security"></a>

當您從 Athena 或 Amazon Redshift 查詢資料時，查詢的資料集會自動存放在您使用 Studio Classic AWS 之區域的預設 SageMaker AI S3 儲存貯體中。此外，當您從 Amazon SageMaker Data Wrangler 匯出 Jupyter 筆記本並執行它時，您的資料流量或 .flow 檔案會儲存至相同的預設儲存貯體，字首為 *data\$1wrangler\$1flow。*

針對高階安全性需求，您可以設定儲存貯體政策，以限制可存取此預設 SageMaker AI S3 儲存貯體的 AWS 角色。使用以下各節，將此類的政策新增至 S3 儲存貯體。若要遵循此頁面上的指示，請使用 AWS Command Line Interface (AWS CLI)。若要了解如何進行，請參閱《IAM [AWS 使用者指南》中的設定 CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。

此外，您需要向使用 Data Wrangler 的每個 IAM 角色授予存取許可，以存取必要的資源。如果您不需要用來存取 Data Wrangler 的 IAM 角色的精細許可，您可以將 IAM 受管政策，[https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)，新增至用於建立 Studio Classic 使用者的 IAM 角色。本政策授予使用 Data Wrangler 的完整許可。如果您需要更精細的許可，請參閱[授權 IAM 角色許可，以使用 Data Wrangler](#data-wrangler-security-iam-policy)一節。

## 新增儲存貯體政策，以限制存取匯入至 Data Wrangler 的資料集
<a name="data-wrangler-security-bucket-policy"></a>

您可以使用 Amazon S3 儲存貯體政策，將新增政策至包含 Data Wrangler 資源的 S3 儲存貯體。Data Wrangler 上傳至您使用 Studio Classic AWS 之區域中預設 SageMaker AI S3 儲存貯體的資源包括下列項目：
+ 查詢 Amazon Redshift 的結果。這些儲存為 *Redshift/* 字首。
+ 查詢 Athena 的結果。這些儲存為*Athena/* 字首。
+ 當您執行Data Wrangler 產生的匯出 Jupyter 筆記本 時，.flow 檔案會上傳到 Amazon S3。這些資料儲存為 *data\$1wrangler\$1flows/* 字首。

使用下列程序建立一個 S3 儲存貯體政策，您可以新增此政策來限制 IAM 角色對該儲存貯體的存取。若要了解如何新增政策至 S3 儲存貯體，請參閱[如何新增 S3 儲存貯體政策？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-bucket-policy.html)。

**若要在存放 Data Wrangler 資源的 S3 儲存貯體上設定儲存貯體政策：**

1. 設定您希望存取 Data Wrangler 的一或多個 IAM 角色。

1. 開啟命令提示字元或 Shell。針對您建立的每個角色，將*角色名稱*取代為角色的名稱，然後執行下列動作：

   ```
   $ aws iam get-role --role-name role-name
   ```

   在回應中，您會看到開頭為 `AROA` 的 `RoleId` 字串。複製此字串。

1. 將下列政策新增至您使用 Data Wrangler 之 AWS 區域中的 SageMaker AI 預設儲存貯體。將*區域*取代為儲存貯體所在的 AWS 區域，並將 *account-id* 取代為 AWS 您的帳戶 ID。將`userId`開頭為 *AROAEXAMPLEID* 的 取代為 AWS 您要授予 Data Wrangler 使用許可的角色 IDs。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Principal": "*",
         "Action": "s3:*",
         "Resource": [
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/data_wrangler_flows/",
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/data_wrangler_flows/*",
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/athena",
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/athena/*",
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/redshift",
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/redshift/*"
           
         ],
         "Condition": {
           "StringNotLike": {
             "aws:userId": [
               "AROAEXAMPLEID_1:*",
               "AROAEXAMPLEID_2:*"
             ]
           }
         }
       }
     ]
   }
   ```

------

## 建立一個 Data Wrangler 允許清單
<a name="data-wrangler-security-allowlist"></a>

每當使用者從 Amazon SageMaker Studio Classic 使用者介面開始執行 Data Wrangler 時，都會呼叫 SageMaker AI 應用程式介面 (API) 以建立 Data Wrangler 應用程式。

依照預設值，您的組織可能不會向您的使用者提供進行這些 API 呼叫的許可。若要提供許可，您必須使用以下政策範本建立和連接政策至使用者的 IAM 角色：[Data Wrangler 允許清單範例](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/DataWranglerAllowListExample.txt)。

**注意**  
上述政策範例只會讓您的使用者存取 Data Wrangler 應用程式。

如需有關建立政策的詳細資訊，請參閱中 [在 JSON 標籤上建立政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor)。建立政策時，請從 JSON 索引標籤的 [Data Wrangler 允許清單範例](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/DataWranglerAllowListExample.txt)複製並貼上 **JSON** 政策。

**重要**  
刪除任何阻礙使用者執行下列作業的 IAM 政策：  
[CreateApp](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateApp.html)
[DescribeApp](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeApp.html)
如果您不刪除政策，您的使用者仍可能受到這些政策的影響。

使用範本建立政策後，請將它連接到使用者的 IAM 角色。如需如何連接政策的詳細資訊，請參閱 [新增 IAM 身分許可 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)。

## 授權 IAM 角色許可，以使用 Data Wrangler
<a name="data-wrangler-security-iam-policy"></a>

您可以授權 IAM 角色許可，以便將 Data Wrangler 與一般 IAM 受管政策 [https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess) 搭配使用。這是一般政策，其中包含使用所有 SageMaker AI 服務所需的[權限](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-AmazonSageMakerFullAccess.html)。此政策授予 IAM 角色對 Data Wrangler 的完整存取權。使用 Data Wrangler 授予存取權時`AmazonSageMakerFullAccess`，您應該注意下列事項：
+ 如果您從 Amazon Redshift 匯入資料，則**資料庫使用者**名稱必須具有字首 `sagemaker_access`。
+ 此受管政策僅授權存取許可，存取名稱中具有 `SageMaker AI`、`SageMaker AI`、`sagemaker` 或 `aws-glue` 其中之一的儲存貯體。如果想要使用 Data Wrangler 從 S3 儲存貯體匯入，但名稱中沒有這些詞組，請參閱本頁的最後一節，了解如何授予許可 IAM 實體存取 S3 儲存貯體的權限。

如果您有高安全性需求，您可以將本節中的政策連接到 IAM 實體，授予所需的權限，以使用 Data Wrangler。

如果您在 Amazon Redshift 或 Athena 中有資料集需要 IAM 角色從 Data Wrangler 匯入，您必須對該實體新增政策才能存取這些資源。下列政策是從 Amazon Redshift 和 Athena 匯入資料的最嚴格的限制政策，您可以用來授與 IAM 角色許可。

若要了解如何將自訂政策連接至 IAM 角色，請參閱 IAM 使用者指南中的[管理 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html#create-managed-policy-console)。

**授與 Athena 資料集匯入存取權的政策範例**

下列政策假設 IAM 角色具有權限，可存取透過別的 IAM 政策存放資料的基礎 S3 儲存貯體。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:ListTableMetadata",
                "athena:GetQueryExecution",
                "athena:GetQueryResults",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateTable"
            ],
            "Resource": [
                "arn:aws:glue:*:*:table/*/sagemaker_tmp_*",
                "arn:aws:glue:*:*:table/sagemaker_featurestore/*",
                "arn:aws:glue:*:*:catalog",
                "arn:aws:glue:*:*:database/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:DeleteTable"
            ],
            "Resource": [
                "arn:aws:glue:*:*:table/*/sagemaker_tmp_*",
                "arn:aws:glue:*:*:catalog",
                "arn:aws:glue:*:*:database/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetDatabases",
                "glue:GetTable",
                "glue:GetTables"
            ],
            "Resource": [
                "arn:aws:glue:*:*:table/*",
                "arn:aws:glue:*:*:catalog",
                "arn:aws:glue:*:*:database/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateDatabase",
                "glue:GetDatabase"
            ],
            "Resource": [
                "arn:aws:glue:*:*:catalog",
                "arn:aws:glue:*:*:database/sagemaker_featurestore",
                "arn:aws:glue:*:*:database/sagemaker_processing",
                "arn:aws:glue:*:*:database/default",
                "arn:aws:glue:*:*:database/sagemaker_data_wrangler"
            ]
        }
    ]
}
```

------

****授與 Amazon Redshift 資料集匯入存取權的政策範例****

下列政策授予許可，可使用名稱中具有 `sagemaker_access` 字首的資料庫使用者設定與 Data Wrangler 之間的 Amazon Redshift 連線。若要授予許可，讓使用其他資料庫使用者連線，請在下列政策 `"Resources"` 中新增其他項目。下列政策假設 IAM 角色有存取許可，可透過別的 IAM 政策 (如果適用) 儲存資料的底層 S3 儲存貯體。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:ExecuteStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:CancelStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListSchemas",
                "redshift-data:ListTables"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials"
            ],
            "Resource": [
                "arn:aws:redshift:*:*:dbuser:*/sagemaker_access*",
                "arn:aws:redshift:*:*:dbname:*"
            ]
        }
    ]
}
```

------

**授予存取權，存取 S3 儲存貯體的政策**

如果您的資料集存放在 Amazon S3 中，您可以使用類似下列的政策授與 IAM 角色存取許可，存取此儲存貯體。此範例授予對名為 *test* 的儲存貯體的程式讀取寫入存取權。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::test"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3:::test/*"]
    }
  ]
}
```

------

若要從 Athena 和 Amazon Redshift 匯入資料，您必須授予 IAM 角色許可，以在正在使用的區域 AWS Data Wrangler 中預設 Amazon S3 儲存貯體下存取下列字首：`athena/`、`redshift/`。如果預設 Amazon S3 儲存貯體尚未存在於 AWS 區域中，您也必須授予 IAM 角色許可，才能在此區域中建立儲存貯體。

此外，如果您希望 IAM 角色能夠使用 Amazon SageMaker Feature Store、Pipelines 和 Data Wrangler 任務匯出選項，您必須授予存取權，存取此儲存貯體中的字首 `data_wrangler_flows/`。

 Data Wrangler 使用 `athena/` 和 `redshift/` 字首來儲存預覽檔案和匯入的資料集。如需詳細資訊，請參閱 [匯入資料儲存](data-wrangler-import.md#data-wrangler-import-storage)。

當您執行從 Data Wrangler 匯出的 Jupyter 筆記本時，Data Wrangler 會使用 `data_wrangler_flows/` 字首來儲存 .flow 檔案。如需詳細資訊，請參閱 [Export (匯出)](data-wrangler-data-export.md)。

使用類似下列的政策來授權前面段落中描述的許可。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/data_wrangler_flows/",
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/data_wrangler_flows/*",
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/athena",
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/athena/*",
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/redshift",
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/redshift/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::sagemaker-us-east-1-111122223333"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        }
    ]
}
```

------

您也可以指定 Amazon S3 儲存貯體 URI，從另一個 AWS 帳戶存取 Amazon S3 儲存貯體中的資料。為此，授予其他帳戶中 Amazon S3 儲存貯體存取權的 IAM 政策，應使用類似下列範例的政策，其中 `BucketFolder` 是使用者儲存貯體中的特定目錄 `UserBucket`。應將此政策新增至用戶，授予存取其儲存貯體的權限。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::UserBucket/BucketFolder/*"
            },
                {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket"
                ],
                "Resource": "arn:aws:s3:::UserBucket",
                "Condition": {
                "StringLike": {
                    "s3:prefix": [
                    "BucketFolder/*"
                    ]
                }
            }
        } 
    ]
}
```

------

存取儲存貯體的使用者 (非儲存貯體擁有者) 必須將類似下列範例的政策新增至其使用者。請注意，以下 `AccountX` 和 `TestUser` 分別指值儲存貯體擁有者及其使用者。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/TestUser"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::UserBucket/BucketFolder/*"
            ]
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/TestUser"
            },
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::UserBucket"
            ]
        }
    ]
}
```

------

**授予存取權以使用 SageMaker AI Studio 的政策範例**

使用類似下列的政策來建立一個 IAM 執行角色，其可以用來設定 Studio Classic 執行個體。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreatePresignedDomainUrl",
                "sagemaker:DescribeDomain",
                "sagemaker:ListDomains",
                "sagemaker:DescribeUserProfile",
                "sagemaker:ListUserProfiles",
                "sagemaker:*App",
                "sagemaker:ListApps"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Snowflake 和 Data Wrangler
<a name="data-wrangler-security-snowflake"></a>

 AWS 資源的所有許可都會透過連接至 Studio Classic 執行個體的 IAM 角色進行管理。Snowflake 管理員可以管理 Snowflake 特定的許可，因為他們可以將細部的許可和權限授予每個 Snowflake 使用者。包含資料庫、結構描述、資料表、倉儲，及儲存整合物件。您必須確保在 Data Wrangler 外部設定正確的許可。

請注意，Snowflake `COPY INTO Amazon S3` 命令預設會透過公有網際網路將資料從 Snowflake 移至 Amazon S3，但傳輸中的資料會使用 SSL 確保資料安全。Amazon S3 中的靜態資料會以預設值 AWS KMS key使用 SSE-KMS 加密。

就 Snowflake 憑證儲存而言，Data Wrangler 不會儲存客戶憑證。Data Wrangler 使用 Secrets Manager 將憑證儲存在機密中，並輪換機密，作為最佳實務安全計畫的一環。Snowflake 或 Studio Classic 管理員必須確保資料科學家的 Studio Classic 執行角色被授予許可，能對憑證上儲存的秘密執行 `GetSecretValue`。如果已連接到 Studio Classic 執行角色，則 `AmazonSageMakerFullAccess` 政策具有必要的許可來讀取 Data Wrangler 建立的機密，以及按照上述指示中的命名和標籤慣例建立的機密。不遵守慣例的機密必須分別授予存取權。我們建議您使用 Secrets Manager 來防止透過不安全的通道共用憑證；但是請注意，已登入使用者可以在 Studio Classic 中啟動終端機或 Python 筆記本，然後從秘密管理員 API 調用 API 呼叫來擷取純文字密碼。

## 使用 進行資料加密 AWS KMS
<a name="data-wrangler-security-kms"></a>

在 Data Wrangler 中，您可以解密加密的檔案，並將其新增至 Data Wrangler 流程。您也可以使用預設金鑰或您提供的 AWS KMS 金鑰來加密轉換的輸出。

如果檔案具有下列項目，您可以匯入檔案：
+ 伺服器端加密
+ 加密類型為 SSE-KMS

若要解密檔案並匯入至 Data Wrangler 流程，您必須新增 SageMaker Studio Classic 使用者，以作為金鑰使用者。

下列螢幕擷取畫面顯示一個 Studio Classic 使用者角色新增為金鑰使用者。如需進行此變更，請參閱 [IAM 角色](https://console.aws.amazon.com/iam/home#/roles)以存取左側面板下的使用者。

![\[主控台中的金鑰使用者區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/data-wrangler-kms.png)


### 為 Data Wrangler 匯入資料儲存設定 Amazon S3 客戶受管金鑰
<a name="data-wrangler-s3-cmk-setup"></a>

 根據預設，Data Wrangler 使用具有下列命名慣例的 Amazon S3 儲存貯體：`sagemaker-region-account number`。例如，如果您的帳戶號碼是 `111122223333`，而且您在 us-east-1 使用 Studio Classic，則您匯入的資料集會以下列命名慣例儲存：`sagemaker-us-east-1-111122223333`。

下列指示說明如何為預設 Amazon S3 儲存貯體設定客戶受管金鑰。

1. 若要啟用伺服器端加密，並為您的預設 S3 儲存貯體設定客戶受管金鑰，請參閱[使用 KMS 加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。

1. 在執行步驟 1 之後，導覽至 AWS KMS 中的 AWS 管理主控台。尋找您在上一步的步驟 1 中選取的客戶受管金鑰，並將 Studio Classic 角色新增為金鑰使用者。請依照[允許金鑰使用者使用客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users)中的指示，以完成這項作業。

### 加密您匯出的資料
<a name="data-wrangler-export-kms"></a>

您可以使用以下其中一個方法來加密匯出的資料：
+ 指定您的 Amazon S3 儲存貯體具有物件，請使用 SSE-KMS 加密。
+ 指定 AWS KMS 金鑰來加密您從 Data Wrangler 匯出的資料。

在**匯出資料**頁面上，指定 **AWS KMS 金鑰 ID 或 ARN 的值**。

如需使用 AWS KMS 金鑰的詳細資訊，請參閱[使用存放在 (SSE-KMS) 中的 AWS KMSAWSAWS Key Management Service 金鑰進行伺服器端加密來保護資料](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingKMSEncryption.html)。

## Amazon AppFlow 許可
<a name="data-wrangler-appflow-permissions"></a>

執行傳輸時，您必須指定具有執行傳輸許可的 IAM 角色。您可以透過具有許可使用 Data Wrangler 的相同 IAM 角色。根據預設，您用來存取 Data Wrangler 的 IAM 角色為 `SageMakerExecutionRole`。

此 IAM 角色也須具有下列許可：
+ Amazon AppFlow 的許可
+  AWS Glue Data Catalog 的許可
+ 的許可， AWS Glue 以探索可用的資料來源

當您執行傳輸時，Amazon AppFlow 會將來自傳輸的中繼資料存放在 AWS Glue Data Catalog 中。Data Wrangler 使用目錄中的中繼資料來判斷它是否可用，以供您查詢和匯入。

若要將許可新增至 Amazon AppFlow，請將 `AmazonAppFlowFullAccess` AWS 受管政策新增至 IAM 角色。如需更多新增政策的更多相關資訊，請參閱[新增和移除 IAM 身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

如果您要將資料傳輸到 Amazon S3，則您必須連接以下政策。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketTagging",
        "s3:ListBucketVersions",
        "s3:CreateBucket",
        "s3:ListBucket",
        "s3:GetBucketPolicy",
        "s3:PutEncryptionConfiguration",
        "s3:GetEncryptionConfiguration",
        "s3:PutBucketTagging",
        "s3:GetObjectTagging",
        "s3:GetBucketOwnershipControls",
        "s3:PutObjectTagging",
        "s3:DeleteObject",
        "s3:DeleteBucket",
        "s3:DeleteObjectTagging",
        "s3:GetBucketPublicAccessBlock",
        "s3:GetBucketPolicyStatus",
        "s3:PutBucketPublicAccessBlock",
        "s3:PutAccountPublicAccessBlock",
        "s3:ListAccessPoints",
        "s3:PutBucketOwnershipControls",
        "s3:PutObjectVersionTagging",
        "s3:DeleteObjectVersionTagging",
        "s3:GetBucketVersioning",
        "s3:GetBucketAcl",
        "s3:PutObject",
        "s3:GetObject",
        "s3:GetAccountPublicAccessBlock",
        "s3:ListAllMyBuckets",
        "s3:GetAnalyticsConfiguration",
        "s3:GetBucketLocation"
      ],
      "Resource": "*"
    }
  ]
}
```

------

若要新增 AWS Glue 許可，請將 `AWSGlueConsoleFullAccess`受管政策新增至 IAM 角色。如需 Amazon AppFlow AWS Glue 許可的詳細資訊，請參閱 【link-to-appflow-page】。

Amazon AppFlow 需要存取 AWS Glue 和 Data Wrangler，才能匯入您已傳輸的資料。若要授與 Amazon AppFlow 存取權限，請將下列信任政策新增至 IAM 角色。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:root",
                "Service": [
                    "appflow.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

若要在 Data Wrangler 中顯示 Amazon AppFlow 資料，請將下列政策新增至 IAM 角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "glue:SearchTables",
            "Resource": [
                "arn:aws:glue:*:*:table/*/*",
                "arn:aws:glue:*:*:database/*",
                "arn:aws:glue:*:*:catalog"
            ]
        }
    ]
}
```

------

## 在 Data Wrangler 中使用生命週期組態
<a name="data-wrangler-lifecycle-configuration"></a>

您可能擁有設定為執行核心閘道應用程式的 Amazon EC2 執行個體，而不是 Data Wrangler 應用程式。核心閘道應用程式可讓您存取環境，以及您用來執行 Studio Classic 筆記本和終端機的核心。Data Wrangler 應用程式是執行 Data Wrangler 的使用者介面應用程式。非 Data Wrangler 執行個體的 Amazon EC2 執行個體需要修改其生命週期組態，才能執行 Data Wrangler。生命週期組態是自動化自訂 Amazon SageMaker Studio Classic 環境的 Shell 指令碼。

如需生命週期組態的更多相關資訊，請參閱[使用生命週期組態自訂 Amazon SageMaker Studio Classic](studio-lcc.md)。

執行個體的預設生命週期組態不支援使用 Data Wrangler。您可以對預設組態進行下列修改，以便在執行個體中使用 Data Wrangler。

```
#!/bin/bash
set -eux
STATUS=$(
python3 -c "import sagemaker_dataprep"
echo $?
)
if [ "$STATUS" -eq 0 ]; then
echo 'Instance is of Type Data Wrangler'
else
echo 'Instance is not of Type Data Wrangler'

# Replace this with the URL of your git repository
export REPOSITORY_URL="https://github.com/aws-samples/sagemaker-studio-lifecycle-config-examples.git"

git -C /root clone $REPOSTIORY_URL

fi
```

您可以將指令碼存為 `lifecycle_configuration.sh`。

將生命週期組態連接至您的 Studio Classic 網域或使用者設定檔。如需建立和管理生命週期組態的更多相關資訊，請參閱[建立生命週期組態並將其與 Amazon SageMaker Studio Classic 建立關聯](studio-lcc-create.md)。

下列指示說明如何將生命週期組態連接至 Studio Classic 網域或使用者設定檔。

建立或連接生命週期組態時，可能會發生錯誤。如需 S3 生命週期組態錯誤偵錯的資訊，請參閱[KernelGateway 應用程式失敗](studio-lcc-debug.md#studio-lcc-debug-kernel)。

# 版本備註
<a name="data-wrangler-release-notes"></a>

Data Wrangler 會定期更新新功能和錯誤修正。若要升級您在 Studio Classic 中使用的 Data Wrangler 版本，請遵循[關閉並更新 Amazon SageMaker Studio Classic 應用程式](studio-tasks-update-apps.md)中的指示操作。


****  

| 版本備註 | 
| --- | 
|  **8/31/2023** 新功能： 您現在可以針對整個資料集建立資料品質和深入分析的報告。如需詳細資訊，請參閱[取得有關資料和資料品質的洞察](data-wrangler-data-insights.md)。 **5/20/2023** 新功能： 您現在可以從 Salesforce 資料雲端匯入您的資料。如需詳細資訊，請參閱[從 Salesforce 資料雲端匯入資料。](data-wrangler-import.md#data-wrangler-import-salesforce-data-cloud)。 **4/18/2023** 新功能： 您現在可以取得 Amazon Personalize 可以解譯之格式的資料。如需詳細資訊，請參閱[Amazon Personalize 的地圖資料欄](data-wrangler-transform.md#data-wrangler-transform-personalize)。 **3/1/2023** 新功能： 您現在可以使用 Hive 從 Amazon EMR 匯入您的資料。如需詳細資訊，請參閱[從 Amazon EMR 匯入資料](data-wrangler-import.md#data-wrangler-emr)。 **12/10/2022** 新功能： 您現在可以將 Data Wrangler 流程匯出到推論端點。如需詳細資訊，請參閱[匯出至推論端點](data-wrangler-data-export.md#data-wrangler-data-export-inference)。 新功能： 您現在可以使用互動式筆記本小工具來準備資料。如需詳細資訊，請參閱[使用 Amazon SageMaker Studio Classic 筆記本中的互動式資料準備小工具取得資料洞見](data-wrangler-interactively-prepare-data-notebook.md)。 新功能： 您現在可以從 SaaS 平台匯入資料。如需詳細資訊，請參閱[從軟體即服務 (SaaS) 平台匯入資料](data-wrangler-import.md#data-wrangler-import-saas)。 **10/12/2022** 新功能： 您現在可以重複使用適用於不同的資料集的資料流程。如需詳細資訊，請參閱[重複使用不同資料集的資料流量](data-wrangler-parameterize.md)。 **10/05/2022** 新功能： 您現在可以使用主體元件分析 (PCA) 做為轉換。如需詳細資訊，請參閱[降低資料集內的維度](data-wrangler-transform.md#data-wrangler-transform-dimensionality-reduction)。 **10/05/2022** 新功能： 您現在可以重新擬合 Data Wrangler 流程中的參數。如需詳細資訊，請參閱[Export (匯出)](data-wrangler-data-export.md)。 **10/03/2022** 新功能： 您現在可以部署 Data Wrangler 流程的模型。如需詳細資訊，請參閱[在資料流程上自動訓練模型](data-wrangler-autopilot.md)。 **9/20/2022** 新功能： 您現在可以在 Athena 設定資料保留期。如需詳細資訊，請參閱[從 Athena 匯入資料](data-wrangler-import.md#data-wrangler-import-athena)。 **6/9/2022** 新功能： 您現在可以使用 Amazon SageMaker Autopilot，直接訓練 Data Wrangler 流程的模型。如需詳細資訊，請參閱[在資料流程上自動訓練模型](data-wrangler-autopilot.md)。 **5/6/2022** 新功能： 您現在可以使用額外的 m5 和 r5 執行個體。如需詳細資訊，請參閱[執行個體](data-wrangler-data-flow.md#data-wrangler-data-flow-instances)。 **4/27/2022** 新功能： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-wrangler-release-notes.html) **4/1/2022** 新功能： 您現在可以使用 Databricks 做為資料來源。如需詳細資訊，請參閱[從 Databricks (JDBC) 匯入資料](data-wrangler-import.md#data-wrangler-databricks)。 **2/2/2022** 新功能： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-wrangler-release-notes.html) **10/16/2021** 新功能： Data Wrangler 現在可支援 Athena 工作群組。如需詳細資訊，請參閱[從 Athena 匯入資料](data-wrangler-import.md#data-wrangler-import-athena)。 **10/6/2021** 新功能： Data Wrangler 現在可支援轉換時間序列資料。如需詳細資訊，請參閱[轉換時間序列](data-wrangler-transform.md#data-wrangler-transform-time-series)。 **7/15/2021** 新功能： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-wrangler-release-notes.html) 增強功能： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-wrangler-release-notes.html)  錯誤修正： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-wrangler-release-notes.html) **4/26/2021**  增強功能： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-wrangler-release-notes.html) 錯誤修正： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-wrangler-release-notes.html) **2/8/2021**  新功能： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-wrangler-release-notes.html) 增強功能： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-wrangler-release-notes.html) 錯誤修正： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/data-wrangler-release-notes.html)  | 

# 疑難排解
<a name="data-wrangler-trouble-shooting"></a>

若使用 Amazon SageMaker Data Wrangler 時出現問題，我們建議您執行以下操作：
+ 如果出現錯誤訊息，則請閱讀該訊息，並在可行的狀況下解析訊息內報告的問題。
+ 確保您的 Studio Classic 使用者的 IAM 角色具有執行該動作的必要許可。如需詳細資訊，請參閱[安全與許可](data-wrangler-security.md)。
+ 如果您嘗試從 Amazon Redshift 或 Athena AWS 等其他服務匯入時發生問題，請確定您已設定必要的許可和資源來執行資料匯入。如需詳細資訊，請參閱[Import (匯入)](data-wrangler-import.md)。
+ 如果您仍然遇到問題，請選擇螢幕頂部右方的**獲取幫助**以聯繫 Data Wrangler 團隊。如需更多資訊，請參閱下列影像。  
![\[Data Wrangler 主控台中 Data Wrangler 說明表單的位置。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/get-help/get-help.png)  
![\[Data Wrangler 主控台中的 Data Wrangler 說明表單。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/get-help/get-help-forms.png)

作為最後的手段，您可以嘗試重新啟動 Data Wrangler 正在執行的核心。

1. 儲存並結束您要重新啟動核心的 .flow 檔案。

1. 選取****正在執行的終端機和核心****圖示，如下列影像所示。  
![\[主控台中執行中終端機和核心圖示的位置。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/stop-kernel-option.png)

1. 選取您要終止核心之 .flow 檔案右側的**停止**圖示，如下列影像所示。  
![\[主控台中停止圖示的位置。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/mohave/stop-kernel.png)

1. 重新整理瀏覽器。

1. 重新開啟您之前使用的 .flow 檔案。

## 針對 Amazon EMR 的問題進行故障診斷
<a name="data-wrangler-trouble-shooting-emr"></a>

使用以下資訊，協助您對使用 Amazon EMR 時出現的錯誤進行故障診斷。
+ 連線故障 — 如果連線失敗並顯示下列訊息 `The IP address of the EMR cluster isn't private error message`，您的 Amazon EMR 叢集可能尚未在私有子網路中啟動。作為最佳安全實務，Data Wrangler 僅支援連線至私有 Amazon EMR 叢集。選擇您啟動 EMR 叢集的私有 EC2 子網路。
+ 連線中斷和逾時 — 此問題很可能是因為網路連線問題所致。開始連線至叢集之後，螢幕不會重新整理。大約 2 分鐘後，您可能會看到以下錯誤 `JdbcAddConnectionError: An error occurred when trying to connect to presto: xxx: Connect to xxx failed: Connection timed out (Connection timed out) will display on top of the screen.`。

  錯誤可能有兩個根本原因：
  + Amazon EMR 和 Amazon SageMaker Studio Classic 位於不同的 VPC 中。我們建議在同一個 VPC 中啟動 Amazon EMR 和 Studio Classic。您還可以使用 Amazon VPC 對等。如需更多資訊，請參閱[什麼是 VPC 對等？](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)。
  + Amazon EMR 主安全群組在用於 Presto 的連接埠上缺少 Amazon SageMaker Studio Classic 安全群組的傳入流量規則。若要解決此問題，請允許連接埠 8889 上的傳入流量。
+ 連線失敗，由於連線類型設定錯誤 — 您可能會看到以下錯誤訊息：` Data Wrangler couldn't create a connection to {connection_source} successfully. Try connecting to {connection_source} again. For more information, see Troubleshoot. If you’re still experiencing issues, contact support. `

  檢查身分驗證方法。您在 Data Wrangler 中指定的驗證方法，應符合您在叢集上使用的驗證方法。
+ 您沒有 LDAP 驗證的 HDFS 許可 — 請使用下列指引來解決此問題：[使用 Linux 憑證設定 HDFS 許可](https://docs.aws.amazon.com/whitepapers/latest/teaching-big-data-skills-with-amazon-emr/set-up-hdfs-permissions-using-linux-credentials.html)。您可以使用下列命令來登入叢集：

  ```
  hdfs dfs -mkdir /user/USERNAME
  hdfs dfs -chown USERNAME:USERNAME /user/USERNAME
  ```
+ LDAP 驗證缺少連線金鑰的錯誤 — 您可能會看到以下錯誤訊息：`Data Wrangler couldn't connect to EMR hive successfully. JDBC connection is missing required connection key(s): PWD`。

  對於 LDAP 驗證，您必須同時指定使用者名稱和密碼。儲存在 Secrets Manager 中的 JDBC URL 缺少屬性 `PWD`。
+ 當您對 LDAP 組態進行故障診斷時：建議您確認 LDAP 驗證器 (LDAP 伺服器) 已正確設定為連線至 Amazon EMR 叢集。使用 `ldapwhoami` 命令來協助您解決組態問題。以下是您可以執行的範例命令：
  + 對於 LDAP — `ldapwhoami -x -H ldaps://ldap-server`
  + 對於 LDAP — `ldapwhoami -x -H ldap://ldap-server`

  如果您已成功已設定驗證器，則命令之一應該傳回 `Anonymous`。

## Salesforce 的 故障診斷
<a name="data-wrangler-troubleshooting-salesforce-data-cloud"></a>

### 生命週期組態錯誤
<a name="data-wrangler-troubleshooting-salesforce-lcc-debug-data-cloud"></a>

當您的用戶第一次開啟 Studio Classic 時，他們可能會收到一個錯誤，指出他們的生命週期組態有問題。使用 Amazon CloudWatch 存取生命週期組態指令碼所寫入的日誌。如需生命週期組態偵錯的更多相關資訊，請參閱[在 Amazon SageMaker Studio Classic 中偵錯生命週期組態](studio-lcc-debug.md)。

如果您無法對錯誤進行偵錯，您可以手動建立組態檔案。您必須在每次刪除或重新啟動 Jupyter 伺服器時建立檔案。使用下列程序手動建立檔案。

**建立組態檔案**

1. 導覽至 Studio Classic。

1. 選擇**檔案**、**新增**、**終端機**。

1. 建立 `.sfgenie_identity_provider_oauth_config`。

1. 在文字編輯器中開啟該檔案。

1. 將包含 Secrets Manager 機密的 Amazon Resource Name (ARN) 的 JSON 物件新增至檔案。您可以透過以下範本來建立物件。

   ```
   {
     "secret_arn": "example-secret-ARN"
   }
   ```

1. 儲存您對該檔案所做的變更。

### 無法從 Data Wrangler 流程存取 Salesforce 資料雲
<a name="data-wrangler-troubleshooting-salesforce-datacloud-access"></a>

當您的使用者從 Data Wrangler 流程中選擇 **Salesforce 資料雲** 之後，他們可能會收到錯誤訊息，指出尚未符合設定連線的先決條件。可能是以下的錯誤造成：
+ Secrets Manager 中的 Salesforce 機密尚未建立。
+ 已建立 Secrets Manager 中的 Salesforce 機密，但缺少 Salesforce 標籤。
+ Secrets Manager 中的 Salesforce 秘密已在錯誤中建立 AWS 區域。例如，您的使用者將無法存取 `ca-central-1` 中的 Salesforce 資料雲，因為您已在 `us-east-1` 中建立機密。您可以將機密複寫到 `ca-central-1` 中，或使用相同憑證在 `ca-central-1` 中建立新的機密。如需有關複寫秘密的資訊，請參閱[將 AWS Secrets Manager 秘密複寫至其他 AWS 區域](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create-manage-multi-region-secrets.html) 。
+ 您的使用者用來存取 Amazon SageMaker Studio Classic 的政策缺少 的許可 AWS Secrets Manager
+ 您透過生命週期配置指定 JSON 物件的 Secrets Manager ARN 中存在拼字錯誤。
+ 包含您的 Salesforce OAuth 組態的 Secrets Manager 機密中存在拼字錯誤

### 空白頁顯示 `redirect_uri_mismatch`
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-blank-page"></a>

使用者選擇**儲存並連線**後，他們可能會被重新導向至顯示 `redirect_uri_mismatch` 的頁面。您在 Salesforce 連線應用程式設定中註冊的回呼 URI 缺少或不正確。

請使用下列網址來檢查您的 Studio Classic URL 是否已在 Salesforce 組織的連線應用程式設定中正確註冊：`https://EXAMPLE_SALESFORCE_ORG/lightning/setup/NavigationMenus/home/`。如需有關使用已連線應用程式設定的更多相關資訊，請導覽至下列 URL：`https://EXAMPLE_SALESFORCE_ORG/lightning/setup/NavigationMenus/home/`。

**注意**  
在 Salesforce 的系統中傳播 URI 大約需要十分鐘。

### 共用空間
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-shared-spaces"></a>

共用空間目前無法與 Salesforce 資料雲端整合搭配使用。您可以刪除想要使用的 Amazon SageMaker AI 網域中的共用空間，或者可以使用另一個未設定共用空間的網域。

### OAuth 重新導向錯誤
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-oauth-error"></a>

您的使用者應該能夠在選擇**連線**之後，從 Salesforce 資料雲匯入其資料。如果他們遇到錯誤，我們建議他們執行以下操作：
+ 請他們耐心等候 — 當他們重新導向回 Amazon SageMaker Studio Classic 時，最多可能需要一分鐘的時間才能完成身份驗證程序。當他們被重新導向時，我們建議告訴他們避免與瀏覽器互動。例如，不應該關閉瀏覽器標籤頁、切換至其他標籤頁，或與 Data Wrangler 流程互動。與瀏覽器互動可能會移除連線至資料雲必要的授權碼。
+ 讓您的使用者重新連接至資料雲 — 有一些暫時性問題可能會導致與 Salesforce 資料雲的連線失敗。讓您的使用者建立新的 Data Wrangler 流程，並嘗試再次連線至 Salesforce 資料雲。
+ 確保您的使用者透過 Amazon SageMaker Studio Classic 關閉所有其他標籤頁 — 在多個標籤頁中開啟 Studio Classic 可能會導致 Salesforce 資料雲端連線失敗。確保您的使用者只開啟一個 Studio Classic 索引標籤。
+ 多個使用者同時存取 Studio Classic - 一次只應有一個使用者存取一個 Amazon SageMaker AI 網域。如果有多個使用者存取同一個網域，則使用者嘗試建立至 Salesforce 資料雲端的連線可能會失敗。

更新 Data Wrangler 和 Studio Classic 也可能可以修復錯誤。如需有關更新 Data Wrangler 資訊，請參閱[更新 Data Wrangler](data-wrangler-update.md)。如需更新 Studio Classic 的相關資訊，請參閱 [關閉並更新 Amazon SageMaker Studio Classic](studio-tasks-update-studio.md)。

如果前面的故障診斷步驟都不起作用，您可能會發現 Salesforce 發送的錯誤訊息，其中包含內嵌在 Studio Classic URL 中的對應描述。以下是您可能會看見的訊息範例：`error=invalid_client_id&error_description=client%20identifier%20invalid`。

您可以查看 URL 中的錯誤訊息，並嘗試解決它呈現的問題。如果錯誤訊息或描述不清楚，建議您搜尋 Salesforce 知識庫。如果搜尋知識庫沒有用，您可以聯絡 Salesforce 服務台尋求更多協助。

### Data Wrangler 需要很長時間才能載入
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-long-load-time"></a>

當您的使用者從 Salesforce 資料雲端重新導向回 Data Wrangler 時，可能會遇到較長的載入時間。

如果這是使用者第一次使用 Data Wrangler 或刪除核心，則佈建新的 Amazon EC2 執行個體以使用 Data Wrangler 可能需要大約 5 分鐘的時間。

如果這不是用戶第一次使用 Data Wrangler，並且他們尚未刪除核心，您可以要求他們重新整理頁面或盡可能關閉多餘的瀏覽器標籤頁。

如果上述干預措施都沒用，請讓他們設定與 Salesforce 資料雲的新連線。

### 使用者無法匯出資料並出現 `Invalid batch Id` 錯誤
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-processing-job-fails-batch-id"></a>

當您的使用者匯出他們對其 Salesforce 資料進行的轉換時，Data Wrangler 在後端使用的 SageMaker Processing 任務可能會失敗。Salesforce 資料雲可能暫時無法使用，或可能有快取問題。

若要解決此問題，建議您讓使用者返回匯入資料的步驟，並變更他們要查詢的資料欄排序。例如，他們可以變更以下查詢：

```
SELECT col_A, col_B FROM table                
```

成為下列查詢：

```
SELECT col_B, col_A FROM table                
```

變更資料欄的排序，並確定後續進行的轉換仍然有效之後，就可以再次開始匯出資料。

### 使用者無法匯出非常大的資料集
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-processing-job-fails-query"></a>

如果您的使用者從 Salesforce 資料雲匯入非常大的資料集，他們可能無法匯出他們所做的轉換。大型資料集可能有太多列，或是因為複雜的查詢所產生。

建議您的使用者採取以下動作：
+ 簡化 SQL 查詢
+ 將他們的資料取樣

以下是他們可以用來簡化查詢的一些策略：
+ 指定資料欄名稱，而不是使用 `*` 運算子
+ 查找他們想要匯入的資料的子集，而不是使用較大的子集
+ 最小化非常大的資料集之間的連接

他們可以使用取樣來減少資料集中的資料列數目。有關採樣方法的資訊，您的使用者可以參考 [抽樣](data-wrangler-transform.md#data-wrangler-transform-sampling)。

### 由於重新整理權杖無效，使用者無法匯出資料
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-processing-job-fails-invalid-token"></a>

Data Wrangler 使用 JDBC 驅動程式與 Salesforce 資料雲整合。驗證的方法是 OAuth。對於 OAuth，重新整理權杖和存取權杖是兩種不同的資料片段，用於授權存取 Salesforce 資料雲中的資源。

存取權杖或核心權杖可讓您直接透過 Data Wrangler 存取 Salesforce 資料並執行查詢。它的壽命很短，並且設計為很快就會過期。為了維護對 Salesforce 資料的存取權，Data Wrangler 使用重新整理權杖從 Salesforce 取得新的存取權杖。

您可能將重新整理設定成太快過期，以致無法為使用者取得新的存取權杖。您可能必須重新檢視重新整理權杖的政策，以確保它可以用於需要花費很長時間才能為使用者執行的查詢。如需設定重新整理權杖政策的相關資訊，請參閱`https://EXAMPLE_SALESFORCE_ORG_URL/lightning/setup/ConnectedApplication/home/`。

### 查詢失敗或資料表未載入
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-table-not-loading"></a>

Salesforce 遇到服務中斷的情況。即使您已正確設定所有項目，您的使用者也可能有一段時間無法匯入其資料。

服務中斷可能出於維護原因所導致。我們建議您在第二天檢視問題是否已解決。

如果您遇到服務中斷一天以上的問題，建議您聯絡 Salesforce 的服務台以取得進一步協助。如需聯絡 Salesforce 的相關資訊，請參閱[您希望以何種方式聯絡 Salesforce](https://www.salesforce.com/company/contact-us/)？

### Studio Classic 重新導向期間 `OAUTH_APP_BLOCKED`
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-oauth-app-blocked"></a>

當您的使用者重新導向回 Amazon SageMaker Studio Classic 時，他們可能會注意到 URL 內的查詢參數 `error=OAUTH_APP_BLOCKED`。他們可能遇到了一個暫時的問題，應該在一天之內會自行解決。

也有可能是您已封鎖他們存取連線應用程式。如需解決此問題的資訊，請參閱`https://EXAMPLE_SALESFORCE_ORG_URL/lightning/setup/ConnectedApplication/home/`。

### Studio Classic 重新導向期間 `OAUTH_APP_DENIED`
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-oauth-app-access-denied"></a>

當您的使用者重新導向回 Amazon SageMaker Studio Classic 時，他們可能會注意到 URL 內的查詢參數 `error=OAUTH_APP_ACCESS_DENIED`。您尚未授予他們的設定檔類型存取許可，以存取與 Data Wrangler 相關聯的 `Connected App`。

若要解決他們的存取問題，請導覽至 `https://EXAMPLE_SALESFORCE_ORG_URL/lightning/setup/ManageUsers/home/` 並檢查使用者是否已被指派正確的設定檔。

# 增加 Amazon EC2 執行個體限制
<a name="data-wrangler-increase-instance-limit"></a>

使用 Data Wrangler 時，您可能會看到以下錯誤訊息：`The following instance type is not available: ml.m5.4xlarge. Try selecting a different instance below.`

該訊息可能表示您需要選取不同的執行個體類型，但也可能表示您沒有足夠的 Amazon EC2 執行個體，無法在工作流程上成功執行 Data Wrangler。您可以使用以下程序來增加執行個體數目。

若要增加執行個體數目，請執行下列操作。

1. 開啟 AWS 管理主控台。

1. 在搜尋列中，指定 **Services Quotas**。

1. 選擇**服務配額**。

1. 選擇 **AWS 服務**。

1. 在搜尋列中，指定 **Amazon SageMaker AI**。

1. 選擇 **Amazon SageMaker AI**。

1. 在**服務配額**下，指定 **Studio KernelGateway Apps running on *ml.m5.4xlarge* instance**。
**注意**  
ml.m5.4xlarge 是 Data Wrangler 的預設執行個體類型。您可以使用其他執行個體類型，並為其請求配額增加。如需詳細資訊，請參閱[執行個體](data-wrangler-data-flow.md#data-wrangler-data-flow-instances)。

1. 選取**在 *ml.m5.4xlarge* 執行個體上執行的 Studio KernelGateway 應用程式**。

1. 選擇 **Request quota increase (請求增加配額)**。

1. 對於**變更配額值**，請指定大於**已套用的配額值**的值。

1. 選擇**請求**。

如果您的請求獲得核准， 會 AWS 傳送通知到與您的帳戶相關聯的電子郵件地址。您還可以在**服務配額**頁面上選擇**配額請求歷程記錄**，查看請求的狀態。已處理請求的**狀態**為**已關閉**。

# 更新 Data Wrangler
<a name="data-wrangler-update"></a>

若要將 Data Wrangler 更新至最新發行版本，請先關閉 Amazon SageMaker Studio Classic 控制面板的對應 KernelGateway 應用程式。關閉 KernelGateway 應用程式後，請開啟 Studio Classic 中新的或現有的 Data Wrangler 流程，以重新啟動應用程式。當您開啟新的或現有的 Data Wrangler 流程時，啟動的核心會包含最新版本的 Data Wrangler。

**更新您的 Studio Classic 和 Data Wrangler 執行個體**

1. 導覽至您的 [SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)。

1. 選擇 SageMaker AI，然後選擇 Studio Classic。

1. 選擇您的使用者名稱。

1. 在**應用程式**下方，在顯示**應用程式名稱**的那一列中，針對開頭為 `sagemaker-data-wrang` 的應用程式和 JupyterServer 應用程式，請選擇**刪除應用程式**。

1. 選擇**是，刪除應用程式**。

1. 在確認方塊中輸入 `delete`。

1. 選擇**刪除**。

1. 重新開啟您的 Studio Classic 執行個體。當您開始建立 Data Wrangler 流程時，您的執行個體會立即使用最新版本的 Data Wrangler。

或者，如果您正在使用的 Data Wrangler 應用程式版本不是最新版本，而且已開啟現有的 Data Wrangler 流程，系統會在 Studio Classic UI 中提示您更新 Data Wrangler 應用程式版本。以下螢幕擷取畫面顯示此提示。

**重要**  
這只會更新 Data Wrangler 的核心閘道應用程式。您仍然需要在您的使用者帳戶中關閉 JupyterServer 應用程式。若要執行此操作，請按前面的步驟進行。

![\[Data Wrangler 主控台中的更新 Data Wrangler 區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/data-wrangler-1click-restart.png)


您也可以選擇**稍後提醒我**，在這種情況下，螢幕右上角會出現**更新**按鈕。

![\[Data Wrangler 主控台中更新的位置。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/data-wrangler-1click-restart-update.png)


# 關閉 Data Wrangler
<a name="data-wrangler-shut-down"></a>

當您不使用 Data Wrangler 時，務必關閉其所在並執行的執行個體，以免產生額外費用。

為避免工作遺失，應在關閉 Data Wrangler 之前儲存資料流程。若要將您的資料流程儲存在 Studio Classic 中，請選擇**檔案**，然後選擇**儲存 Data Wrangler 流程**。Data Wrangler 每 60 秒會自動儲存您的資料流程。

**在 Studio Classic 中關閉 Data Wrangler 執行個體**

1. 在 Studio Classic 中，選取**執行中執行個體和核心**圖示 (![\[Icon of a gear or cog symbol representing settings or configuration options.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/icons/studio_classic_dw_instances.png))。

1. 在**執行中應用程式**下為 **sagemaker-data-wrangler-1.0** 應用程式。選取此應用程式旁邊的關閉圖示 (![\[Power button icon with a circular shape and vertical line symbol.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/icons/Shutdown_light.png))。

   Data Wrangler 在 ml.m5.4xlarge 執行個體上執行。當您關閉 Data Wrangler 應用程式時，此執行個體會從**正在執行執行個體**中消失。

**重要**  
如果您再次開啟 Data Wrangler，Amazon EC2 執行個體會開始執行應用程式，並向您收取運算費用。除了運算之外，您還需要支付所使用的儲存體費用。例如，您需要支付與 Data Wrangler 搭配使用的任何 Amazon S3 儲存貯體的費用。  
如果您在關閉應用程式之後仍需支付 Data Wrangler 的費用，有一個 Jupyter 延伸模組，您可以用來自動關閉閒置工作階段。如需延伸模組的相關資訊，請參閱 [SageMaker-Studio-Autoshutdown-Extension](https://github.com/aws-samples/sagemaker-studio-auto-shutdown-extension)。

關閉 Data Wrangler 應用程式後，下次開啟 Data Wrangler 流程檔案時，必須重新啟動該應用程式。這可能需要幾分鐘的時間。