取得模型中繼資料

本頁說明如何取得關於 BigQuery ML 模型的資訊或中繼資料。您可透過以下方式來取得模型中繼資料:

  • 使用 Trusted Cloud 主控台
  • 使用 bq show CLI 指令
  • 直接呼叫 models.get API 方法或使用用戶端程式庫

所需權限

如要取得模型中繼資料,您必須取得資料集的 READER 角色,或是取得包含 bigquery.models.getMetadata 權限的專案層級身分與存取權管理 (IAM) 角色。如果您有專案層級的 bigquery.models.getMetadata 權限,即可取得專案內任何資料集中模型的中繼資料。以下是具備 bigquery.models.getMetadata 權限的預先定義專案層級身分與存取權管理角色:

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

如要進一步瞭解 BigQuery ML 中的身分與存取權管理角色和權限,請參閱「存取權控管」一文。

取得模型中繼資料

如要取得有關模型的中繼資料:

主控台

  1. 在「Explorer」窗格中,展開專案,然後展開資料集。

  2. 展開資料集中的「Models」資料夾,然後按一下模型名稱選取模型。

  3. 按一下「Details」分頁標籤。這個分頁會顯示模型的中繼資料,包括說明、標籤、模型類型和訓練選項。

bq

發出含有 --model-m 標記的 bq show 指令,以顯示模型中繼資料。--format 標記可用來控制輸出內容。

如果只想查看您模型的特徵欄,請使用 --schema 標記和 --model 標記。使用 --schema 旗標時,--format 必須設為 jsonprettyjson

如果您要取得非預設專案中模型的相關資訊,請使用下列格式將專案 ID 新增至資料集:[PROJECT_ID]:[DATASET]

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

更改下列內容:

  • PROJECT_ID 是您的專案 ID。
  • DATASET 是資料集名稱。
  • MODEL 是模型的名稱。

使用 --format=pretty 標記時,指令輸出內容如下所示。如要查看完整詳細資料,請使用 --format=prettyjson 格式。範例輸出會顯示邏輯迴歸模型的中繼資料。

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

範例:

輸入下列指令,顯示 mydatasetmymodel 的所有相關資訊。mydataset 在您的預設專案中。

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

輸入下列指令,顯示 mydatasetmymodel 的所有相關資訊。mydatasetmyotherproject 中,而不是您的預設專案中。

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

輸入下列指令,系統即會單獨顯示 mydatasetmymodel 的特徵欄。mydatasetmyotherproject 中,而不是在您的預設專案中。

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

API

如要使用 API 取得模型中繼資料,請呼叫 models.get 方法,並提供 projectIddatasetIdmodelId

Go

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Go 設定說明進行操作。詳情請參閱 BigQuery Go API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr

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: %w", err)
	}
	defer client.Close()

	meta, err := client.Dataset(datasetID).Model(modelID).Metadata(ctx)
	if err != nil {
		return fmt.Errorf("couldn't retrieve metadata: %w", err)
	}
	fmt.Fprintf(w, "Got model '%q' with friendly name '%q'\n", modelID, meta.Name)
	return nil
}

Java

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Java 設定說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr

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

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Node.js 設定說明進行操作。詳情請參閱 BigQuery Node.js API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr

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

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr


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

後續步驟