Receber metadados do modelo

Informações gerais

Nesta página, você verá como receber informações ou metadados relativos aos modelos do BigQuery ML. É possível fazer isso:

  • Como usar o console do Google Cloud
  • Use o comando da CLI bq show
  • Chamando o método da API models.get diretamente ou usando as bibliotecas de cliente

Permissões necessárias

Para receber metadados do modelo, você precisa receber o papel READER no conjunto de dados ou um papel de gerenciamento de identidade e acesso (IAM) no nível do projeto que inclui permissões bigquery.models.getMetadata. Se você receber as permissões bigquery.models.getMetadata no nível do projeto, poderá obter os metadados em modelos de qualquer conjunto de dados no projeto. Os seguintes papéis predefinidos do IAM para envolvidos no projeto incluem permissões bigquery.models.getMetadata:

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

Para informações sobre papéis e permissões do IAM no BigQuery ML, consulte Controle de acesso.

Receber metadados do modelo

Para receber metadados sobre modelos:

Console

  1. Na seção Recursos do painel de navegação, expanda o projeto e selecione um conjunto de dados.

  2. Clique no nome do modelo.

  3. Abaixo da caixa do editor de consultas, clique em Detalhes. Nesta página, os metadados do modelo são exibidos, incluindo a descrição, os rótulos, os detalhes e as opções de treinamento.

    Metadados de modelo no Console do Google Cloud

bq

Emita o comando bq show com a sinalização --model ou -m para exibir os metadados do modelo. A sinalização --format pode ser usada para controlar a saída.

Para ver somente as colunas de recurso do seu modelo, use a sinalização --schema com a sinalização --model. Quando você usa a sinalização --schema, --format deve ser definido como json ou prettyjson.

Se você estiver recebendo informações sobre um modelo em um projeto diferente do seu projeto padrão, adicione o código do projeto ao conjunto de dados no seguinte formato: [PROJECT_ID]:[DATASET].

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

Em que:

  • [PROJECT_ID] é o ID do projeto;
  • [DATASET] é o nome do conjunto de dados.
  • [MODEL] é o nome do modelo.

A resposta ao comando será semelhante à seguinte quando a sinalização --format=pretty for usada. Para ver todos os detalhes, use o formato --format=prettyjson. O exemplo de saída mostra metadados para um modelo de regressão logística.

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

Exemplos:

Digite o comando a seguir para exibir todas as informações sobre mymodel em mydataset. mydataset está em seu projeto padrão.

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

Digite o comando a seguir para exibir todas as informações sobre mymodel em mydataset. mydataset está em myotherproject, e não no seu projeto padrão.

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

Digite o comando a seguir para exibir somente as colunas de atributo para mymodel em mydataset. mydataset está em myotherproject, e não no seu projeto padrão.

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

API

Para receber os metadados do modelo usando a API, chame o método models.get e forneça projectId, datasetId e modelId.

Go

Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Go.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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

Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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

Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Node.js.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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

Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.


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

A seguir