モデル メタデータの取得

概要

このページでは、BigQuery ML モデルに関する情報やメタデータを取得する方法について説明します。モデルのメタデータは、次の方法で取得できます。

  • Cloud Console を使用する
  • bq show CLI コマンドを使用する
  • models.get API メソッドを、直接またはクライアント ライブラリを使用して呼び出す

必要な権限

モデル メタデータを取得するには、データセットに対する READER 役割が割り当てられているか、bigquery.models.getMetadata 権限を含むプロジェクト レベルの IAM 役割が割り当てられている必要があります。プロジェクト レベルで bigquery.models.getMetadata 権限が付与されている場合は、プロジェクト内の任意のデータセット内のモデルのメタデータを取得できます。次の事前定義されたプロジェクト レベルの IAM 役割には、bigquery.models.getMetadata 権限が含まれています。

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

BigQuery ML での IAM 役割と権限の詳細については、アクセス制御をご覧ください。データセット レベルの役割の詳細については、BigQuery のドキュメントのデータセットの基本の役割をご覧ください。

モデル メタデータの取得

モデルに関するメタデータを取得するには、次の操作を行います。

Console

  1. ナビゲーション パネルの [リソース] セクションでプロジェクトを展開し、データセットを選択します。

  2. モデル名をクリックします。

  3. クエリエディタ ボックスの下にある [詳細] をクリックします。このページには、説明、ラベル、詳細、トレーニング オプションを含むモデルのメタデータが表示されます。

    Google Cloud Console でのモデル メタデータ

bq

モデル メタデータを表示するには、--model または -m フラグを指定して、bq show コマンドを発行します。--format フラグを使用して出力を制御できます。

モデルの機能の列のみを参照するには、--model フラグとともに --schema フラグを使用します。--schema フラグを使用する場合は、--formatjson または prettyjson に設定します。

デフォルト以外のプロジェクトにあるモデルの情報を取得する場合は、[PROJECT_ID]:[DATASET] の形式でプロジェクト ID をデータセットに追加します。

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

例:

次のコマンドを入力して、mydataset にある mymodel に関するすべての情報を表示します。mydataset はデフォルト プロジェクトにあります。

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

次のコマンドを入力して、mydataset にある mymodel に関するすべての情報を表示します。mydataset はデフォルト プロジェクトではなく myotherproject にあります。

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

次のコマンドを入力して、mydataset にある mymodel に関する特徴列のみを表示します。mydataset はデフォルト プロジェクトではなく myotherproject にあります。

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

API

API を使用してモデル メタデータを取得するには、models.get メソッドを呼び出して、projectIddatasetIdmodelId を指定します。

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

次のステップ