모델 나열

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

  • Google Cloud 콘솔 사용
  • bq 명령줄 도구에서 bq ls 명령어 사용
  • models.list API 메서드 직접 호출 또는 클라이언트 라이브러리 사용

필수 권한

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

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

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

모델 나열

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

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery 페이지로 이동

  2. 탐색기 창에서 프로젝트를 펼친 다음 데이터 세트를 펼칩니다.

  3. 데이터 세트에서 Models 폴더를 펼칩니다.

bq

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

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Go 설정 안내를 따르세요. 자세한 내용은 BigQuery Go API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

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
}

자바

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

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

이 샘플을 사용해 보기 전에 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 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

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Python 설정 안내를 따르세요. 자세한 내용은 BigQuery Python API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.


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

다음 단계