モデルの削除

このページでは、BigQuery ML モデルを削除する方法を説明します。以下の方法でモデルを削除できます。

  • Cloud Console を使用する
  • コマンドライン ツールの bq rm コマンドまたは bq query コマンドを使用する
  • models.delete API メソッドか、jobs.query メソッドを呼び出す
  • クライアント ライブラリを使用する

現時点では、一度に 1 つのモデルしか削除できません。モデルを削除すると、モデル内のデータもすべて削除されます。

指定した期間の経過後にモデルを自動的に削除するには、CLI、API、クライアント ライブラリを使用してモデルを作成する際にモデルの有効期限を設定します。モデルの作成時に有効期限を設定しなかった場合は、更新することもできます。

モデル削除の制限

モデルの削除には、次の制限があります。

  • 複数のモデルを同時に削除することはできません。モデルは個別に削除してください。
  • モデルを削除すると、元に戻すことはできません。

必要な権限

データセット内のモデルを削除するユーザーには、データセットに対する WRITER 役割が割り当てられているか、bigquery.models.delete 権限を含むプロジェクト レベルの IAM 役割が割り当てられている必要があります。プロジェクト レベルで bigquery.models.delete 権限が付与されている場合は、プロジェクト内の任意のデータセット内のモデルを削除できます。次のプロジェクト レベルの IAM 役割には、bigquery.models.delete 権限が含まれます。

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

BigQuery ML での IAM 役割と権限の詳細については、アクセス制御をご覧ください。データセット レベルの役割の詳細については、BigQuery のドキュメントのデータセットの基本の役割をご覧ください。

モデルの削除

モデルの削除方法は次のとおりです。

Console

BigQuery ウェブ UI でモデルを削除するには、[モデルを削除] オプションを使用するか、DROP MODEL | DROP MODEL IF EXISTS DDL ステートメントを含むクエリを実行します。

オプション 1: [モデルを削除] オプションを使用する

  1. Cloud Console の BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. ナビゲーション パネルの [リソース] セクションで、プロジェクト名とデータセット名を展開します。

  3. モデル名をクリックします。モデルにはモデルアイコン モデルアイコン がついています。

  4. ウィンドウの右側にある [モデルを削除] をクリックします。

  5. [モデルを削除しますか] ダイアログでモデルの名前を入力し、[削除] をクリックします。

オプション 2: DDL ステートメントを使用する

  1. BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. [クエリを新規作成] をクリックします。

  3. [クエリエディタ] テキスト領域に DDL ステートメントを入力します。

     DROP MODEL mydataset.mymodel
     

  4. [実行] をクリックします。クエリが完了すると、モデルがナビゲーション パネルから削除されます。

CLI

bq コマンドライン ツールを使用してモデルを削除できます(以下を入力します)。

  • --model または -m フラグを指定した bq rm コマンド
  • bq query コマンド(クエリ パラメータとして DDL ステートメントを指定する)

削除するモデルがデフォルト プロジェクト以外のプロジェクトにある場合は、[PROJECT_ID]:[DATASET].[MODEL] の形式でプロジェクト ID をデータセットに追加します。

オプション 1: bq rm コマンドを入力する

bq rm コマンドでモデルを削除する場合、アクションを確認する必要があります。--force フラグ(または -f ショートカット)を使用すると、確認をスキップできます。

bq rm -f --model [PROJECT_ID]:[DATASET].[MODEL]

ここで

  • [PROJECT_ID] は、プロジェクト ID です。
  • [DATASET] はデータセットの名前です。
  • [MODEL] は削除中のモデルの名前です。

rm コマンドは出力を生成しません。

例:

mymodelmydataset から削除するには、次のコマンドを入力します。mydataset はデフォルト プロジェクトにあります。

bq rm --model mydataset.mymodel

mymodelmydataset から削除するには、次のコマンドを入力します。mydataset はデフォルト プロジェクトではなく myotherproject にあります。

bq rm --model myotherproject:mydataset.mymodel

mymodelmydataset から削除するには、次のコマンドを入力します。mydataset はデフォルト プロジェクトにあります。このコマンドでは -f ショートカットを使用しているため、確認は省略されます。

bq rm -f --model mydataset.mymodel

モデルが削除されたことを確認するには、bq ls コマンドを実行します。詳しくは、モデルの一覧表示をご覧ください。

オプション 2: bq query コマンドを入力する

bq query コマンドを使用してモデルを削除するには、クエリ パラメータに DROP MODEL ステートメントを指定し、--use_legacy_sql=false フラグを指定して標準 SQL クエリ構文を指定します。

例:

mymodelmydataset から削除するには、次のコマンドを入力します。mydataset はデフォルト プロジェクトにあります。

bq query --use_legacy_sql=false 'DROP MODEL mydataset.mymodel'

mymodelmydataset から削除するには、次のコマンドを入力します。mydataset はデフォルト プロジェクトではなく myotherproject にあります。

bq query --use_legacy_sql=false \
'DROP MODEL myotherproject:mydataset.mymodel'

API

オプション 1: models.delete メソッドを呼び出す

モデルを削除するには、models.delete メソッドを呼び出して、projectIddatasetId、および modelId を指定します。

オプション 2: jobs.query メソッドを呼び出す

モデルを削除するには、jobs.query メソッドを呼び出し、リクエスト本文のクエリ プロパティで DROP MODEL DDL ステートメントを指定します。

Go

import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// deleteModel demonstrates deletion of BigQuery ML model.
func deleteModel(projectID, datasetID, modelID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// modelID := "mymodel"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	model := client.Dataset(datasetID).Model(modelID)
	if err := model.Delete(ctx); err != nil {
		return fmt.Errorf("Delete: %v", err)
	}
	return nil
}

Java

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.ModelId;

// Sample to delete a model
public class DeleteModel {

  public static void runDeleteModel() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String modelName = "MY_MODEL_NAME";
    deleteModel(datasetName, modelName);
  }

  public static void deleteModel(String datasetName, String modelName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
      boolean success = bigquery.delete(ModelId.of(datasetName, modelName));
      if (success) {
        System.out.println("Model deleted successfully");
      } else {
        System.out.println("Model was not found");
      }
    } catch (BigQueryException e) {
      System.out.println("Model was not deleted. \n" + e.toString());
    }
  }
}

Node.js

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function deleteModel() {
  // Deletes a model named "my_model" from "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample
   */
  // const datasetId = "my_dataset";
  // const modelId = "my_model";

  const dataset = bigquery.dataset(datasetId);
  const model = dataset.model(modelId);
  await model.delete();

  console.log(`Model ${modelId} deleted.`);
}

Python


from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set model_id to the ID of the model to fetch.
# model_id = 'your-project.your_dataset.your_model'

client.delete_model(model_id)  # Make an API request.

print("Deleted model '{}'.".format(model_id))

削除したモデルの復元

現在、削除されたモデルを元に戻すことはできません。

次のステップ