このページでは、Workflows を使用して、Batch に保存されているジョブの情報を BigQuery テーブルにエクスポートする方法について説明します。具体的には、サンプルの export-jobs ワークフローを実行する方法と、生成されたジョブ情報を BigQuery で表示する方法について学習します。
ジョブの情報をエクスポートすると、ジョブが自動または手動で削除された後も情報を保持したり、Batch の外部で情報を分析したりする場合に便利です。タスクとジョブの状態変化の情報のみを BigQuery にエクスポートする場合は、通知を使用してジョブをモニタリングするをご覧ください。
他のGoogle Cloud サービスに保存されているジョブ情報をエクスポートする方法については、そのサービスのエクスポート ドキュメントをご覧ください。たとえば、次のページをご覧ください。
始める前に
- Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
-
Enable the BigQuery and Workflows APIs.
省略可: ジョブ情報を保存するプロジェクト内の既存の BigQuery データセットまたはテーブルを特定します。既存のテーブルには、一致するスキーマが必要です。
そうでない場合は、export-jobs ワークフローを使用して新しいデータセットまたはテーブルを作成できます。
-
次の手順で、export-jobs ワークフローのサービス アカウントを準備します。
- 新しいサービス アカウントを作成するか、既存のサービス アカウントを特定します。
-
export-jobs ワークフローを実行するために必要な権限がサービス アカウントに付与されるように、プロジェクトに対する次の IAM ロールをサービス アカウントに付与するよう管理者に依頼してください。
-
ログを書き込む: ログ書き込み(
roles/logging.logWriter
) -
BigQuery データセットとテーブルを作成、編集する:
BigQuery 管理者 (
roles/bigquery.admin
) -
バッチジョブを表示して削除する:
バッチジョブ編集者 (
roles/batch.jobsEditor
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
-
ログを書き込む: ログ書き込み(
-
export-jobs ワークフローの作成、デプロイ、実行に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
ジョブを表示する: バッチジョブ閲覧者(
roles/batch.jobsViewer
) -
サービス アカウントを表示する:
サービス アカウントの表示(
roles/iam.serviceAccountViewer
) -
BigQuery データセットとテーブルを表示する: BigQuery データ閲覧者(
roles/bigquery.dataViewer
) -
ワークフローを作成、デプロイ、実行する: ワークフロー編集者(
roles/workflows.editor
)
-
ジョブを表示する: バッチジョブ閲覧者(
-
プロジェクト内のユーザーがエクスポートされたジョブ情報を表示できることを確認してください。
ユーザーにジョブ情報をエクスポートするために必要な権限が付与されるように、テーブル、データセット、またはプロジェクトに対する BigQuery データ閲覧者(
roles/bigquery.dataViewer
)IAM ロールをユーザーに付与するよう管理者に依頼してください。
ジョブ情報をエクスポートする
このセクションでは、export-to-bigquery
コードサンプルの export-jobs ワークフローを使用してジョブ情報をエクスポートする方法について説明します。export-jobs ワークフローは、指定されたリージョンにあり、指定されたフィルタ条件を満たすプロジェクトのジョブの情報をエクスポートします。
export-jobs ワークフローは、指定されたデータセット内の指定されたテーブルにジョブ情報をエクスポートします。このテーブルは、プロジェクトにまだ存在しない場合はワークフローで自動的に作成されます。デフォルトでは、export-jobs ワークフローはエクスポートされたジョブを Batch から削除しますが、必要に応じて、ジョブを削除しないように export-jobs ワークフローを編集できます。
使用する export-jobs ワークフローごとに、次の操作を行います。
- ワークフロー定義を構成する。
- ワークフローを作成してデプロイする。
- ワークフローを実行する。指定したジョブをエクスポートするたびに、この手順を繰り返します。
ワークフロー定義を構成する
GitHub から
export-to-bigquery-delete-batch-jobs.yaml
ファイルをダウンロードします。テキスト エディタで
export-to-bigquery-delete-batch-jobs.yaml
ファイルを開きます。 次のように編集します。sys.get_env("GOOGLE_CLOUD_PROJECT_ID")
は、文字列形式のプロジェクト ID に置き換えます(例:"my-project-id"
)。sys.get_env("GOOGLE_CLOUD_LOCATION")
は、エクスポートするジョブを含むリージョンに置き換えます。リージョンは文字列形式で指定します(例:"us-central1"
)。省略可: エクスポートするジョブを指定するフィルタ条件を編集します。
デフォルトでは、export-jobs ワークフローはフィルタ条件
"(status.state:SUCCEEDED OR status.state:FAILED) AND create_time<=\"2023-05-01T00:00:00Z\""
を指定します。このデフォルトのフィルタ条件では、SUCCEEDED
またはFAILED
の状態にあり、2023-05-01T00:00:00Z
RFC 3339 タイムスタンプより前に作成されたジョブの情報のみがエクスポートされます。省略可:
default_dataset_id
は、export-jobs ワークフローで使用または作成するデータセットの別の名前に置き換えます。省略可:
default_table_id
は、export-jobs ワークフローで使用または作成するテーブルの別の名前に置き換えます。エクスポートされたジョブがワークフローで削除されないようにするには、次の操作を行います。
次の行を削除します。
- log_delete_step: call: sys.log args: text: ${"Deleting Batch job " + j.name} severity: NOTICE - delete_job: call: googleapis.batch.v1.projects.locations.jobs.delete args: name: ${j.name}
+ " and deleted"
を削除します。
ファイルを保存します。ファイルを開いたままにします。
ワークフローを作成してデプロイする。
Google Cloud コンソールの [ワークフロー] ページに移動します。
[ワークフロー] ページで、
[作成] をクリックします。[ワークフロー名] フィールドに、ワークフローの名前を入力します(例:
export-batch-jobs-us-central1
)。[サービス アカウント] リストで、事前に準備したサービス アカウントを選択します。
[次へ] をクリックします。
ワークフロー エディタで、サンプル ワークフローを
export-to-bigquery-delete-batch-jobs.yaml
ファイルの内容に置き換えます。その後、ファイルを閉じることができます。[デプロイ] をクリックします。[ワークフローの詳細] ページが開きます。
ワークフローを実行する
[ワークフローの詳細] ページで [
実行] を選択します。[ワークフローの実行] ページが開きます。表示された [ワークフローの実行] ページで、[実行] をクリックします。
開いた [実行の詳細] で、ワークフローの実行が完了するのを待ちます。たとえば、数個のジョブをエクスポートして削除する実行時間は通常数秒ですが、多くのジョブをエクスポートして削除する場合は、実行時間が長くなることがあります。
ワークフローの実行が完了すると、[出力] ペインに結果が表示されます。
エクスポートされたジョブ情報を表示する
このセクションでは、export-jobs ワークフローによって作成されたテーブルデータを表示する方法について説明します。たとえば、次の手順でワークフローが正常に実行されたことを確認して、テーブルデータを参照できます。エクスポートされたジョブ情報を表示して使用する方法(クエリの記述など)の詳細については、BigQuery ドキュメントのテーブルデータの管理をご覧ください。
Google Cloud コンソールで [BigQuery] ページに移動します。
[エクスプローラ] パネルで、エクスポートされたジョブ情報のテーブルを開きます。
- [BigQuery リソースを検索] フィールドに、export-jobs ワークフローのテーブルの名前を入力します。たとえば、デフォルトのテーブル名は
default_table_id
です。 - テーブルの名前をクリックします。テーブルの詳細ページが開きます。
テーブルの詳細ページで、[詳細] タブをクリックします。
[詳細] タブで、[最終更新日] のタイムスタンプと [行数] をメモします。
テーブルの詳細ページで、[プレビュー] タブをクリックします。
- [BigQuery リソースを検索] フィールドに、export-jobs ワークフローのテーブルの名前を入力します。たとえば、デフォルトのテーブル名は