0
0

[BigQuery API(V2)] JavaでBigQueryのジョブを生成・削除する

Posted at

BigQuery API V2(Java)を使用して、
BigQueryのジョブを生成・削除する方法
についてご紹介します。

ジョブとは
データの読み込み、データのエクスポート、データのクエリ、データのコピーなど、
BigQueryがユーザーに代わって実行するアクションを指します。

ジョブ生成・削除には適切なIAM権限が付与されている必要があります。

権限付与に関しては
⧉[BigQuery API(V2)] JavaでBigQueryを使う(2.権限付与)
を参照ください。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[BigQuery API(V2)] JavaでBigQueryを使う
を参照ください。

No 目次
1 ジョブを生成
1 スコープ
2 実行
3 レスポンスの内容
2 ジョブを削除
1 スコープ
2 実行
3 レスポンスの内容

1. ジョブを生成

指定したプロジェクトにジョブを生成します。

1.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

BigqueryScopes.BIGQUERY
BigqueryScopes.CLOUD_PLATFORM
BigqueryScopes.DEVSTORAGE_FULL_CONTROL
BigqueryScopes.DEVSTORAGE_READ_ONLY
BigqueryScopes.DEVSTORAGE_READ_WRITE

⧉[BigQuery API(V2)] JavaでBigQueryを使う(3.2. BigQueryインスタンスを取得)
でスコープを指定してください。

1.2. 実行

public static void main(String[] args) throws Exception{
    Bigquery bigquery = getBigquery();
    Bigquery.Jobs jobs = bigquery.jobs();
    
    JobConfigurationQuery query = new JobConfigurationQuery();
    query.setQuery("SELECT * FROM `プロジェクトID.データセットID.テーブルID` LIMIT 10");
    query.setUseLegacySql(false);
    
    JobConfiguration configuration = new JobConfiguration();
    configuration.setQuery(query);
    
    Job content = new Job();
    content.setConfiguration(configuration);
    
    Bigquery.Jobs.Insert insert = jobs.insert("プロジェクトID",content);
    
    Job res = insert.execute();
    System.out.println(res);
}

1.2.1. HTTPリクエスト

POST: https://bigquery.googleapis.com/upload/bigquery/v2/projects/{プロジェクトID}/jobs
が実行されます。

1.2.2. クエリパラメータ

Jobのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setConfiguration JobConfiguration 【必須】ジョブの構成
setJobReference JobReference ジョブのリファレンス

JobConfiguration

メソッド 引数 説明
setQuery JobConfigurationQuery クエリジョブの設定
setLoad JobConfigurationLoad ロードジョブの設定
setCopy JobConfigurationTableCopy テーブルのコピー
setExtract JobConfigurationExtract 抽出ジョブの構成
setDryRun Boolean ジョブを実際に実行するか
setJobTimeoutMs Long ジョブのタイムアウト(ミリ秒)
setLabels Map<String,String> ジョブに関連付けられたラベル

JobConfigurationQuery

メソッド 引数 説明
setQuery String 【必須】実行するSQLクエリテキスト
setDestinationTable TableReference クエリ結果を保存するテーブルのプロパティ
setTableDefinitions Map<String,ExternalDataConfiguration> クエリ可能な一時テーブルとして動作する外部テーブル定義
setUserDefinedFunctionResources List<UserDefinedFunctionResource> クエリで使用されるユーザー定義関数リソースについての説明
setCreateDisposition String ジョブが新しい​​テーブルを作成できるか
setWriteDisposition String 宛先テーブルがすでに存在する場合に実行されるアクション
setDefaultDataset DatasetReference クエリ内の非修飾テーブル名に使用するデフォルトのデータセット
setPriority String クエリの優先度
"INTERACTIVE"、"BATCH"
setAllowLargeResults Boolean パフォーマンスをわずかに犠牲にして、任意の大きな結果テーブルを生成できるか
setUseQueryCache Boolean クエリキャッシュで結果を検索するか
setFlattenResults Boolean クエリ結果内のすべてのネストされた繰り返しフィールドをフラット化するか
setMaximumBytesBilled Long ジョブに対して請求される最大バイト数
setUseLegacySql Boolean BigQueryのレガシーSQL言語を使用するか
setParameterMode String パラメータモード(GoogleSQLのみ)
setQueryParameters List<QueryParameter> jobs.queryパラメータ(GoogleSQLのみ)
setSchemaUpdateOptions List<String> スキーマ更新オプション
setRangePartitioning RangePartitioning 宛先テーブルの範囲パーティション化の仕様
setClustering Clustering 宛先テーブルのクラスタリング仕様
setDestinationEncryptionConfiguration EncryptionConfiguration カスタム暗号化構成
setScriptOptions ScriptOptions スクリプトの実行を制御
setConnectionProperties List<ConnectionProperty> クエリの動作を変更できる接続プロパティ
setCreateSession Boolean ジョブはランダムに生成されたsessionIdを使用して新しいセッションを作成するか

