모델 나열

개요

이 페이지는 데이터세트의 BigQuery ML 모델을 나열하는 방법을 설명합니다. 다음과 같은 방법으로 BigQuery ML 모델을 나열할 수 있습니다.

  • Cloud Console 사용
  • bq ls CLI 명령어 사용
  • models.list API 메서드 직접 호출 또는 클라이언트 라이브러리 사용

필수 권한

데이터세트의 모델을 나열하려면 데이터세트에 대한 READER 역할을 할당받거나 bigquery.models.list 권한이 있는 프로젝트 수준 IAM 역할을 할당받아야 합니다. 프로젝트 수준에서 bigquery.models.list 권한을 부여받으면 프로젝트의 모든 데이터세트에 있는 모델을 나열할 수 있습니다. 다음과 같은 사전 정의된 프로젝트 수준의 IAM 역할에는 bigquery.models.list 권한이 포함되어 있습니다.

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

BigQuery ML의 IAM 역할과 권한에 대한 자세한 내용은 액세스 제어를 참조하세요. 데이터세트 수준 역할에 대한 자세한 내용은 BigQuery 문서의 데이터세트 기본 역할을 참조하세요.

모델 나열

데이터세트의 모델을 나열하려면 다음 단계를 따릅니다.

Console

  1. Cloud Console에서 BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 탐색 패널의 리소스 섹션에서 프로젝트 이름을 클릭합니다.

  3. 프로젝트의 각 데이터세트를 확장하면 모델이 데이터세트의 다른 BigQuery 리소스와 함께 나열됩니다. 모델은 모델 아이콘(모델 아이콘)으로 표시됩니다.

CLI

bq ls 명령어를 --models 또는 -m 플래그와 함께 실행합니다. --format 플래그를 사용하면 출력을 제어할 수 있습니다. 기본 프로젝트가 아닌 다른 프로젝트의 모델을 나열하려면 데이터세트에 [PROJECT_ID]:[DATASET] 형식으로 프로젝트 ID를 추가합니다.

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

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 프로젝트 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

myotherprojectmydataset 데이터세트에 있는 모델을 나열하려면 다음 명령어를 입력합니다. 이 명령어는 -m 단축키를 사용하여 모델을 나열합니다.

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

API

API를 사용하여 모델을 나열하려면 models.list 메서드를 호출하고 projectIddatasetId를 제공합니다.

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
}

자바

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

다음 단계