

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

# Amazon Athena Google BigQuery 連接器
<a name="connectors-bigquery"></a>

適用於 Google [BigQuery](https://cloud.google.com/bigquery/) 的 Amazon Athena 連接器可讓 Amazon Athena 能夠對 Google BigQuery 資料執行 SQL 查詢。

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

## 先決條件
<a name="connectors-bigquery-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) 。

## 限制
<a name="connectors-bigquery-limitations"></a>
+ Lambda 函數的逾時值上限為 15 分鐘。每次分割都會對 BigQuery 執行查詢，並且必須有足夠的時間來儲存結果，以便 Athena 讀取。如果 Lambda 函數逾時，查詢就會失敗。
+ Google BigQuery 區分大小寫。連接器會嘗試更正資料集名稱、資料表名稱和專案 ID 的大小寫。這是必要的，因為 Athena 會使所有中繼資料變為小寫。這些更正會對 Google BigQuery 產生許多額外呼叫。
+ 不支援二進位資料類型。
+ 由於 Google BigQuery 的並行處理和配額限制，連接器可能會遇到 Google 配額限制問題。為了避免這些問題，請盡可能多地向 Google BigQuery 推送限制條件。如需有關 BigQuery 配額的資訊，請參閱 Google BigQuery 文件中的[配額和限制](https://cloud.google.com/bigquery/quotas)。

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

使用本節中的參數來設定 Google BigQuery 連接器。

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

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

**Glue 連線屬性**

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

```
aws glue describe-connection-type --connection-type BIGQUERY
```

**Lambda 環境屬性**

**glue\$1connection** – 指定與聯合連接器關聯的 Glue 連線名稱。

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

### 舊版連線
<a name="bigquery-legacy"></a>

**注意**  
2024 年 12 月 3 日及更新版本建立的 Athena 資料來源連接器會使用 AWS Glue 連線。

下方列出的參數名稱和定義適用於未使用關聯 Glue 連線建立的 Athena 資料來源連接器。只有在您[手動部署](connect-data-source-serverless-app-repo.md)舊版 Athena 資料來源連接器或未指定 `glue_connection` 環境屬性時，才會使用下列參數。

**Lambda 環境屬性**
+ **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)。
+ **gcp\$1project\$1id** - 專案 ID (非專案名稱)，它包含連接器應讀取的資料集 (例如，`semiotic-primer-1234567`)。
+ **secret\$1manager\$1gcp\$1creds\$1name** – 內秘密的名稱 AWS Secrets Manager ，其中包含 JSON 格式的 BigQuery 登入資料 （例如 `GoogleCloudPlatformCredentials`)。
+ **big\$1query\$1endpoint** – (選用) BigQuery 私有端點的 URL。如果想要透過私有端點存取 BigQuery，請使用此參數。

## 分割與檢視
<a name="connectors-bigquery-splits-and-views"></a>

由於 BigQuery 連接器使用 BigQuery Storage Read API 查詢資料表，並且 BigQuery Storage API 不支援檢視，因此連接器會使用具有單一分割的 BigQuery 用戶端以進行檢視。

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

若要查詢資料表，BigQuery 連接器會使用 BigQuery Storage Read API，而該 API 使用了 RPC 型通訊協定，可快速存取 BigQuery 受管儲存。如需有關 BigQuery Storage Read API 的詳細資訊，請參閱 Google Cloud 文件中的[使用 BigQuery Storage Read API 讀取資料表資料](https://cloud.google.com/bigquery/docs/reference/storage)。

選取資料欄子集可大幅加速查詢執行期，並減少掃描的資料。隨著並行數目增加，連接器容易出現查詢失敗，且連接器速度通常較慢。

Athena Google BigQuery 連接器執行述詞下推，以減少查詢掃描的資料。`LIMIT` 子句、`ORDER BY` 子句、簡單述詞和複雜的表達式會下推至連接器，以減少掃描的資料量並縮短查詢執行時間。

### LIMIT 子句
<a name="connectors-bigquery-performance-limit-clauses"></a>

`LIMIT N` 陳述句可減少查詢掃描的資料。透過 `LIMIT N` 下推，連接器只會向 Athena 傳回 `N` 個資料列。

### 前 N 個查詢
<a name="connectors-bigquery-performance-top-n-queries"></a>

前 `N` 個查詢會指定結果集的順序，以及傳回的資料列數目的限制。您可以使用這種查詢類型，判斷資料集的前 `N` 個最大值或前 `N` 個最小值。透過前 `N` 個下推，連接器只會向 Athena 傳回 `N` 個排序的資料列。

### 述詞
<a name="connectors-bigquery-performance-predicates"></a>

述詞是 SQL 查詢的 `WHERE` 子句中的一種表達式，它會評估為布林值，並根據多個條件篩選資料列。Athena Google BigQuery 連接器可以結合這些表達式，並將它們直接推送到 Google BigQuery，以增強功能並減少掃描的資料量。

下列 Athena Google BigQuery 連接器運算子支援述詞下推：
+ **布林值：**AND、OR、NOT
+ **等式：**EQUAL、NOT\$1EQUAL、LESS\$1THAN、LESS\$1THAN\$1OR\$1EQUAL、GREATER\$1THAN、GREATER\$1THAN\$1OR\$1EQUAL、IS\$1DISTINCT\$1FROM、NULL\$1IF、IS\$1NULL
+ **算術：**ADD、SUBTRACT、MULTIPLY、DIVIDE、MODULUS、NEGATE
+ **其他：**LIKE\$1PATTERN、IN

### 合併下推範例
<a name="connectors-bigquery-performance-pushdown-example"></a>

如需增強的查詢功能，請合併下推類型，如以下範例所示：

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
ORDER BY col_a DESC 
LIMIT 10;
```

## 傳遞查詢
<a name="connectors-bigquery-passthrough-queries"></a>

Google BigQuery 連接器支援[傳遞查詢](federated-query-passthrough.md)。傳遞查詢使用資料表函式，可將您的完整查詢下推到資料來源以便執行。

若要透過 Google BigQuery 使用傳遞查詢，您可以使用下列語法：

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

下列範例查詢會將查詢下推到 Google BigQuery 中的資料來源。查詢會選取 `customer` 資料表中的所有資料欄，並將結果限制為 10。

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

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

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

使用此連接器，即表示您確認已包含第三方元件，可在此連接器的 [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/pom.xml) 檔案中找到其清單，並同意 GitHub.com 上 [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/LICENSE.txt) 檔案中提供的相應第三方授權中的條款。

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

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