Deleting models

This page shows you how to delete BigQuery ML models. You can delete a model by:

  • Using the Cloud Console
  • Using the bq command-line tool's bq rm command or bq query command
  • Calling the models.delete API method or calling the jobs.query method
  • Using the client libraries

Currently, you can only delete one model at a time. When you delete a model, any data in the model is also deleted.

To automatically delete models after a specified period of time, set the model's expiration time when you create it using the bq command-line tool, the API, or the client libraries. If you did not set the expiration when the model was created, you can update the model's expiration time.

Limitations on deleting models

Deleting a model is subject to the following limitations:

  • You can't delete multiple models at the same time. You must delete them individually.
  • You can't restore a deleted model.

Required permissions

To delete models in a dataset, you must be assigned the WRITER role on the dataset, or you must be assigned a project-level IAM role that includes bigquery.models.delete permissions. If you are granted bigquery.models.delete permissions at the project level, you can delete models in any dataset in the project. The following project-level IAM roles include bigquery.models.delete permissions:

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

For more information about IAM roles and permissions in BigQuery ML, see Access control. For more information about dataset-level roles, see Basic roles and permissions in the BigQuery documentation.

Deleting a model

To delete a model, do the following:

Console

You can delete a model in the Cloud Console by using the Delete Model option or by running a query that contains a DROP MODEL | DROP MODEL IF EXISTS DDL statement.

Option one: Use the Delete Model option.

  1. Go to the BigQuery page in the Cloud Console.

    Go to the BigQuery page

  2. In the navigation panel, in the Resources section, expand your project name and dataset name.

  3. Click your model name. Models are indicated by the model icon: model icon.

  4. On the right side of the window, click Delete Model.

  5. In the Delete model dialog, type the name of the model and then click Delete.

Option two: Use a DDL statement.

  1. Go to the BigQuery page in the Cloud Console.

    Go to the BigQuery page

  2. Click Compose new query.

  3. Type your DDL statement in the Query editor text area.

     DROP MODEL mydataset.mymodel

  4. Click Run. When the query completes, the model is removed from the navigation pane.

bq

You can delete a model using the bq command-line tool by entering the:

  • bq rm command with the --model or -m flag
  • bq query command with the DDL statement as the query parameter

If you are deleting a model in a project other than your default project, add the project ID to the dataset in the following format: [PROJECT_ID]:[DATASET].[MODEL].

Option one: Enter the bq rm command

When you use the bq rm command to remove a model, you must confirm the action. You can use the --force flag (or -f shortcut) to skip confirmation.

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

Where:

  • [PROJECT_ID] is your project ID.
  • [DATASET] is the name of the dataset.
  • [MODEL] is the name of the model you're deleting.

The rm command produces no output.

Examples:

Enter the following command to delete mymodel from mydataset. mydataset is in your default project.

bq rm --model mydataset.mymodel

Enter the following command to delete mymodel from mydataset. mydataset is in myotherproject, not your default project.

bq rm --model myotherproject:mydataset.mymodel

Enter the following command to delete mymodel from mydataset. mydataset is in your default project. The command uses the -f shortcut to bypass confirmation.

bq rm -f --model mydataset.mymodel

You can confirm that the model was deleted by issuing the bq ls command. For more information, see Listing models.

Option two: Enter the bq query command

To delete a model by using the bq query command, supply the DROP MODEL statement in the query parameter and supply the --use_legacy_sql=false flag to specify standard SQL query syntax.

Examples:

Enter the following command to delete mymodel from mydataset. mydataset is in your default project.

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

Enter the following command to delete mymodel from mydataset. mydataset is in myotherproject, not your default project.

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

API

Option one: Call the models.delete method

To delete a model, call the models.delete method and provide the projectId, datasetId, and modelId.

Option two: Call the jobs.query method

To delete a model, call the jobs.query method and supply the DROP MODEL DDL statement in the request body's query property.

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 main(String[] args) {
    // 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))

Restoring a deleted model

Currently, you can't restore a deleted model.

What's next