Datastream を使用すると、ソースから BigQuery の Apache Iceberg テーブルにデータを複製できます。Apache Iceberg テーブルは、標準の BigQuery テーブルと同じフルマネージド エクスペリエンスを提供しながら、独自の Cloud Storage バケット内に Parquet 形式でデータを保存します。この設定により、基盤となるストレージを完全に制御しながら、BigQuery を使用してデータをクエリして分析できます。
Datastream は、追加専用書き込みモードでのみ Apache Iceberg テーブルへのストリーミングをサポートしています。詳細については、書き込みモードを構成するをご覧ください。
テーブルのメタデータ
Datastream は、BigQuery の宛先に書き込まれる各テーブルに datastream_metadata という名前の STRUCT 列を追加します。
datastream_metadata 列には次のフィールドが含まれています。
UUIDこのフィールドにはSTRINGデータ型が含まれます。SOURCE_TIMESTAMPこのフィールドにはINTEGERデータ型が含まれます。CHANGE_SEQUENCE_NUMBERこのフィールドにはSTRINGデータ型が含まれます。 これは、Datastream が各変更イベントに使用する内部シーケンス番号です。CHANGE_TYPEこのフィールドにはSTRINGデータ型が含まれます。変更イベントのタイプを示します。追記専用書き込みモードの場合、値はINSERTです。SORT_KEYS: このフィールドにはSTRING値の配列が含まれます。これらの値を使用して、変更イベントを並べ替えることができます。
Apache Iceberg テーブルへのストリーミングを構成する
Apache Iceberg テーブルにデータを取り込むようにストリームを設定するには:
- データを保存する Cloud Storage バケットを作成します。
- BigQuery で Cloud リソース接続を作成します。このタイプの接続を作成する方法については、Cloud リソース接続を作成して設定するをご覧ください。
接続サービス アカウントの ID を取得します。
bq show --location=LOCATION --connection --project_id=PROJECT_ID CONNECTION_NAME作成した Cloud Storage バケットへのアクセス権を Cloud リソース接続に付与します。これを行うには、接続サービス アカウントに
storage.adminIAM 権限を追加します。gcloud storage buckets add-iam-policy-binding gs://YOUR_GCS_BUCKET \ --member=serviceAccount:YOUR_SERVICE_ACCOUNT_ID \ --role=roles/storage.adminApache Iceberg テーブル ストリームを作成します。
Google Cloud コンソールを使用して Apache Iceberg テーブル ストリームを作成する方法については、ストリームを作成するをご覧ください。
REST、
Google Cloud CLI、または Terraform を使用して Apache Iceberg テーブルにデータをストリーミングするリクエストを作成する方法については、API を使用してストリームを管理するをご覧ください。
次のステップ
- ストリームの詳細については、ストリームのライフサイクルをご覧ください。
- ストリームの作成方法については、ストリームを作成するをご覧ください。
- Apache Iceberg テーブル ストリームで使用できる接続プロファイルを作成する方法については、BigQuery 用の接続プロファイルを作成するをご覧ください。