Amazon Athena Google BigQuery コネクタ
Google BigQuery
このコネクタは、Glue データカタログにフェデレーティッドカタログとして登録できます。Lake Formation で定義されたカタログ、データベース、テーブル、カラム、行、タグレベルでのデータアクセス制御をサポートします。このコネクタは、Glue 接続を使用して Glue の設定プロパティを一元管理しています。
前提条件
Athena コンソールまたは AWS Serverless Application Repository を使用して AWS アカウント にコネクタをデプロイします。詳細については、「データソース接続を作成する」または「AWS Serverless Application Repository を使用してデータソースコネクタをデプロイする」を参照してください。
制限
-
Lambda 関数における最大タイムアウト時間は 15 分です。分割が発生するたびに BigQuery に対しクエリが実行されます。Athena が読み込む結果を保存するためには、十分な時間のクエリが必要です。Lambda 関数がタイムアウトした場合には、クエリは失敗します。
-
Google BigQuery では、大文字と小文字が区別されます。コネクタは、データセット名、テーブル名、プロジェクト ID の大文字と小文字の修正を試みます。これが必要なのは、Athena では、すべてのメタデータを小文字で扱うからです。これらの修正により、Google BigQuery への余分な呼び出しが多数発生します。
-
二進数のデータ型はサポートされません。
-
Google BigQuery の同時実行性とクォータについての制限が原因で、コネクタにおいて、Google のクォータ制限に関する問題が発生する場合があります。このような問題を回避するには、可能な限り多くの制約 を Google BigQuery に適用します。BigQuery でのクォータの詳細については、Google BigQuery のドキュメントで「割り当てと上限
」を参照してください。
パラメータ
このセクションのパラメータを使用して Google BigQuery コネクタを設定します。
注記
2024 年 12 月 3 日以降に作成された Athena データソースコネクタは、AWS Glue 接続を使用します。
以下に示すパラメータ名と定義は、2024 年 12 月 3 日より前に作成された Athena データソースコネクタ用です。これらは、対応する AWS Glue 接続プロパティとは異なる場合があります。2024 年 12 月 3 日以降、以前のバージョンの Athena データソースコネクタを手動でデプロイする場合にのみ、以下のパラメータを使用します。
-
spill_bucket – Lambda 関数の上限を超えたデータに対して、Amazon S3 バケットを指定します。
-
spill_prefix – (オプション) 指定された
athena-federation-spill
というspill_bucket
の、デフォルトのサブフォルダに設定します。このロケーションで、Amazon S3 のストレージライフサイクルを設定し、あらかじめ決められた日数または時間数以上経過したスピルを削除することをお勧めします。 -
spill_put_request_headers – (オプション) スピリングに使用されるAmazon S3 の
putObject
リクエスト (例:{"x-amz-server-side-encryption" : "AES256"}
) に関する、 JSON でエンコードされたリクエストヘッダーと値のマッピング。利用可能な他のヘッダーについては、「Amazon Simple Storage Service API リファレンス」の「PutObject」を参照してください。 -
kms_key_id – (オプション) デフォルトでは、Amazon S3 に送信されるすべてのデータは、AES-GCM で認証された暗号化モードとランダムに生成されたキーを使用して暗号化されます。KMS が生成したより強力な暗号化キー (たとえば
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331
) を Lambda 関数に使用させる場合は、KMS キー ID を指定します。 -
disable_spill_encryption – (オプション)
True
に設定されている場合、スピルに対する暗号化を無効にします。デフォルト値はFalse
です。この場合、S3 にスピルされたデータは、AES-GCM を使用して (ランダムに生成されたキー、または KMS により生成したキーにより) 暗号化されます。スピル暗号化を無効にすると、特にスピルされる先でサーバー側の暗号化を使用している場合に、パフォーマンスが向上します。 -
gcp_project_id – コネクタの読み込み対象となるデータセットを含むプロジェクト ID (プロジェクト名ではありません、例:
semiotic-primer-1234567
)。 -
secret_manager_gcp_creds_name – JSON 形式の BigQuery 認証情報が含まれている、AWS Secrets Manager 内のシークレットの名前 (例:
GoogleCloudPlatformCredentials
)。 -
big_query_endpoint — (オプション) BigQuery プライベートエンドポイントの URL。このパラメータは、プライベートエンドポイント経由で BigQuery にアクセスする場合に使用します。
分割とビュー
BigQuery コネクタはテーブルのクエリに BigQuery Storage Read API を使用し、BigQuery Storage API はビューをサポートしないため、コネクタはビューに単一の分割を用いる BigQuery クライアントを使用します。
パフォーマンス
BigQuery コネクタはテーブルのクエリに BigQuery Storage Read API を使用し、この API は BigQuery マネージドストレージへの迅速なアクセスを提供する RPC ベースのプロトコルを使用します。BigQuery Storage Read API の詳細については、Google Cloud ドキュメントの「Use the BigQuery Storage Read API to read table data
列のサブセットを選択すると、クエリランタイムが大幅に短縮され、スキャンされるデータが減ります。このコネクタは、同時実行数が増えるとクエリに失敗する可能性があり、一般に動作が遅いコネクタです。
Athena Google BigQuery コネクタは述語のプッシュダウンを実行して、クエリによってスキャンされるデータを減少させます。スキャンされるデータ量を削減し、クエリ実行のランタイムを短縮するために、LIMIT
句、ORDER BY
句、単純な述語、および複雑な式はコネクタにプッシュダウンされます。
LIMIT 句
LIMIT N
ステートメントにより、クエリによってスキャンされるデータが削減されます。LIMIT N
プッシュダウンを使用すると、コネクタは N
行のみを Athena に返します。
上位 N 件のクエリ
上位 N
件のクエリは、結果セットの順序と返される行数に対する制限を指定します。このタイプのクエリを使用して、データセットの上位 N
個の最大値または上位 N
個の最小値を決定できます。上位 N
件のプッシュダウンを使用すると、コネクタは N
件の順序付けられた行のみを Athena に返します。
述語
述語は、ブール値に照らして評価し、複数の条件に基づいて行をフィルタリングする SQL クエリの WHERE
句内の式です。Athena Google BigQuery コネクタは、これらの式を組み合わせて Google BigQuery に直接プッシュすることで、機能を強化し、スキャンされるデータ量を削減できます。
次の Athena Google BigQuery コネクタ演算子は、述語のプッシュダウンをサポートしています。
-
ブーリアン: AND、OR、NOT
-
等値: EQUAL、NOT_EQUAL、LESS_THAN、LESS_THAN_OR_EQUAL、GREATER_THAN、GREATER_THAN_OR_EQUAL、IS_DISTINCT_FROM、NULL_IF、IS_NULL
-
Arithmetic: ADD、SUBTRACT、MULTIPLY、DIVIDE、MODULUS、NEGATE
-
その他: LIKE_PATTERN、IN
組み合わせたプッシュダウンの例
クエリ機能を強化するには、次の例のようにプッシュダウンタイプを組み合わせます。
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;
パススルークエリ
Google BigQuery コネクタは、パススルークエリをサポートします。パススルークエリは、テーブル関数を使用して、実行のためにクエリ全体をデータソースにプッシュダウンします。
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' ))
ライセンス情報
Amazon Athena Google BigQuery コネクタプロジェクトは、Apache-2.0 ライセンス
このコネクタを使用することにより、pom.xml
追加リソース
このコネクタに関するその他の情報については、GitHub.com で対応するサイト