Obtén metadatos del modelo

Descripción general

En esta página, se muestra cómo obtener información o metadatos sobre los modelos de BigQuery ML. Puedes obtener metadatos del modelo mediante lo siguiente:

  • Usa Cloud Console.
  • Usa el comando bq show de la CLI.
  • Llama directamente al método models.get de la API o usa las bibliotecas cliente.

Permisos necesarios

Para obtener los metadatos del modelo, debes tener asignada la función READER en el conjunto de datos o una función de IAM a nivel de proyecto que incluya permisos bigquery.models.getMetadata. Si se te otorgan permisos bigquery.models.getMetadata a nivel de proyecto, puedes obtener metadatos en modelos de cualquier conjunto de datos del proyecto. Las siguientes funciones predefinidas de IAM a nivel de proyecto incluyen los permisos bigquery.models.getMetadata:

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

Para obtener más información sobre las funciones de IAM y los permisos en BigQuery ML, consulta Control de acceso. Si deseas obtener más información sobre las funciones a nivel del conjunto de datos, consulta Funciones básicas para conjuntos de datos en la documentación de BigQuery.

Obtén metadatos del modelo

Para obtener metadatos sobre los modelos:

Console

  1. En el panel de navegación, en la sección Recursos, expande tu proyecto y selecciona un conjunto de datos.

  2. Haz clic en el nombre del modelo.

  3. Debajo de la casilla del editor de consultas, haz clic en Detalles (Details). En esta página, se muestran los metadatos del modelo, incluidas las opciones de entrenamiento, las etiquetas, los detalles y la descripción.

    Modelo de metadatos en Google Cloud Console

CLI

Ejecuta el comando bq show con la marca --model o -m para mostrar los metadatos del modelo. Se puede usar la marca --format para controlar el resultado.

Para ver solo las columnas de atributos de tu modelo, usa la marca --schema con la marca --model. Cuando usas la marca --schema, --format debe configurarse como json o prettyjson.

Si obtienes información sobre un modelo de un proyecto que no es tu proyecto predeterminado, agrega el ID del proyecto al conjunto de datos en el siguiente formato: [PROJECT_ID]:[DATASET].

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

Donde:

  • [PROJECT_ID] es el ID del proyecto.
  • [DATASET] es el nombre del conjunto de datos.
  • [MODEL] es el nombre del modelo.

El resultado del comando se verá de la siguiente manera cuando se usa la marca --format=pretty. Para ver todos los detalles, usa el formato --format=prettyjson. El resultado de muestra presenta metadatos para un modelo de regresión 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   |                           |        |                 |                 |
+--------------+---------------------+---------------------+---------------------------+--------+-----------------+-----------------+

Ejemplos:

Ingresa el siguiente comando para mostrar toda la información sobre mymodel en mydataset. mydataset está en tu proyecto predeterminado.

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

Ingresa el siguiente comando para mostrar toda la información sobre mymodel en mydataset. mydataset está en myotherproject, no en tu proyecto predeterminado.

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

Ingresa el siguiente comando para mostrar solo las columnas de atributos de mymodel en mydataset. mydataset está en myotherproject, no en tu proyecto predeterminado.

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

API

Para obtener metadatos del modelo mediante la API, llama al método models.get y proporciona projectId, datasetId y modelId.

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

Próximos pasos