

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

# Amazon Athena TPC benchmark DS (TPC-DS) 連接器
<a name="connectors-tpcds"></a>

Amazon Athena TPC-DS 連接器讓 Amazon Athena 能夠與隨機產生的 TPC Benchmark DS 資料來源通訊，以用於 Athena Federation 的基準化分析和功能測試。Athena TPC-DS 連接器會以四種縮放比例之一產生符合 TPC-DS 規範的資料庫。我們不建議使用此連接器作為 Amazon S3 資料湖效能測試的替代方案。

此連接器可以作為聯合目錄向 Glue Data Catalog 註冊。它可在目錄、資料庫、資料表、資料欄、資料列和標籤層級支援 Lake Formation 中定義的資料存取控制。此連接器使用 Glue 連線來集中 Glue 中的組態屬性。

## 先決條件
<a name="connectors-tpcds-prerequisites"></a>
+ 使用 Athena 主控台或 AWS Serverless Application Repository，將連接器部署到您的 AWS 帳戶 。如需詳細資訊，請參閱 [建立資料來源連線](connect-to-a-data-source.md) 或 [使用 AWS Serverless Application Repository 部署資料來源連接器](connect-data-source-serverless-app-repo.md) 。

## Parameters
<a name="connectors-tpcds-parameters"></a>

使用本節中的參數來設定 TPC-DS 連接器。

**注意**  
2024 年 12 月 3 日及更新版本建立的 Athena 資料來源連接器會使用 AWS Glue 連線。  
下方列出的參數名稱和定義適用於 2024 年 12 月 3 日之前建立的 Athena 資料來源連接器。這些可能與其對應的 [AWS Glue 連線屬性](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html)不同。從 2024 年 12 月 3 日開始，只有在您[手動部署](connect-data-source-serverless-app-repo.md)舊版 Athena 資料來源連接器時，才會使用下列參數。

### Glue 連線 (建議)
<a name="connectors-tpcds-gc"></a>

我們建議您使用 Glue 連線物件來設定 TPC-DS 連接器。為此，請將 TPC-DS 連接器 Lambda 的 `glue_connection` 環境變數設定為要使用的 Glue 連線名稱。

**Glue 連線屬性**

使用下列命令來取得 Glue 連線物件的結構描述。此結構描述包含可用於控制連線的所有參數。

```
aws glue describe-connection-type --connection-type TPCDS
```

**Lambda 環境屬性**
+ **glue\$1connection** – 指定與聯合連接器關聯的 Glue 連線名稱。

**注意**  
使用 Glue 連線的所有連接器都必須使用 AWS Secrets Manager 來存放登入資料。
使用 Glue 連線建立的 TPC-DS 連接器不支援使用多工處理常式。
使用 Glue 連線建立的 TPC-DS 連接器僅支援 `ConnectionSchemaVersion` 2。

### 舊版連線
<a name="connectors-tpcds-legacy"></a>
+ **spill\$1bucket** - 針對超過 Lambda 函數限制的資料，指定 Amazon S3 儲存貯體。
+ **spill\$1prefix** - (選用) 預設為指定的 `spill_bucket` 中名為 `athena-federation-spill` 的子資料夾。我們建議您在此位置設定 Amazon S3 [儲存生命週期](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)，以刪除超過預定天數或小時數的溢出。
+ **spill\$1put\$1request\$1headers** – (選用) 用於溢出的 Amazon S3 `putObject` 請求的請求標頭和值的 JSON 編碼映射 (例如，`{"x-amz-server-side-encryption" : "AES256"}`)。如需其他可能的標頭，請參閱《Amazon Simple Storage Service API 參考**》中的 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)。
+ **kms\$1key\$1id** - (選用) 依預設，任何溢出到 Amazon S3 的資料都會使用 AES-GCM 驗證加密模式和隨機產生的金鑰進行加密。為了讓您的 Lambda 函數使用 KMS 產生的更強大的加密金鑰，例如 `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`，您可以指定 KMS 金鑰 ID。
+ **disable\$1spill\$1encryption** - (選用) 當設定為 `True` 時，停用溢出加密。預設為 `False`，因此溢出 S3 的資料會使用 AES-GCM 進行加密 — 使用隨機產生的金鑰或 KMS 來產生金鑰。停用溢出加密可以提高效能，尤其是如果溢出位置使用[伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)。

## 測試資料庫和資料表
<a name="connectors-tpcds-test-databases-and-tables"></a>

