Mettre à jour une réservation BI

Mettre à jour la taille d'une réservation BI Engine existante. BigQuery BI Engine utilise des réservations BI pour exécuter des analyses en mémoire rapides.

Exemple de code

Java

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

import com.google.api.gax.rpc.ApiException;
import com.google.api.gax.rpc.NotFoundException;
import com.google.cloud.bigquery.reservation.v1.BiReservation;
import com.google.cloud.bigquery.reservation.v1.BiReservationName;
import com.google.cloud.bigquery.reservation.v1.ReservationServiceClient;
import com.google.cloud.bigquery.reservation.v1.UpdateBiReservationRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;

public class UpdateBiReservation {

  /**
   * Updates the singleton BigQuery BI Engine reservation size in a given project and location. A
   * singleton BI reservation always exists with a default size of 0 bytes.
   *
   * @param projectId The Google Cloud project ID (for example, "example-project-id").
   * @param location The geographic location of the BI reservation (for example, "us-central1").
   */
  public static void updateBiReservation(String projectId, String location) {
    BiReservationName name = BiReservationName.of(projectId, location);

    // The size of a BI reservation is measured in bytes. 2 GB is used here.
    BiReservation biReservation =
        BiReservation.newBuilder().setName(name.toString()).setSize(2_000_000_000L).build();

    FieldMask updateMask = FieldMask.newBuilder().addPaths("size").build();

    UpdateBiReservationRequest request =
        UpdateBiReservationRequest.newBuilder()
            .setBiReservation(biReservation)
            .setUpdateMask(updateMask)
            .build();

    try (ReservationServiceClient client = ReservationServiceClient.create()) {
      BiReservation response = client.updateBiReservation(request);
      System.out.printf("Updated BI reservation: %s%n", response.getName());
      System.out.printf("New size is %d bytes.%n", response.getSize());
    } catch (NotFoundException err) {
      System.err.printf(
          "error: BI reservation not found in location '%s' for project '%s': %s%n",
          location, projectId, err.getMessage());
    } catch (ApiException | IOException err) {
      System.err.printf(
          "error: failed to update BI reservation in location '%s' for project '%s': %s%n",
          location, projectId, err.getMessage());
    }
  }

Node.js

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Node.js.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

const {ReservationServiceClient} =
  require('@google-cloud/bigquery-reservation').v1;
const {status} = require('@grpc/grpc-js');

const client = new ReservationServiceClient();

/**
 * Updates a BI reservation.
 * A singleton BI reservation always exists with a default size of 0. To reserve
 * BI capacity, you must update the reservation to an amount greater than 0. To
 * release BI capacity, set the reservation size to 0.
 *
 * @param {string} projectId Google Cloud Project ID, for example 'example-project-id'
 * @param {string} location Google Cloud Location, for example 'US'
 */
async function updateBiReservation(projectId, location = 'US') {
  const biReservation = {
    name: client.biReservationPath(projectId, location),
    // Set the reservation size in bytes. This example sets it to 2 GiB.
    size: 2 * 1024 * 1024 * 1024,
  };
  const updateMask = {
    paths: ['size'],
  };

  const request = {
    biReservation,
    updateMask,
  };

  try {
    const [updatedReservation] = await client.updateBiReservation(request);
    console.log(`Updated BI reservation: ${updatedReservation.name}`);
    console.log(`  Size: ${updatedReservation.size} bytes`);
  } catch (err) {
    if (err.code === status.NOT_FOUND) {
      console.log(
        `BI Reservation not found for project ${projectId} in location ${location}.`,
      );
    } else {
      console.error('Error updating BI reservation:', err);
    }
  }
}

Python

Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

from google.api_core import exceptions
from google.cloud import bigquery_reservation_v1
from google.protobuf import field_mask_pb2

client = bigquery_reservation_v1.ReservationServiceClient()


def update_bi_reservation(project_id: str, location: str):
    """Updates a BI reservation.

    A singleton BI reservation always exists with default size 0.
    To reserve BI capacity, update the reservation to an amount
    greater than 0. To release BI capacity, set the reservation size to 0.

    Args:
        project_id: The Google Cloud project ID.
        location: The geographic location of the BI reservation, for example, us-central1.
    """

    name = client.bi_reservation_path(project=project_id, location=location)
    bi_reservation = bigquery_reservation_v1.types.BiReservation()
    bi_reservation.name = name

    # The size of a BI reservation is measured in bytes. 2 GB is used here.
    bi_reservation.size = 2 * 10**9
    update_mask = field_mask_pb2.FieldMask(paths=["size"])

    try:
        response = client.update_bi_reservation(
            bi_reservation=bi_reservation, update_mask=update_mask
        )
        print(f"Updated BI reservation: {response.name}")
        print(f"New size is {response.size} bytes.")
    except exceptions.NotFound:
        print(
            f"BI reservation not found for project '{project_id}' in location '{location}'."
        )

Étapes suivantes

Pour rechercher et filtrer des exemples de code pour d'autres produits Google Cloud , consultez l'explorateur d'exemplesGoogle Cloud .