Aggiornamento dei metadati del modello

Panoramica

Questa pagina mostra come aggiornare i metadati del modello BigQuery ML. Puoi aggiornare i metadati del modello come segue:

  • Utilizzo di Cloud Console.
  • Usare il comando bq update nello strumento a riga di comando bq.
  • Richiamare il metodo API models.patch direttamente o utilizzando le librerie client.

È possibile aggiornare i seguenti metadati del modello:

  • Descrizione: può essere aggiornato utilizzando Cloud Console, lo strumento a riga di comando bq, l'API o le librerie client.
  • Etichette: possono essere aggiornate utilizzando Cloud Console, lo strumento a riga di comando bq, l'API o le librerie client.
  • Data di scadenza: può essere aggiornata utilizzando lo strumento a riga di comando bq, l'API o le librerie client.

Autorizzazioni obbligatorie

Per aggiornare i metadati del modello, devi avere il ruolo WRITER nel set di dati oppure un ruolo IAM a livello di progetto che includa le autorizzazioni bigquery.models.updateMetadata. Se ti vengono concesse le autorizzazioni bigquery.models.updateMetadata a livello di progetto, puoi aggiornare i metadati dei modelli in qualsiasi set di dati del progetto. I seguenti ruoli IAM predefiniti a livello di progetto includono le autorizzazioni bigquery.models.updateMetadata:

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

Per ulteriori informazioni sui ruoli IAM e sulle autorizzazioni in BigQuery ML, consulta Controllo dell'accesso. Per ulteriori informazioni sui ruoli a livello di set di dati, consulta Ruoli di base per i set di dati nella documentazione di BigQuery.

Aggiornamento della descrizione di un modello

La descrizione di un modello è una stringa di testo utilizzata per identificare facilmente il modello.

Per aggiornare la descrizione di un modello:

Console

  1. In Cloud Console, vai alla pagina BigQuery.

    Vai alla pagina BigQuery

  2. Nella sezione Risorse del pannello di navigazione, espandi il nome del progetto e il nome del set di dati.

  3. Fai clic sul nome del modello. I modelli sono indicati dall'icona del modello: icona del modello.

  4. Fai clic sulla scheda Dettagli.

  5. Per aggiornare la descrizione del modello, fai clic sull'icona di modifica (a forma di matita) a destra di Descrizione.

  6. Nella finestra di dialogo Modifica descrizione, inserisci il testo e fai clic su Aggiorna.

bq

Per aggiornare la descrizione di un modello, esegui il comando bq update con il flag --model o -m e il flag --description.

Se stai aggiornando un modello in un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato: [PROJECT_ID]:[DATASET].

bq ls --model --description "[STRING]" [PROJECT_ID]:[DATASET].[MODEL]

Dove:

  • [STRING] è la stringa di testo che descrive il modello tra virgolette.
  • [PROJECT_ID] è l'ID progetto.
  • [DATASET] è il nome del set di dati.
  • [MODEL] è il nome del modello.

L'output comando è simile al seguente:

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

Puoi confermare le modifiche eseguendo il comando bq show. Per ulteriori informazioni, consulta la sezione Ottenere i metadati del modello.

Esempi:

Inserisci il comando seguente per aggiornare la descrizione di mymodel in mydataset nel tuo progetto predefinito.

bq update --model --description "My updated description" \
mydataset.mymodel

Inserisci il comando seguente per aggiornare la descrizione di mymodel in mydataset in myotherproject.

bq update --model --description "My updated description" \
myotherproject:mydataset.mymodel

API

Per aggiornare la descrizione di un modello utilizzando l'API, chiama il metodo models.patch e fornisci projectId, datasetId e modelId. Per modificare la descrizione, aggiungi o aggiorna la proprietà "description" per la risorsa modello.

Go