ExternalDataConfiguration

メソッド 引数 説明
setSourceUris List<String> GoogleCloud内のデータを指す完全修飾URI
setFileSetSpecType FileSetSpecType(enum) ロードするファイルセットを構築するためにソースURIを解釈する情報
setSchema ⧉ TableSchema データのスキーマ
setSourceFormat String データ形式
setMaxBadRecords Integer データの読み取り時にBigQueryが無視できる不良レコードの最大数
setAutodetect Boolean スキーマとフォーマットのオプションを自動的に検出するか
setIgnoreUnknownValues Boolean BigQuery がテーブル スキーマで表されていない追加の値を許可するか
setCompression String データソースの圧縮タイプ
setCsvOptions CsvOptions sourceFormatがCSVに設定されている場合に設定する追加のプロパティ
setJsonOptions JsonOptions sourceFormatがJSONに設定されている場合に設定する追加のプロパティ
setBigtableOptions BigtableOptions sourceFormatがBIGTABLEに設定されている場合の追加オプション
setGoogleSheetsOptions GoogleSheetsOptions sourceFormatがGOOGLE_SHEETSに設定されている場合の追加オプション
setHivePartitioningOptions HivePartitioningOptions ハイブのパーティショニングのサポート構成
setConnectionId String Azure Blob、Cloud Storage、S3 などの外部ストレージの読み取りに使用される資格情報
setDecimalTargetTypes List<DecimalTargetType(enum)> SQLデータ型のリスト
setAvroOptions AvroOptions sourceFormatがAVROに設定されている場合に設定する追加のプロパティ
setJsonExtension JsonExtension(enum) JSONのバリアントがロードされているかを示す
setParquetOptions ParquetOptions sourceFormatがPARQUETに設定されている場合に設定する追加のプロパティ
setReferenceFileSchemaUri String テーブルスキーマを含む参照ファイル
setMetadataCacheMode MetadataCacheMode(enum) テーブルのメタデータキャッシュモード
setObjectMetadata ObjectMetadata(enum) メタデータの種類

JobConfigurationLoad

メソッド 引数 説明
setSourceUris List<String> GoogleCloud内のデータを指す完全修飾URI
setFileSetSpecType FileSetSpecType(enum) ソースURIを解釈する方法
setSchema ⧉ TableSchema 宛先テーブルのスキーマ
setDestinationTable TableReference データをロードする宛先テーブル
setDestinationTableProperties DestinationTableProperties 新しい場合に宛先テーブルを作成するためのプロパティ
setCreateDisposition String ジョブが新しい​​テーブルを作成できるか
setWriteDisposition String 宛先テーブルがすでに存在する場合に実行されるアクション
setNullMarker String CSVファイル内のnull値を表す文字列
setFieldDelimiter String CSVファイル内のフィールドの区切り文字
setSkipLeadingRows Integer データの読み込み時にスキップするCSVファイルの先頭の行数
setEncoding String データの文字エンコーディング
setQuote String CSVファイル内のデータセクションを引用するために使用される値
setMaxBadRecords Integer ジョブの実行時に無視できる不良レコードの最大数
setAllowQuotedNewlines Boolean CSVファイル内で改行文字を含む引用符で囲まれたデータセクションを許可するか
setSourceFormat String データファイルの形式
"CSV"(CSVファイル)、"DATASTORE_BACKUP"(指定データストアのバックアップ)、"NEWLINE_DELIMITED_JSON"(指定改行区切りのJSON)、"AVRO"(AVRO)、"PARQUET"(PARQUET)、"ORC"(ORC)
setAllowJaggedRows Boolean 末尾のオプション列が欠落している行を受け入れるか
setIgnoreUnknownValues Boolean テーブルスキーマで表されていない追加の値を許可するか
setProjectionFields List<String> 読み込むドキュメントフィールド
setAutodetect Boolean CSVおよびJSONソースのオプションとスキーマを自動的に推論するか
setSchemaUpdateOptions List<String> スキーマ更新オプション
setTimePartitioning TimePartitioning 宛先テーブルの時間ベースのパーティショニング仕様
setRangePartitioning RangePartitioning 宛先テーブルの範囲パーティション化の仕様
setClustering Clustering 宛先テーブルのクラスタリング仕様
setDestinationEncryptionConfiguration EncryptionConfiguration カスタム暗号化構成
setUseAvroLogicalTypes Boolean 論理型を対応するBigQueryデータ型(TIMESTAMPなど)として解釈するか(sourceFormatが"AVRO"の場合のみ)
setReferenceFileSchemaUri String ユーザーは、リーダースキーマを含む参照ファイルURI
setHivePartitioningOptions HivePartitioningOptions ハイブのパーティショニング構成
setDecimalTargetTypes List<DecimalTargetType(enum)> ソース10進値の変換先となる可能なSQLデータ型
setJsonExtension JsonExtension(enum) JSONのバリアントがロードされていることを示す情報
setParquetOptions ParquetOptions 追加のプロパティ(sourceFormatが"PARQUET"の場合のみ)
setPreserveAsciiControlCharacters Boolean 埋め込まれたASCII制御文字が保持されるか(sourceFormatが"CSV"の場合のみ)
setCopyFilesOnly Boolean 管理テーブルにファイルを直接コピーするようにロードジョブを構成するか

