モデルのメタデータを取得する

概要

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

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

必要な権限

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

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

BigQuery ML での IAM ロールと権限の詳細については、アクセス制御をご覧ください。

モデルのメタデータを取得する

モデルに関するメタデータを取得するには:

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

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートGo の手順に沿って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

// 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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。


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

次のステップ