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

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

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

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

権限付与に関しては
[⧉[BigQuery API(V2)] JavaでBigQueryを使う(2.権限付与)](https://qiita.com/doran/items/8b7ba29672527426e88d#2-権限付与)
を参照ください。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[BigQuery API(V2)] JavaでBigQueryを使う](https://qiita.com/doran/items/8b7ba29672527426e88d)
を参照ください。
:::

|No||目次|
|---|---|---|
|1||[ジョブを生成](#1-ジョブを生成)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[ジョブを削除](#2-ジョブを削除)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|

## 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インスタンスを取得)](https://qiita.com/doran/items/8b7ba29672527426e88d#32-bigqueryインスタンスを取得)
でスコープを指定してください。

### 1.2. 実行

```java
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](#jobconfiguration)|【必須】ジョブの構成|
|setJobReference|[JobReference](#jobreference)|ジョブのリファレンス|

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

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

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

#### JobConfigurationLoad
|メソッド|引数|説明|
|---|---|---|
|setSourceUris|List\<String\>|GoogleCloud内のデータを指す完全修飾URI|
|setFileSetSpecType|[FileSetSpecType(enum)](#filesetspectype)|ソースURIを解釈する方法|
|setSchema|[⧉ TableSchema](https://qiita.com/doran/items/339d7904682d03756b50#tableschema)|宛先テーブルのスキーマ|
|setDestinationTable|[TableReference](#tablereference)|データをロードする宛先テーブル|
|setDestinationTableProperties|[DestinationTableProperties](#destinationtableproperties)|新しい場合に宛先テーブルを作成するためのプロパティ|
|setCreateDisposition|String|[ジョブが新しい​​テーブルを作成できるか](#create_disposition)|
|setWriteDisposition|String|[宛先テーブルがすでに存在する場合に実行されるアクション](#write_disposition)|
|setNullMarker|String|CSVファイル内のnull値を表す文字列|
|setFieldDelimiter|String|CSVファイル内のフィールドの区切り文字|
|setSkipLeadingRows|Integer|データの読み込み時にスキップするCSVファイルの先頭の行数|
|setEncoding|String|データの文字エンコーディング|
|setQuote|String|CSVファイル内のデータセクションを引用するために使用される値|
|setMaxBadRecords|Integer|ジョブの実行時に無視できる不良レコードの最大数|
|setAllowQuotedNewlines|Boolean|CSVファイル内で改行文字を含む引用符で囲まれたデータセクションを許可するか|
|setSourceFormat|String|データファイルの形式<br>"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](#timepartitioning)|宛先テーブルの時間ベースのパーティショニング仕様|
|setRangePartitioning|[RangePartitioning](#rangepartitioning)|宛先テーブルの範囲パーティション化の仕様|
|setClustering|[Clustering](#clustering)|宛先テーブルのクラスタリング仕様|
|setDestinationEncryptionConfiguration|[EncryptionConfiguration](#encryptionconfiguration)|カスタム暗号化構成|
|setUseAvroLogicalTypes|Boolean|論理型を対応するBigQueryデータ型（TIMESTAMPなど）として解釈するか(sourceFormatが"AVRO"の場合のみ)|
|setReferenceFileSchemaUri|String|ユーザーは、リーダースキーマを含む参照ファイルURI|
|setHivePartitioningOptions|[HivePartitioningOptions](#hivepartitioningoptions)|ハイブのパーティショニング構成|
|setDecimalTargetTypes|List\<[DecimalTargetType(enum)](#decimaltargettype)\>|ソース10進値の変換先となる可能なSQLデータ型|
|setJsonExtension|[JsonExtension(enum)](#jsonextension)|JSONのバリアントがロードされていることを示す情報|
|setParquetOptions|[ParquetOptions](#parquetoptions)|追加のプロパティ(sourceFormatが"PARQUET"の場合のみ)|
|setPreserveAsciiControlCharacters|Boolean|埋め込まれたASCII制御文字が保持されるか(sourceFormatが"CSV"の場合のみ)|
|setCopyFilesOnly|Boolean|管理テーブルにファイルを直接コピーするようにロードジョブを構成するか|

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

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

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

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

#### TimePartitioning
|メソッド|引数|説明|
|---|---|---|
|setType|String|タイプ<br>"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|データの文字エンコーディング<br>"UTF-8"、"ISO-8859-1"、"UTF-16BE"、"UTF-16LE"、"UTF-32BE"、"UTF-32LE"|
|setPreserveAsciiControlCharacters|Boolean|埋め込みASCII制御文字が保持されるか|
|setNullMarker|String|CSVファイル内のnull値を表す文字列|

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

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

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

#### BigtableColumn
|メソッド|引数|説明|
|---|---|---|
|setQualifierEncoded|String|列の修飾子|
|setQualifierString|String|修飾子の文字列|
|setFieldName|String|列フィールド名|
|setType|String|セルの値を変換する型<br>"BYTES"、"STRING"、"INTEGER"、"FLOAT"、"BOOLEAN"、"JSON"|
|setEncoding|String|エンコードの種類<br>"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](#queryparametertype)|配列の要素の型|
|setStructTypes|List\<[QueryParameterType.StructTypes](#queryparametertypestructtypes)|構造体のフィールドの型|
|setRangeElementType|[QueryParameterType](#queryparametertype)|範囲の要素タイプ|

#### QueryParameterType.StructTypes
|メソッド|引数|説明|
|---|---|---|
|setName|String|フィールドの名前|
|setType|[QueryParameterType](#queryparametertype)|フィールドのタイプ|
|setDescription|String|フィールドの説明|

#### QueryParameter
|メソッド|引数|説明|
|---|---|---|
|setName|String|パラメータ名|
|setParameterType|[QueryParameterType](#queryparametertype)|パラメータのタイプ|
|setParameterValue|[QueryParameterValue](#queryparametervalue)|パラメータの値|

#### QueryParameterValue
|メソッド|引数|説明|
|---|---|---|
|setValue|String|値|
|setArrayValues|List\<[QueryParameterValue](#queryparametervalue)\>|配列値|
|setStructValues|Map\<String,[QueryParameterValue](#queryparametervalue)\>|構造体のフィールド値|
|setRangeValue|[RangeValue](#rangevalue)|範囲の​​値|

#### RangeValue
|メソッド|引数|説明|
|---|---|---|
|setStart|[QueryParameterValue](#queryparametervalue)|範囲の開始値|
|setEnd|[QueryParameterValue](#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)](https://qiita.com/doran/items/d0e8c55bad94e643adf1#job)と同じです。

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

### 2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
BigqueryScopes.BIGQUERY
BigqueryScopes.CLOUD_PLATFORM
```
[⧉[BigQuery API(V2)] JavaでBigQueryを使う(3.2. BigQueryインスタンスを取得)](https://qiita.com/doran/items/8b7ba29672527426e88d#32-bigqueryインスタンスを取得)
でスコープを指定してください。

### 2.2. 実行
ジョブIDは、[JobReferenceのgetJobId()](#jobreference)で取得できる値を指定します。

```java
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. レスポンスの内容
レスポンスはありません。
削除に失敗すると例外が発生します。

<br>
<br>
おしまい。。