AWS Glue 連携データセットを作成する

このドキュメントでは、BigQuery で AWS Glue の既存のデータベースにリンクされる連携データセットを作成する方法について説明します。

連携データセットは、BigQuery と外部データソース間のデータセット レベルでの接続です。連携データセット内のテーブルは、対応する外部データソース内のテーブルから自動的に入力されます。BigQuery では、これらのテーブルに対して直接クエリを実行できますが、変更、追加、削除はできません。ただし、外部データソースでの更新は、BigQuery に自動的に反映されます。

始める前に

AWS Glue データにアクセスできる接続があることを確認します。

  • 接続を作成または変更するには、Amazon S3 に接続するを参照し、BigQuery 用の AWS Identity and Access Management ポリシーに、次に挙げる AWS Glue 用の追加ポリシー ステートメントを含めます。

    {
     "Effect": "Allow",
     "Action": [
       "glue:GetDatabase",
       "glue:GetTable",
       "glue:GetTables",
       "glue:GetPartitions"
     ],
     "Resource": [
       "arn:aws:glue:REGION:ACCOUNT_ID:catalog",
       "arn:aws:glue:REGION:ACCOUNT_ID:database/DATABASE_NAME",
       "arn:aws:glue:REGION:ACCOUNT_ID:table/DATABASE_NAME/*"
     ]
    }

    次のように置き換えます。

    • REGION: AWS リージョン(例: us-east-1
    • ACCOUNT_ID:: 12 桁の AWS アカウント ID
    • DATABASE_NAME: AWS Glue データベース名

必要な権限

連携データセットの作成に必要な権限を取得するには、BigQuery 管理者roles/bigquery.admin)IAM ロールの付与を管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。

この事前定義ロールには、連携データセットの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

連携データセットを作成するには、次の権限が必要です。

  • bigquery.datasets.create
  • bigquery.connections.use
  • bigquery.connections.delegate

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

BigQuery における IAM ロールと権限の詳細については、IAM の概要をご覧ください。

連携データセットを作成する

連携データセットを作成する手順は次のとおりです。

bq

コマンドライン環境で bq mk コマンドを使用してデータセットを作成します。

bq --location=LOCATION mk --dataset \
    --external_source aws-glue://AWS_GLUE_SOURCE \
    --connection_id PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME \
    DATASET_NAME

次のように置き換えます。

  • LOCATION: BigQuery での新しいデータセットのロケーション(例: aws-us-east-1)。データセットを作成した後に、そのロケーションを変更することはできません。デフォルトのロケーション値を設定するには、.bigqueryrc ファイルを使用します。
  • AWS_GLUE_SOURCE: AWS Glue データベースの Amazon Resource Name(ARN)(例: arn:aws:glue:us-east-1:123456789:database/test_database)。
  • PROJECT_ID: BigQuery プロジェクト ID。
  • CONNECTION_LOCATION: AWS 接続のロケーション(例: aws-us-east-1)。
  • CONNECTION_NAME: AWS 接続の名前。
  • DATASET_NAME: BigQuery での新しいデータセットの名前。デフォルト プロジェクト以外のプロジェクト内にデータセットを作成するには、PROJECT_ID:DATASET_NAME の形式でそのプロジェクト ID をデータセット名に追加します。

API

datasets.insert メソッドを、定義済みのデータセット リソースと AWS Glue データベースの externalDatasetReference フィールドを指定して呼び出します。

連携データセット内のテーブルを一覧表示する

連携データセット内のクエリに使用できるテーブルを一覧表示するには、データセットの一覧表示をご覧ください。

テーブル情報の取得

スキーマの詳細など、連携データセット内のテーブルの情報を取得するには、テーブル情報の取得をご覧ください。

テーブルへのアクセスの制御

連携データセット内のテーブルへのアクセスを管理するには、IAM でリソースへのアクセスを制御するをご覧ください。

AWS Glue データのクエリ

連携データセット内のテーブルのクエリは、他の BigQuery データセット内のテーブルに対するクエリと同じです。

AWS Glue テーブルでは、次の形式でクエリを実行できます。

  • CSV(圧縮、非圧縮)
  • JSON(圧縮、非圧縮)
  • Parquet
  • ORC
  • Avro
  • Iceberg

テーブル マッピングの詳細

AWS Glue データベースでアクセス権を付与するすべてのテーブルは、BigQuery データセットで同等のテーブルとして表示されます。

形式

各 BigQuery テーブルの形式は、それぞれの AWS Glue テーブルの次のフィールドによって決まります。

  • InputFormatTable.StorageDescriptor.InputFormat
  • OutputFormatTable.StorageDescriptor.OutputFormat
  • SerializationLibTable.StorageDescriptor.SerdeInfo.SerializationLibrary

唯一の例外は、TableTypeTable.Parameters["table_type"])フィールドを使用する Iceberg テーブルです。

たとえば、次のフィールドを含む AWS Glue テーブルは、BigQuery の ORC テーブルにマッピングされます。

  • InputFormat = "org.apache.hadoop.hive.ql.io.orc.OrcInputFormat"
  • OutputFormat = "org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat"
  • SerializationLib = "org.apache.hadoop.hive.ql.io.orc.OrcSerde"

ロケーション

各 BigQuery テーブルのロケーションは、次の条件によって決まります。

  • Iceberg テーブル: AWS Glue テーブルの Table.Parameters["metadata_location"] フィールド
  • Iceberg 以外のパーティションが分割されていないテーブル: AWS Glue テーブルの Table.StorageDescriptor.Location フィールド
  • Iceberg 以外のパーティション分割テーブル: AWS Glue GetPartitions API

その他のプロパティ

さらに、一部の AWS Glue テーブル プロパティは、BigQuery の形式固有のオプションに自動的にマッピングされます。

形式 SerializationLib AWS Glue テーブルの値 BigQuery オプション
CSV LazySimpleSerDe Table.StorageDescriptor.SerdeInfo.Parameters["field.delim"] CsvOptions.fieldDelimiter
CSV LazySimpleSerDe Table.StorageDescriptor.Parameters["serialization.encoding"] CsvOptions.encoding
CSV LazySimpleSerDe Table.StorageDescriptor.Parameters["skip.header.line.count"] CsvOptions.skipLeadingRows
CSV OpenCsvSerDe Table.StorageDescriptor.SerdeInfo.Parameters["separatorChar"] CsvOptions.fieldDelimiter
CSV OpenCsvSerDe Table.StorageDescriptor.SerdeInfo.Parameters["quoteChar"] CsvOptions.quote
CSV OpenCsvSerDe Table.StorageDescriptor.Parameters["serialization.encoding"] CsvOptions.encoding
CSV OpenCsvSerDe Table.StorageDescriptor.Parameters["skip.header.line.count"] CsvOptions.skipLeadingRows
JSON Hive JsonSerDe Table.StorageDescriptor.Parameters["serialization.encoding"] JsonOptions.encoding

連携データセットにビューを作成する

連携データセット内にはビューを作成できません。一方、連携データセットのテーブルに基づく標準データセットには、ビューを作成できます。詳細については、ビューの作成をご覧ください。

連携データセットを削除する

連携データセットを削除は、他の BigQuery データセットの削除と同じです。詳細については、データセットの削除をご覧ください。

料金

料金については、BigQuery Omni の料金をご覧ください。

制限事項

次のステップ