Modellmetadaten abrufen

Überblick

Auf dieser Seite erfahren Sie, wie Sie Informationen oder Metadaten zu BigQuery ML-Modellen abrufen. Dafür haben Sie folgende Möglichkeiten:

  • Mit der Cloud Console
  • Mit dem Befehl bq show über die Befehlszeile
  • Durch direkten Aufruf der API-Methode models.get oder mithilfe der Clientbibliotheken

Erforderliche Berechtigungen

Wenn Sie Modellmetadaten abrufen möchten, muss Ihnen die Rolle READER für das Dataset oder eine IAM-Rolle mit der Berechtigung bigquery.models.getMetadata auf Projektebene zugewiesen sein. Wenn Ihnen die Berechtigung bigquery.models.getMetadata auf Projektebene erteilt wurde, können Sie Metadaten zu Modellen in jedem Dataset innerhalb des Projekts abrufen. Die folgenden vordefinierten IAM-Rollen auf Projektebene umfassen Berechtigungen des Typs bigquery.models.getMetadata:

  • bigquery.dataViewer
  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.metadataViewer
  • bigquery.admin

Unter Zugriffssteuerung erfahren Sie mehr über IAM-Rollen und -Berechtigungen in BigQuery ML. Weitere Informationen zu Rollen auf Dataset-Ebene finden Sie in der BigQuery-Dokumentation unter Einfache Rollen für Datasets.

Modellmetadaten abrufen

So rufen Sie Metadaten zu Modellen ab:

Console

  1. Maximieren Sie im Navigationsbereich im Abschnitt Ressourcen Ihr Projekt und wählen Sie ein Dataset aus.

  2. Klicken Sie auf den Modellnamen.

  3. Klicken Sie unter dem Feld des Abfrageeditors auf Details. Auf dieser Seite werden die Metadaten des Modells einschließlich Beschreibung, Labels, Details und Trainingsoptionen angezeigt.

    Screenshot: Metadaten in der Google Cloud Console modellieren

bq

Verwenden Sie den Befehl bq show mit dem Flag --model oder -m, um die Metadaten eines Modells anzuzeigen. Mit dem Flag --format kann die Ausgabe gesteuert werden.

Wenn Sie nur die Featurespalten für Ihr Modell ansehen möchten, verwenden Sie das Flag --schema mit dem Flag --model. Wenn Sie das Flag --schema verwenden, muss --format auf json oder prettyjson gesetzt sein.

Wenn Sie Informationen zu einem Modell in einem anderen Projekt als Ihrem Standardprojekt abrufen, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET]

bq show --model --format=prettyjson [PROJECT_ID]:[DATASET].[MODEL]

Dabei gilt:

  • [PROJECT_ID] ist die Projekt-ID.
  • [DATASET] ist der Name des Datasets.
  • [MODEL] ist der Name des Modells.

Die Befehlsausgabe sieht bei Verwendung des Flags --format=pretty in etwa so aus: Um alle Details anzuzeigen, verwenden Sie das Format --format=prettyjson. Die Beispielausgabe zeigt Metadaten für ein logistisches Regressionsmodell.

+--------------+---------------------+---------------------+---------------------------+--------+-----------------+-----------------+
|      Id      |     Model Type      |   Feature Columns   |       Label Columns       | Labels |  Creation Time  | Expiration Time |
+--------------+---------------------+---------------------+---------------------------+--------+-----------------+-----------------+
| sample_model | LOGISTIC_REGRESSION | |- column1: string  | |- label_column: int64    |        | 03 May 23:14:42 |                 |
|              |                     | |- column2: bool    |                           |        |                 |                 |
|              |                     | |- column3: string  |                           |        |                 |                 |
|              |                     | |- column4: int64   |                           |        |                 |                 |
+--------------+---------------------+---------------------+---------------------------+--------+-----------------+-----------------+

Beispiele:

Geben Sie den folgenden Befehl ein, um alle Informationen zu mymodel in mydataset aufzurufen. mydataset befindet sich in Ihrem Standardprojekt.

bq show --model --format=prettyjson mydataset.mymodel

Geben Sie den folgenden Befehl ein, um alle Informationen zu mymodel in mydataset aufzurufen. mydataset befindet sich in myotherproject, nicht im Standardprojekt.

bq show --model --format=prettyjson myotherproject:mydataset.mymodel

Geben Sie den folgenden Befehl ein, um nur die Featurespalten für mymodel in mydataset anzuzeigen. mydataset befindet sich in myotherproject, nicht in Ihrem Standardprojekt.

bq show --model --schema --format=prettyjson \
myotherproject:mydataset.mymodel

API

Zum Abrufen von Modellmetadaten mithilfe der API rufen Sie die Methode models.get auf und geben Sie projectId, datasetId und modelId an.

Go

import (
	"context"
	"fmt"
	"io"

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

// printModelInfo demonstrates fetching metadata about a BigQuery ML model and printing some of
// it to an io.Writer.
func printModelInfo(w io.Writer, 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()

	meta, err := client.Dataset(datasetID).Model(modelID).Metadata(ctx)
	if err != nil {
		return fmt.Errorf("Metadata: %v", err)
	}
	fmt.Fprintf(w, "Got model '%q' with friendly name '%q'\n", modelID, meta.Name)
	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;

public class GetModel {

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

  public static void getModel(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();

      ModelId modelId = ModelId.of(datasetName, modelName);
      Model model = bigquery.getModel(modelId);
      System.out.println("Model: " + model.getDescription());

      System.out.println("Successfully retrieved model");
    } catch (BigQueryException e) {
      System.out.println("Cannot retrieve model \n" + e.toString());
    }
  }
}

Node.js

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

async function getModel() {
  // Retrieves model named "my_existing_model" in "my_dataset".

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

  const dataset = bigquery.dataset(datasetId);
  const [model] = await dataset.model(modelId).get();

  console.log('Model:');
  console.log(model.metadata.modelReference);
}

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.

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

Weitere Informationen