このページでは、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 ワークフローはエクスポートされたジョブもバッチから削除しますが、必要に応じて、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
ファイルの内容に置き換えます。その後、ファイルを閉じることができます。[デプロイ] をクリックします。[Workflow の詳細] ページが開きます。
ワークフローを実行する
[ワークフローの詳細] ページで [
実行] を選択します。[ワークフローの実行] ページが開きます。表示された [ワークフローの実行] ページで、[実行] をクリックします。
開いた [実行の詳細] で、ワークフローの実行が完了するのを待ちます。たとえば、数個のジョブをエクスポートして削除する実行時間は通常数秒ですが、多くのジョブをエクスポートして削除する場合は、実行時間が長くなることがあります。
ワークフローの実行が完了すると、[出力] ペインに結果が表示されます。
書き出されたジョブ情報を表示する
このセクションでは、export-jobs ワークフローによって作成されたテーブルデータを表示する方法について説明します。たとえば、次の手順でワークフローが正常に実行されたことを確認して、テーブルデータを参照できます。エクスポートされたジョブ情報を表示して使用する方法(クエリの作成など)の詳細については、BigQuery ドキュメントのテーブルデータの管理をご覧ください。
Google Cloud コンソールで [BigQuery] ページに移動します。
[エクスプローラ] パネルで、エクスポートしたジョブ情報のテーブルを開きます。
- [BigQuery リソースを検索] フィールドに、エクスポート ジョブ ワークフローのテーブルの名前を入力します。たとえば、デフォルトのテーブル名は
default_table_id
です。 - テーブルの名前をクリックします。テーブルの詳細ページが開きます。
テーブルの詳細ページで、[詳細] タブをクリックします。
[詳細] タブで、[最終更新日] のタイムスタンプと [行数] をメモします。
テーブルの詳細ページで、[プレビュー] タブをクリックします。
- [BigQuery リソースを検索] フィールドに、エクスポート ジョブ ワークフローのテーブルの名前を入力します。たとえば、デフォルトのテーブル名は