Modelle auflisten

Überblick

Auf dieser Seite erfahren Sie, wie Sie BigQuery ML-Modelle in einem Dataset auflisten. Dafür haben Sie folgende Möglichkeiten:

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

Erforderliche Berechtigungen

Zum Auflisten von Modellen in einem Dataset muss Ihnen die Rolle READER für das Dataset oder eine IAM-Rolle auf Projektebene mit der Berechtigung bigquery.models.list zugewiesen sein. Wenn Ihnen die Berechtigung bigquery.models.list auf Projektebene erteilt wurde, können Sie Modelle in jedem Dataset innerhalb des Projekts auflisten. Die folgenden vordefinierten IAM-Rollen auf Projektebene umfassen Berechtigungen des Typs bigquery.models.list:

  • bigquery.dataViewer
  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.metadataViewer
  • bigquery.user
  • 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.

Modelle auflisten

So listen Sie Modelle in einem Dataset auf:

Console

  1. Öffnen Sie in der Cloud Console die BigQuery-Web-UI.

    Zur BigQuery-Web-UI

  2. Klicken Sie im Navigationsbereich im Abschnitt Ressourcen auf den Namen Ihres Projekts.

  3. Wenn Sie die einzelnen Datasets in einem Projekt maximieren, werden die Modelle zusammen mit den anderen BigQuery-Ressourcen in den Datasets aufgelistet. Modelle sind am Modellsymbol Modellsymbol zu erkennen.

Befehlszeile

Führen Sie den Befehl bq ls mit dem Flag --models oder -m aus. Mit dem Flag --format kann die Ausgabe gesteuert werden. Wenn Sie Modelle in einem anderen Projekt als Ihrem Standardprojekt auflisten, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET]

bq ls -m --format=pretty [PROJECT_ID]:[DATASET]

Dabei gilt:

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

Die Befehlsausgabe sieht bei Verwendung des Flags --format=pretty in etwa so aus: --format=pretty liefert eine formatierte Tabellenausgabe. In der Spalte Model Type wird der Modelltyp angezeigt, z. B. KMEANS.

+-------------------------+------------+--------+-----------------+
|           Id            | Model Type | Labels |  Creation Time  |
+-------------------------+------------+--------+-----------------+
| mymodel                 | KMEANS     |        | 03 May 03:02:27 |
+-------------------------+------------+--------+-----------------+

Beispiele:

Geben Sie den folgenden Befehl ein, um Modelle im Dataset mydataset in Ihrem Standardprojekt aufzulisten:

bq ls --models --format=pretty mydataset

Geben Sie den folgenden Befehl ein, um Modelle im Dataset mydataset in myotherproject aufzulisten. In diesem Befehl wird das Kürzel -m zum Auflisten von Modellen verwendet:

bq ls -m --format=pretty myotherproject:mydataset

API

Zum Auflisten von Modellen mithilfe der API rufen Sie die Methode models.list auf und geben Sie projectId und datasetId an.

Go

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
	"google.golang.org/api/iterator"
)

// listModels demonstrates iterating through the collection of ML models in a dataset
// and printing a basic identifier of the model.
func listModels(w io.Writer, projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	fmt.Fprintf(w, "Models contained in dataset %q\n", datasetID)
	it := client.Dataset(datasetID).Models(ctx)
	for {
		m, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintf(w, "Model: %s\n", m.FullyQualifiedName())
	}
	return nil
}

Java

import com.google.api.gax.paging.Page;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQuery.ModelListOption;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Model;

public class ListModels {

  public static void runListModels() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    listModels(datasetName);
  }

  public static void listModels(String datasetName) {
    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();

      Page<Model> models = bigquery.listModels(datasetName, ModelListOption.pageSize(100));
      if (models == null) {
        System.out.println("Dataset does not contain any models.");
        return;
      }
      models
          .iterateAll()
          .forEach(model -> System.out.printf("Success! Model ID: %s", model.getModelId()));
    } catch (BigQueryException e) {
      System.out.println("Models not listed in dataset due to error: \n" + e.toString());
    }
  }
}

Node.js


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

async function listModels() {
  // Lists all existing models in the dataset.

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

  const dataset = bigquery.dataset(datasetId);

  dataset.getModels().then(data => {
    const models = data[0];
    console.log('Models:');
    models.forEach(model => console.log(model.metadata));
  });
}

Python


from google.cloud import bigquery

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

# TODO(developer): Set dataset_id to the ID of the dataset that contains
#                  the models you are listing.
# dataset_id = 'your-project.your_dataset'

models = client.list_models(dataset_id)  # Make an API request.

print("Models contained in '{}':".format(dataset_id))
for model in models:
    full_model_id = "{}.{}.{}".format(
        model.project, model.dataset_id, model.model_id
    )
    friendly_name = model.friendly_name
    print("{}: friendly_name='{}'".format(full_model_id, friendly_name))

Weitere Informationen