Athena TPC-DS 連接器會以四種縮放比例 (`tpcds1`、`tpcds10`、`tpcds100`、`tpcds250` 或 `tpcds1000`) 之一產生符合 TPC-DS 規範的資料庫。

### 資料表摘要
<a name="connectors-tpcds-table-summary"></a>

如需測試資料表和資料欄的完整清單，請執行 `SHOW TABLES` 或者 `DESCRIBE TABLE` 查詢。為了方便起見，提供以下資料表摘要。

1. call\$1center

1. catalog\$1page

1. catalog\$1returns

1. catalog\$1sales

1. customer

1. customer\$1address

1. customer\$1demographics

1. date\$1dim

1. dbgen\$1version

1. household\$1demographics

1. income\$1band

1.  庫存

1. item

1. promotion

1. reason

1. ship\$1mode

1. 存放

1. store\$1returns

1. store\$1sales

1. time\$1dim

1. warehouse

1. web\$1page

1. web\$1returns

1. web\$1sales

1. web\$1site

如需與此產生的結構描述和資料相容的 TPC-DS 查詢，請參閱 GitHub 上的 [athena-tpcds/src/main/resources/queries/](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds/src/main/resources/queries) 目錄。

### 查詢範例
<a name="connectors-tpcds-example-query"></a>

下列 `SELECT` 查詢範例會查詢特定郡的客戶人口統計的 `tpcds` 目錄。

```
SELECT
  cd_gender,
  cd_marital_status,
  cd_education_status,
  count(*) cnt1,
  cd_purchase_estimate,
  count(*) cnt2,
  cd_credit_rating,
  count(*) cnt3,
  cd_dep_count,
  count(*) cnt4,
  cd_dep_employed_count,
  count(*) cnt5,
  cd_dep_college_count,
  count(*) cnt6
FROM
  "lambda:tpcds".tpcds1.customer c, "lambda:tpcds".tpcds1.customer_address ca, "lambda:tpcds".tpcds1.customer_demographics
WHERE
  c.c_current_addr_sk = ca.ca_address_sk AND
    ca_county IN ('Rush County', 'Toole County', 'Jefferson County',
                  'Dona Ana County', 'La Porte County') AND
    cd_demo_sk = c.c_current_cdemo_sk AND
    exists(SELECT *
           FROM "lambda:tpcds".tpcds1.store_sales, "lambda:tpcds".tpcds1.date_dim
           WHERE c.c_customer_sk = ss_customer_sk AND
             ss_sold_date_sk = d_date_sk AND
             d_year = 2002 AND
             d_moy BETWEEN 1 AND 1 + 3) AND
    (exists(SELECT *
            FROM "lambda:tpcds".tpcds1.web_sales, "lambda:tpcds".tpcds1.date_dim
            WHERE c.c_customer_sk = ws_bill_customer_sk AND
              ws_sold_date_sk = d_date_sk AND
              d_year = 2002 AND
              d_moy BETWEEN 1 AND 1 + 3) OR
      exists(SELECT *
             FROM "lambda:tpcds".tpcds1.catalog_sales, "lambda:tpcds".tpcds1.date_dim
             WHERE c.c_customer_sk = cs_ship_customer_sk AND
               cs_sold_date_sk = d_date_sk AND
               d_year = 2002 AND
               d_moy BETWEEN 1 AND 1 + 3))
GROUP BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
ORDER BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
LIMIT 100
```

## 所需的許可
<a name="connectors-tpcds-required-permissions"></a>

如需詳細了解此連接器所需的 IAM 政策，請檢閱 [athena-tpcds.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-tpcds/athena-tpcds.yaml) 檔案的 `Policies` 部分。以下清單摘要說明所需的許可。
+ **Amazon S3 寫入存取** - 連接器需要 Amazon S3 中某個位置的寫入存取權，以便從大型查詢中溢寫結果。
+ **Athena GetQueryExecution** - 當上游 Athena 查詢終止時，連接器會使用此許可快速失敗。

## 效能
<a name="connectors-tpcds-performance"></a>

Athena TPC-DS 連接器會嘗試根據您選擇的比例因數平行處理查詢。在 Lambda 函數內執行述詞下推。

## 授權資訊
<a name="connectors-tpcds-license-information"></a>

Amazon Athena TPC-DS 連接器專案是依據 [Apache-2.0 License](https://www.apache.org/licenses/LICENSE-2.0.html) 來授權的。

## 其他資源
<a name="connectors-tpcds-additional-resources"></a>

如需此連接器的其他資訊，請造訪 GitHub.com 上的[相應網站](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds)。