JobConfigurationTableCopy

メソッド 引数 説明
setSourceTable TableReference コピーするソーステーブル
setSourceTables List<TableReference> コピーするソーステーブル
setDestinationTable TableReference 宛先テーブル
setCreateDisposition String ジョブが新しい​​テーブルを作成できるか
setWriteDisposition String 宛先テーブルがすでに存在する場合に実行されるアクション
setDestinationEncryptionConfiguration EncryptionConfiguration カスタム暗号化構成
setOperationType OperationType(enum) テーブルコピージョブでサポートされている操作タイプ
setDestinationExpirationTime String 宛先テーブルの有効期限が切れる時刻

JobConfigurationExtract

メソッド 引数 説明
setDestinationUris List<String> 抽出されたテーブルが書き込まれる完全修飾(GoogleCloudStorage URIのリスト)
setPrintHeader Boolean 結果にヘッダー行を出力するかどうか
setFieldDelimiter String エクスポートされたデータのフィールド間で使用する区切り文字(CSVのみ)
setDestinationFormat String エクスポートされたファイル形式
setCompression String エクスポートされたファイルに使用する圧縮タイプ
"DEFLATE"、"GZIP"、"NONE"、"SNAPPY"、"ZSTD"
setUseAvroLogicalTypes Boolean 抽出するときに論理タイプを使用するかどうか(AVROのみ)
setModelExtractOptions ModelExtractOptions モデル抽出オプション
setSourceTable TableReference エクスポートされるテーブルへの参照
setSourceModel ModelReference エクスポートされるモデルへの参照

JobReference

メソッド 引数 説明
setProjectId String プロジェクトID
setJobId String ジョブID
setLocation String ロケーション

TableReference

メソッド 引数 説明
setProjectId String プロジェクトID
setDatasetId String データセットID
setTableId String テーブルID

UserDefinedFunctionResource

メソッド 引数 説明
setResourceUri String リソースのURI
setInlineCode String ユーザー定義関数(UDF)のコードを含むインラインリソース

DatasetReference

メソッド 引数 説明
setDatasetId String データセットID
setProjectId String プロジェクトID

ConnectionProperty

メソッド 引数 説明
setKey String プロパティのキー
setValue String プロパティの値

EncryptionConfiguration

メソッド 引数 説明
setKmsKeyName String CloudKMS暗号化キーの説明

Clustering

メソッド 引数 説明
setFields List<String> クラスタリングするフィールド

RangePartitioning

メソッド 引数 説明
setField String 分割するフィールド
setRange RangePartitioning.Range 範囲分割の範囲情報

RangePartitioning.Range

メソッド 引数 説明
setStart String 範囲分割の開始
setEnd String 範囲分割の終了
setInterval String 各間隔の幅

ScriptOptions

メソッド 引数 説明
setStatementTimeoutMs Long スクリプト内の各ステートメントのタイムアウト期間
setStatementByteBudget Long 制限するステートメントごとに請求されるバイト数
setKeyResultStatement KeyResultStatementKind(enum) スクリプトジョブのスキーマとクエリ結果の入力に使用されるキー

TimePartitioning

メソッド 引数 説明
setType String タイプ
"DAY"、"HOUR"、"MONTH"、"YEAR"
setExpirationMs Long パーティションのストレージを保持する時間(ミリ秒)
setField String パーティション化するフィールド

DestinationTableProperties

メソッド 引数 説明
setFriendlyName String 宛先テーブルのフレンドリ名
setDescription String 宛先テーブルの説明
setLabels Map<String,String> テーブルに関連付けられたラベル

ModelReference