import (
	"context"
	"fmt"

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

// updateModelDescription demonstrates fetching BigQuery ML model metadata and updating the
// Description metadata.
func updateModelDescription(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)
	oldMeta, err := model.Metadata(ctx)
	if err != nil {
		return fmt.Errorf("Metadata: %v", err)
	}
	update := bigquery.ModelMetadataToUpdate{
		Description: "This model was modified from a Go program",
	}
	if _, err = model.Update(ctx, update, oldMeta.ETag); err != nil {
		return fmt.Errorf("Update: %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.Model;
import com.google.cloud.bigquery.ModelId;

// Sample to update description on a model
public class UpdateModelDescription {

  public static void runUpdateModelDescription() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String modelName = "MY_MODEL_NAME";
    String newDescription = "A really great model.";
    updateModelDescription(datasetName, modelName, newDescription);
  }

  public static void updateModelDescription(
      String datasetName, String modelName, String newDescription) {
    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();

      Model model = bigquery.getModel(ModelId.of(datasetName, modelName));
      bigquery.update(model.toBuilder().setDescription(newDescription).build());
      System.out.println("Model description updated successfully to " + newDescription);
    } catch (BigQueryException e) {
      System.out.println("Model description was not updated \n" + e.toString());
    }
  }
}

Node.js

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

async function updateModel() {
  // Updates a model's metadata.

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

  const metadata = {
    description: 'A really great model.',
  };

  const dataset = bigquery.dataset(datasetId);
  const [apiResponse] = await dataset.model(modelId).setMetadata(metadata);
  const newDescription = apiResponse.description;

  console.log(`${modelId} description: ${newDescription}`);
}

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'

model = client.get_model(model_id)  # Make an API request.
model.description = "This model was modified from a Python program."
model = client.update_model(model, ["description"])  # Make an API request.

full_model_id = "{}.{}.{}".format(model.project, model.dataset_id, model.model_id)
print(
    "Updated model '{}' with description '{}'.".format(
        full_model_id, model.description
    )
)

Aggiornamento delle etichette di un modello

Le etichette sono coppie chiave-valore che puoi collegare a una risorsa. Quando crei risorse di BigQuery ML, le etichette sono facoltative. Per ulteriori informazioni, consulta Aggiungere e utilizzare le etichette nella documentazione di BigQuery.

Per aggiornare le etichette di un modello:

Console

  1. In Cloud Console, vai alla pagina BigQuery.

    Vai alla pagina BigQuery

  2. Nella sezione Risorse del pannello di navigazione, espandi il nome del progetto e il nome del set di dati.

  3. Fai clic sul nome del modello. I modelli sono indicati dall'icona del modello: icona del modello.

  4. Fai clic sulla scheda Dettagli.

  5. Per aggiornare le etichette del modello, fai clic sull'icona di modifica (a forma di matita) a destra di Etichette.

  6. Nella finestra di dialogo Modifica etichette:

    • Per applicare altre etichette, fai clic su Aggiungi etichetta. Ogni chiave può essere utilizzata una sola volta per set di dati, ma puoi utilizzare la stessa chiave in set di dati diversi nello stesso progetto.
    • Modifica le chiavi o i valori esistenti per aggiornare un'etichetta.
    • Fai clic su Update (Aggiorna) per salvare le modifiche.

bq

Per aggiornare le etichette di un modello, esegui il comando bq update con il flag --model o -m e il flag --set_label. Ripeti il flag --set_label per aggiungere o aggiornare più etichette.

Se stai aggiornando un modello in un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato: [PROJECT_ID]:[DATASET].

bq update --model --set_label [KEY:VALUE] \
[PROJECT_ID]:[DATASET].[MODEL]

Dove:

  • [KEY:VALUE] corrisponde a una coppia chiave-valore per un'etichetta da aggiungere o aggiornare. Se specifichi la stessa chiave di un'etichetta esistente, il valore dell'etichetta esistente viene aggiornato. La chiave deve essere univoca.
  • [PROJECT_ID] è l'ID progetto.
  • [DATASET] è il nome del set di dati.
  • [MODEL] è il nome del modello.

L'output dei comandi è simile all'esempio seguente.

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

Puoi confermare le modifiche eseguendo il comando bq show. Per ulteriori informazioni, consulta la sezione Ottenere i metadati del modello.

Esempi:

Per aggiornare l'etichetta department su mymodel, inserisci il comando bq update e specifica department come chiave dell'etichetta. Ad esempio, per aggiornare l'etichetta department:shipping in department:logistics, inserisci il comando seguente. mydataset è in myotherproject, non è il progetto predefinito.

bq update --model --set_label department:logistics \
myotherproject:mydataset.mymodel

API

Per aggiornare le etichette di un modello utilizzando l'API, chiama il metodo models.patch e fornisci projectId, datasetId e modelId. Per modificare le etichette, aggiungi o aggiorna la proprietà "labels" (etichette) per la risorsa del modello.

Aggiornamento della data di scadenza di un modello

La data di scadenza di un modello è un valore timestamp che determina quando un modello viene eliminato. Puoi impostare la data e l'ora di scadenza di un modello quando viene creato utilizzando l'interfaccia a riga di comando, l'API o le librerie client. Puoi anche impostare o aggiornare la data di scadenza su un modello dopo averlo creato. La data e l'ora di scadenza di un modello sono spesso indicate con il termine "TTL" (TTL).

Se non imposti una scadenza per un modello, questo non scadrà mai e devi eliminarlo manualmente.

Il valore del periodo di scadenza viene espresso in modo diverso a seconda del valore impostato. Utilizza il metodo che ti fornisce il livello di granularità appropriato:

  • Nello strumento a riga di comando, la scadenza è espressa in secondi a partire dall'ora UTC corrente. Quando specifichi la scadenza nella riga di comando, al valore corrente UTC viene aggiunto il valore intero, in secondi.
  • Nell'API, la scadenza è espressa in millisecondi dal periodo. Se specifichi un valore di scadenza inferiore al timestamp corrente, il modello scade immediatamente.

Per aggiornare la data di scadenza di un modello:

Console

L'impostazione o l'aggiornamento della scadenza su un modello non è attualmente supportato da Cloud Console.

bq

Per aggiornare la scadenza di un modello, esegui il comando bq update con il flag --model o -m e il flag --expiration.

Se stai aggiornando un modello in un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato: [PROJECT_ID]:[DATASET].

bq update --model --expiration [INTEGER] \
[PROJECT_ID]:[DATASET].[MODEL]

Dove:

  • [INTEGER] è la durata (in secondi) del modello. Il valore minimo è 3600 secondi (un'ora). Il valore della data di scadenza valuta l'ora UTC corrente più il valore intero.
  • [PROJECT_ID] è l'ID progetto.
  • [DATASET] è il nome del set di dati.
  • [MODEL] è il nome del modello.

L'output dei comandi è simile all'esempio seguente.

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

Puoi confermare le modifiche eseguendo il comando bq show. Per ulteriori informazioni, consulta la sezione Ottenere i metadati del modello.

Esempi:

Inserisci il comando seguente per aggiornare la scadenza di mymodel tra mydataset e 5 giorni (432000 secondi). mydataset è nel tuo progetto predefinito.

bq update --model --expiration 432000 mydataset.mymodel

Inserisci il comando seguente per aggiornare la scadenza di mymodel tra mydataset e 5 giorni (432000 secondi). mydataset è in myotherproject, non è il tuo progetto predefinito.

bq update --model --expiration 432000 myotherproject:mydataset.mymodel

API

Per aggiornare la scadenza di un modello utilizzando l'API, chiama il metodo models.patch e fornisci projectId, datasetId e modelId. Per modificare la scadenza, aggiungi o aggiorna la proprietà "quotime;expirationTime" per la risorsa modello. "expirationTime" è espresso in millisecondi dal periodo.

Passaggi successivi