[BigQuery API(V2)] JavaでBigQuery ML モデルの情報を更新・削除する

BigQuery API V2(Java)を使用して、
BigQuery ML モデルの情報を更新・削除する方法
についてご紹介します。

MLモデルの更新・削除する場合は、
データセットに対し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. モデルを更新
指定したMLモデルを更新します。

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

### 1.2. 実行
作成するデータセットIDの設定は必須です。

```java
public static void main(String[] args) throws Exception{
    Bigquery bigquery = getBigquery();
    Bigquery.Models models = bigquery.models();
    
    Model content = new Model();
    //更新内容の設定
    
    Bigquery.Models.Patch patch = models.patch("プロジェクトID","データセットID","モデルID",content);
    
    Model res = patch.execute();
    System.out.println(res);
}
```
#### 1.2.1. HTTPリクエスト
PATCH:　https:\//bigquery.googleapis.com/bigquery/v2/projects/{プロジェクトID}/datasets/{データセットID}/models/{モデルID}
が実行されます。

#### 1.2.2. クエリパラメータ
クエリパラメータはありません。

#### 1.2.2. リクエストボディ
Modelのsetメソッドにより、リクエストボディを追加できます。

|メソッド|引数|説明|
|---|---|---|
|setModelReference|[ModelReference](#modelreference)|【必須】モデルの一意の識別子|
|setDescription|String|説明|
|setFriendlyName|String|説明する名前|
|setLabels|Map\<String,String\>|モデルに関連付けられたラベル|
|setExpirationTime|Long|モデルの有効期限が切れる時刻(ミリ秒)|
|setEncryptionConfiguration|[EncryptionConfiguration](#encryptionconfiguration)|カスタム暗号化構成の情報|
|setTrainingRuns|List\<[TrainingRun](#trainingrun)\>|トレーニング実行の情報|

#### ModelReference
|メソッド|引数|説明|
|---|---|---|
|setProjectId|String|【必須】プロジェクトID|
|setDatasetId|String|【必須】データセットID|
|setModelId|String|【必須】モデルID|

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

#### TrainingRun
|メソッド|引数|説明|
|---|---|---|
|setVertexAiModelId|String|VertexAIモデルレジストリ内のモデルID|

### 1.3. レスポンスの内容
#### Model
[⧉[BigQuery API(V2)] JavaでBigQuery ML モデルの情報を取得する(Model)](https://qiita.com/doran/items/5abe8a4677d939a69557#model)
と同じです。

## 2. モデルを削除
指定したMLモデルを削除します。

### 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. 実行

```java
public static void main(String[] args) throws Exception{
    Bigquery bigquery = getBigquery();
    Bigquery.Models models = bigquery.models();
    
    Bigquery.Models.Delete delete = models.delete("プロジェクトID","データセットID","モデルID");
    
    delete.execute();
}
```
#### 2.2.1. HTTPリクエスト
DELETE:　https:\//bigquery.googleapis.com/bigquery/v2/projects/{プロジェクトID}/datasets/{データセットID}/models/{モデルID}
が実行されます。

#### 2.2.2. クエリパラメータ
クエリパラメータはありません。

#### 2.2.3. リクエストボディ
リクエストボディはありません。

### 2.3. レスポンスの内容
レスポンスはありません。
削除に失敗した場合は例外が発生します。

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