メソッド 引数 説明
setProjectId String プロジェクトID
setDatasetId String データセットID
setModelId String モデルID

ModelExtractOptions

メソッド 引数 説明
setTrialId Long ハイパーパラメータ調整モデルからエクスポートされるトライアルID

CsvOptions

メソッド 引数 説明
setFieldDelimiter String CSVファイル内のフィールドの区切り文字
setSkipLeadingRows Long スキップするCSVファイルの先頭の行数
setQuote String CSVファイル内のデータセクションを引用するために使用される値
setAllowQuotedNewlines Boolean CSVファイル内で改行文字を含む引用符で囲まれたデータセクションを許可するか
setAllowJaggedRows Boolean 末尾のオプション列が欠落している行を受け入れるか
setEncoding String データの文字エンコーディング
"UTF-8"、"ISO-8859-1"、"UTF-16BE"、"UTF-16LE"、"UTF-32BE"、"UTF-32LE"
setPreserveAsciiControlCharacters Boolean 埋め込みASCII制御文字が保持されるか
setNullMarker String CSVファイル内のnull値を表す文字列

JsonOptions

メソッド 引数 説明
setEncoding String データの文字エンコーディング
"UTF-8"、"UTF-16BE"、"UTF-16LE"、"UTF-32BE"、"UTF-32LE"

BigtableOptions

メソッド 引数 説明
setColumnFamilies List<BigtableColumnFamily> 列ファミリーのリスト
setIgnoreUnspecifiedColumnFamilies Boolean 列ファミリーはテーブルスキーマで公開しないか
setReadRowkeyAsString Boolean 行キー列ファミリーを文字列に変換するか
setOutputColumnFamiliesAsJson Boolean 各列ファミリーは単一のJSON列として読み取るか

BigtableColumnFamily

メソッド 引数 説明
setFamilyId String 列ファミリーの識別子
setType String セルの値を変換する型
"BYTES"、"STRING"、"INTEGER"、"FLOAT"、"BOOLEAN"、"JSON"
setEncoding String エンコードの種類
"TEXT"(テキスト文字列)、"BINARY"(バイナリ)
setColumns List<BigtableColumn> 列フィールド
setOnlyReadLatest Boolean この列の値の最新バージョンのみを公開するか

BigtableColumn

メソッド 引数 説明
setQualifierEncoded String 列の修飾子
setQualifierString String 修飾子の文字列
setFieldName String 列フィールド名
setType String セルの値を変換する型
"BYTES"、"STRING"、"INTEGER"、"FLOAT"、"BOOLEAN"、"JSON"
setEncoding String エンコードの種類
"TEXT"(テキスト文字列)、"BINARY"(バイナリ)
setOnlyReadLatest Boolean この列の値の最新バージョンのみを公開するか

GoogleSheetsOptions

メソッド 引数 説明
setSkipLeadingRows Long 読み取り時にスキップするシート上部の行数
setRange String クエリの対象となるシートの範囲

HivePartitioningOptions

メソッド 引数 説明
setMode String データの読み取り時に使用するハイブパーティショニングのモード
setSourceUriPrefix String ソースURIのプレフィックス(接頭語)
setRequirePartitionFilter Boolean パーティションの削除に使用できるパーティションフィルターを指定するか
setFields List<String> ハイブパーティションキー

AvroOptions

メソッド 引数 説明
setUseAvroLogicalTypes Boolean 論理型を対応するBigQueryデータ型として解釈するか

ParquetOptions

メソッド 引数 説明
setEnumAsString Boolean デフォルトでParquetENUM論理型をBYTESではなくSTRINGとして推論するか
setEnableListInference Boolean ParquetLIST論理型に対してスキーマ推論を使用するか

QueryParameterType

メソッド 引数 説明
setType String トップレベルのタイプ
setArrayType QueryParameterType 配列の要素の型
setStructTypes List<QueryParameterType.StructTypes 構造体のフィールドの型
setRangeElementType QueryParameterType 範囲の要素タイプ

QueryParameterType.StructTypes

メソッド 引数 説明
setName String フィールドの名前
setType QueryParameterType フィールドのタイプ
setDescription String フィールドの説明

QueryParameter

メソッド 引数 説明
setName String パラメータ名
setParameterType QueryParameterType パラメータのタイプ
setParameterValue QueryParameterValue パラメータの値

QueryParameterValue

メソッド 引数 説明
setValue String
setArrayValues List<QueryParameterValue> 配列値
setStructValues Map<String,QueryParameterValue> 構造体のフィールド値
setRangeValue RangeValue 範囲の​​値

RangeValue

