רשימת המודלים

בדף הזה מוסבר איך מציגים רשימה של מודלים של BigQuery ML במערך נתונים. אפשר לראות רשימה של מודלים של BigQuery ML לפי:

  • באמצעות מסוף Google Cloud .
  • שימוש בפקודה bq ls בכלי שורת הפקודה של BigQuery.
  • הפעלת שיטת ה-API‏ models.list ישירות או באמצעות ספריות הלקוח.

ההרשאות הנדרשות

כדי להציג רשימה של מודלים במערך נתונים, צריך להקצות לכם את התפקיד READER במערך הנתונים, או להקצות לכם תפקיד ב-IAM ברמת הפרויקט שכולל הרשאות bigquery.models.list. אם קיבלתם הרשאות bigquery.models.list ברמת הפרויקט, אתם יכולים לראות רשימה של מודלים בכל מערך נתונים בפרויקט. תפקידי ה-IAM הבאים שמוגדרים מראש ברמת הפרויקט כוללים את ההרשאות bigquery.models.list:

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

במאמר בקרת גישה יש מידע נוסף על תפקידים והרשאות ב-IAM ב-BigQuery ML. מידע נוסף על תפקידים ברמת קבוצת הנתונים זמין במאמר תפקידים בסיסיים לקבוצות נתונים.

רשימת המודלים

כדי להציג רשימה של מודלים במערך נתונים:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    לדף BigQuery

  2. בחלונית הימנית, לוחצים על כלי הניתוחים:

    כפתור מודגש לחלונית הסייר.

    אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.

  3. בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets (מערכי נתונים).

  4. לוחצים על מערך הנתונים שמכיל את המודל.

  5. לוחצים על הכרטיסייה מודלים.

BQ

מריצים את הפקודה bq ls עם הדגל --models או -m. אפשר להשתמש בדגל --format כדי לשלוט בפלט. אם אתם מפרטים מודלים בפרויקט שאינו פרויקט ברירת המחדל, צריך להוסיף את מזהה הפרויקט למערך הנתונים בפורמט הבא: [PROJECT_ID]:[DATASET].

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

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID הוא מזהה הפרויקט.
  • DATASET הוא שם מערך הנתונים.

פלט הפקודה אמור להיראות כך כשמשתמשים בדגל --format=pretty. ‫--format=pretty יוצר פלט של טבלה מעוצבת. בעמודה Model Type מוצג סוג המודל, לדוגמה, KMEANS.

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

דוגמאות:

מזינים את הפקודה הבאה כדי להציג רשימה של מודלים במערך הנתונים mydataset בפרויקט ברירת המחדל.

bq ls --models --format=pretty mydataset

מזינים את הפקודה הבאה כדי להציג את רשימת המודלים במערך הנתונים mydataset ב-myotherproject. בפקודה הזו נעשה שימוש בקיצור הדרך -m כדי להציג רשימה של מודלים.

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

API

כדי להציג רשימה של מודלים באמצעות ה-API, צריך להפעיל את method‏ models.list ולציין את projectId ואת datasetId.

Go

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

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: %w", 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

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

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

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.


// 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

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.


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))

המאמרים הבאים