メソッド 引数 説明
setStart QueryParameterValue 範囲の開始値
setEnd QueryParameterValue 範囲の終了値

FileSetSpecType

定義値 内容
FILE_SET_SPEC_TYPE_FILE_SYSTEM_MATCH オブジェクトストアからファイルをリストすることによってソースURIを展開
FILE_SET_SPEC_TYPE_NEW_LINE_DELIMITED_MANIFEST 提供されるURIが改行で区切られたマニフェストファイルであり、1行に1つのURIを展開

DecimalTargetType

定義値 内容
DECIMAL_TARGET_TYPE_UNSPECIFIED 無効なタイプ
NUMERIC 10進数値はNUMERIC型に変換
BIGNUMERIC 10進数値はBIGNUMERIC型に変換
STRING 10進数値はSTRING型に変換

JsonExtension

定義値 内容
JSON_EXTENSION_UNSPECIFIED ソース形式は何も変更せずに解析
GEOJSON JSONのGeoJSONバリアントを使用

OperationType

定義値 内容
OPERATION_TYPE_UNSPECIFIED 未指定
COPY ソーステーブルと宛先テーブルのテーブルタイプは同じ
SNAPSHOT ソーステーブルのタイプはTABLEで、宛先テーブルのタイプはSNAPSHOT
RESTORE ソーステーブルタイプはSNAPSHOTで、宛先テーブルタイプはTABLE
CLONE ソーステーブルと宛先テーブルのテーブルタイプは同じ、一意のデータに対してのみ課金される

MetadataCacheMode

定義値 内容
METADATA_CACHE_MODE_UNSPECIFIED 未定義
AUTOMATIC 外部ソースからのメタデータキャッシュの自動バックグラウンド更新をトリガー
MANUAL 外部ソースからのメタデータキャッシュの手動更新をトリガー

ObjectMetadata

定義値 内容
OBJECT_METADATA_UNSPECIFIED 未定義
SIMPLE オブジェクトのディレクトリリスト

KeyResultStatementKind

定義値 内容
KEY_RESULT_STATEMENT_KIND_UNSPECIFIED デフォルト値
LAST 最後の結果が重要な結果を決定
FIRST_SELECT 最初のSELECTステートメントによってキーの結果

create_disposition

定義値 内容
CREATE_IF_NEEDED テーブルが存在しない場合、BigQueryはテーブルを作成
CREATE_NEVER テーブルはすでに存在している必要がある

write_disposition

定義値 内容
WRITE_TRUNCATE テーブルがすでに存在する場合、BigQueryはデータを上書きし、制約を削除し、クエリ結果のスキーマを使用
WRITE_APPEND テーブルがすでに存在する場合、BigQueryはデータをテーブルに追加
WRITE_EMPTY テーブルがすでに存在し、データが含まれている場合、ジョブの結果で「重複」エラー

スキーマ更新オプション

定義値 内容
ALLOW_FIELD_ADDITION 新しいフィールドの追加を許可
ALLOW_FIELD_RELAXATION REQUIREDフィールドをNULLABLEに緩和することを許可

ハイブパーティショニングのモード

定義値 内容
AUTO パーティションキーの名前とタイプを自動的に推測
STRINGS パーティションキー名を自動的に推測
CUSTOM パーティションキースキーマはソースURIプレフィックスでエンコードされる

1.3. レスポンスの内容

Job

⧉[BigQuery API(V2)] JavaでBigQueryのジョブを取得する(Job)と同じです。

2. ジョブを削除

指定したジョブを削除します。

2.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

BigqueryScopes.BIGQUERY
BigqueryScopes.CLOUD_PLATFORM

⧉[BigQuery API(V2)] JavaでBigQueryを使う(3.2. BigQueryインスタンスを取得)
でスコープを指定してください。

2.2. 実行

ジョブIDは、JobReferenceのgetJobId()で取得できる値を指定します。

public static void main(String[] args) throws Exception{
    Bigquery bigquery = getBigquery();
    Bigquery.Jobs jobs = bigquery.jobs();
    
    Bigquery.Jobs.Delete delete = jobs.delete("プロジェクトID","ジョブID");
    delete.setLocation("ロケーションID");
    
    delete.execute();
}

2.2.1. HTTPリクエスト

DELETE: https://bigquery.googleapis.com/bigquery/v2/projects/{プロジェクトID}/jobs/{ジョブID}/delete
が実行されます。

2.2.2. クエリパラメータ

Bigquery.Jobs.Deleteのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setLocation String 【必須】ロケーションID

2.3. レスポンスの内容

レスポンスはありません。
削除に失敗すると例外が発生します。



おしまい。。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0