Estima y controla los costos

En esta página, se describen las prácticas recomendadas para estimar y controlar los costos en BigQuery.

Los costos principales en BigQuery son el procesamiento, que se usa para procesar consultas, y el almacenamiento, para los datos que se almacenan en BigQuery. BigQuery ofrece dos tipos de modelos de precios para el procesamiento de consultas: precios según demanda y basados en la capacidad. Cada modelo ofrece diferentes prácticas recomendadas para controlar los costos. En el caso de los datos almacenados en BigQuery, los costos dependen del modelo de facturación de almacenamiento configurado para cada conjunto de datos.

Comprende los precios de procesamiento de BigQuery

Existen diferencias sutiles en los precios de procesamiento de BigQuery que afectan la planificación de la capacidad y el control de costos.

Modelos de precios

En el caso del procesamiento según demanda en BigQuery, se generan cargos por TiB para las consultas de BigQuery.

Como alternativa, para el procesamiento de capacidad en BigQuery, se te cobran los recursos de procesamiento (ranuras) que se usan para procesar la consulta. Para usar este modelo, debes configurar reservas para las ranuras.

Las reservas tienen las siguientes características:

  • Se asignan en grupos de ranuras y te permiten administrar la capacidad y aislar las cargas de trabajo de formas adecuadas para tu organización.
  • Deben residir en un proyecto de administración y están sujetos a cuotas y límites.

El modelo de precios basado en la capacidad ofrece varias ediciones, todas con una opción de pago por uso que se cobra en horas de ranura. Las ediciones Enterprise y Enterprise Plus también proporcionan compromisos de ranuras opcionales de uno o tres años que pueden ahorrar dinero en comparación con la tarifa de pago por uso.

También puedes establecer reservas de ajuste de escala automático con la opción de pago por uso. Para obtener más información, consulta lo siguiente:

Cómo restringir los costos para cada modelo

Cuando usas el modelo de precios según demanda, la única forma de restringir los costos es configurar cuotas diarias a nivel del proyecto o del usuario. Sin embargo, estas cuotas imponen un límite máximo que impide que los usuarios ejecuten consultas más allá del límite de la cuota. Para establecer cuotas, consulta Cómo crear cuotas de consultas personalizadas.

Cuando usas el modelo de precios de capacidad con reservas de ranuras, especificas la cantidad máxima de ranuras disponibles para una reserva. También puedes comprar compromisos de ranuras que proporcionan precios con descuento por un período comprometido.

Puedes usar las ediciones completamente a pedido si estableces el valor de referencia de la reserva en 0 y el valor máximo en un parámetro de configuración que satisfaga las necesidades de tu carga de trabajo. BigQuery se ajusta automáticamente a la cantidad de ranuras necesarias para tu carga de trabajo, sin exceder nunca el máximo que establezcas. Para obtener más información, consulta Administración de cargas de trabajo con Reservations.

Controla los costos de las consultas

Para controlar los costos de las consultas individuales, te recomendamos que primero sigas las prácticas recomendadas para optimizar el procesamiento de las consultas y optimizar el almacenamiento.

En las siguientes secciones, se describen prácticas recomendadas adicionales que puedes usar para controlar aún más los costos de tus consultas.

Crea cuotas de consultas personalizadas

Práctica recomendada: Usa cuotas de consultas diarias personalizadas para limitar la cantidad de datos procesados por día.

Puedes administrar los costos si configuras una cuota personalizada que especifique un límite para la cantidad de datos que se procesan por día, por proyecto o por usuario. Los usuarios no podrán ejecutar consultas una vez que se alcance la cuota.

Para establecer una cuota personalizada, necesitas roles o permisos específicos. Para conocer las cuotas que se pueden establecer, consulta Cuotas y límites.

Para obtener más información, consulta Cómo restringir los costos para cada modelo de precios.

Comprueba el costo estimado antes de ejecutar una consulta

Recomendación: Antes de ejecutar consultas, obtén una vista previa para estimar los costos.

Cuando se usa el modelo de precios según demanda, las consultas se facturan según la cantidad de bytes leídos. Para estimar los costos antes de ejecutar una consulta, haz lo siguiente:

Usa el validador de consultas

Cuando ingresas una consulta en la Google Cloud consola, el validador de consultas verifica la sintaxis de la consulta y proporciona una estimación de la cantidad de bytes leídos. Puedes usar esta estimación para calcular el costo de la consulta en la calculadora de precios.

  • Si tu consulta no es válida, el validador de consultas muestra un mensaje de error. Por ejemplo:

    Not found: Table myProject:myDataset.myTable was not found in location US

  • Si tu consulta es válida, el validador de consultas proporciona una estimación de la cantidad de bytes necesarios para procesar la consulta. Por ejemplo:

    This query will process 623.1 KiB when run.

Realiza una ejecución de prueba

Para realizar una prueba de validación, sigue estos pasos:

Console

  1. Dirígete a la página de BigQuery.

    Ir a BigQuery

  2. Ingresa tu consulta en el Editor de consultas.

    Si la consulta es válida, aparecerá de forma automática una marca de verificación junto con la cantidad de datos que la consulta procesará. Si la consulta no es válida, aparece un signo de exclamación junto con un mensaje de error.

bq

Ingresa una consulta como la siguiente con la marca --dry_run.

bq query \
--use_legacy_sql=false \
--dry_run \
'SELECT
   COUNTRY,
   AIRPORT,
   IATA
 FROM
   `project_id`.dataset.airports
 LIMIT
   1000'
 

Para una consulta válida, el comando genera la siguiente respuesta:

Query successfully validated. Assuming the tables are not modified,
running this query will process 10918 bytes of data.

API

Para realizar una ejecución de prueba mediante la API, envía un trabajo de consulta con dryRun configurado como true en el tipo JobConfiguration.

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
)

// queryDryRun demonstrates issuing a dry run query to validate query structure and
// provide an estimate of the bytes scanned.
func queryDryRun(w io.Writer, projectID string) error {
	// projectID := "my-project-id"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	q := client.Query(`
	SELECT
		name,
		COUNT(*) as name_count
	FROM ` + "`bigquery-public-data.usa_names.usa_1910_2013`" + `
	WHERE state = 'WA'
	GROUP BY name`)
	q.DryRun = true
	// Location must match that of the dataset(s) referenced in the query.
	q.Location = "US"

	job, err := q.Run(ctx)
	if err != nil {
		return err
	}
	// Dry run is not asynchronous, so get the latest status and statistics.
	status := job.LastStatus()
	if err := status.Err(); err != nil {
		return err
	}
	fmt.Fprintf(w, "This query will process %d bytes\n", status.Statistics.TotalBytesProcessed)
	return nil
}

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.JobStatistics;
import com.google.cloud.bigquery.QueryJobConfiguration;

// Sample to run dry query on the table
public class QueryDryRun {

  public static void runQueryDryRun() {
    String query =
        "SELECT name, COUNT(*) as name_count "
            + "FROM `bigquery-public-data.usa_names.usa_1910_2013` "
            + "WHERE state = 'WA' "
            + "GROUP BY name";
    queryDryRun(query);
  }

  public static void queryDryRun(String query) {
    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();

      QueryJobConfiguration queryConfig =
          QueryJobConfiguration.newBuilder(query).setDryRun(true).setUseQueryCache(false).build();

      Job job = bigquery.create(JobInfo.of(queryConfig));
      JobStatistics.QueryStatistics statistics = job.getStatistics();

      System.out.println(
          "Query dry run performed successfully." + statistics.getTotalBytesProcessed());
    } catch (BigQueryException e) {
      System.out.println("Query not performed \n" + e.toString());
    }
  }
}

Node.js

Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function queryDryRun() {
  // Runs a dry query of the U.S. given names dataset for the state of Texas.

  const query = `SELECT name
    FROM \`bigquery-public-data.usa_names.usa_1910_2013\`
    WHERE state = 'TX'
    LIMIT 100`;

  // For all options, see https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query
  const options = {
    query: query,
    // Location must match that of the dataset(s) referenced in the query.
    location: 'US',
    dryRun: true,
  };

  // Run the query as a job
  const [job] = await bigquery.createQueryJob(options);

  // Print the status and statistics
  console.log('Status:');
  console.log(job.metadata.status);
  console.log('\nJob Statistics:');
  console.log(job.metadata.statistics);
}

PHP

Antes de probar este ejemplo, sigue las instrucciones de configuración para PHP incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para PHP.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $query = 'SELECT id, view_count FROM `bigquery-public-data.stackoverflow.posts_questions`';

// Construct a BigQuery client object.
$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);

// Set job configs
$jobConfig = $bigQuery->query($query);
$jobConfig->useQueryCache(false);
$jobConfig->dryRun(true);

// Extract query results
$queryJob = $bigQuery->startJob($jobConfig);
$info = $queryJob->info();

printf('This query will process %s bytes' . PHP_EOL, $info['statistics']['totalBytesProcessed']);

Python

Configura la propiedad QueryJobConfig.dry_run como True. Client.query() siempre muestra un QueryJob completo cuando se proporciona una configuración de consulta de ejecución de prueba.

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

job_config = bigquery.QueryJobConfig(dry_run=True, use_query_cache=False)

# Start the query, passing in the extra configuration.
query_job = client.query(
    (
        "SELECT name, COUNT(*) as name_count "
        "FROM `bigquery-public-data.usa_names.usa_1910_2013` "
        "WHERE state = 'WA' "
        "GROUP BY name"
    ),
    job_config=job_config,
)  # Make an API request.

# A dry run query completes immediately.
print("This query will process {} bytes.".format(query_job.total_bytes_processed))

Estima los costos de las consultas

Cuando usas el modelo de precios según demanda, puedes estimar el costo de ejecutar una consulta calculando la cantidad de bytes procesados.

Cálculo del tamaño de la consulta según demanda

Para calcular la cantidad de bytes que procesan los diversos tipos de consultas, consulta las siguientes secciones:

Evita ejecutar consultas para explorar los datos de la tabla

Recomendación: No ejecutes consultas para explorar los datos de las tablas ni obtener una vista previa de ellos.

Si exploras tus datos o experimentas con ellos, puedes usar las opciones de vista previa de tablas de sin cargo sin afectar las cuotas.

BigQuery es compatible con las siguientes opciones de vista previa de datos:

  • En la Google Cloud consola, en la página de detalles de la tabla, haz clic en la pestaña Vista previa para probar los datos.
  • En la herramienta de línea de comandos de bq, usa el comando bq head y especifica la cantidad de filas para la vista previa.
  • En la API, usa tabledata.list para recuperar los datos de tabla de un conjunto específico de filas.
  • Evita usar LIMIT en tablas no agrupadas en clústeres. En el caso de las tablas no agrupadas en clústeres, una cláusula LIMIT no reducirá los costos de procesamiento.

Restringe la cantidad de bytes facturados por consulta

Recomendación: Usa el parámetro de configuración de cantidad máxima de bytes facturados para limitar los costos de las consultas cuando uses el modelo de precios según demanda.

Puedes limitar la cantidad de bytes facturados para una consulta mediante la configuración de máximo de bytes facturados. Cuando estableces un máximo de bytes facturados, antes de la ejecución de la consulta se estima la cantidad de bytes que lee la consulta. Si la cantidad de bytes estimados supera el límite, la consulta falla sin incurrir en un cargo.

En el caso de las tablas agrupadas en clústeres, la estimación de la cantidad de bytes facturados para una consulta es un límite superior y puede ser mayor que la cantidad real de bytes facturados después de ejecutar la consulta. Por lo tanto, en algunos casos, si estableces el máximo de bytes facturados, una consulta en una tabla agrupada en clústeres puede fallar, aunque los bytes reales facturados no excedan la configuración máxima de bytes facturados.

Si una consulta falla debido a la configuración de máximo de bytes facturados, se muestra un error similar al siguiente:

Error: Query exceeded limit for bytes billed: 1000000. 10485760 or higher required.

Para configurar el máximo de bytes facturados, haz lo siguiente:

Console

  1. En el Editor de consultas, haz clic en Más > Configuración de consultas > Opciones avanzadas.
  2. En el campo Máximo de bytes facturados, ingresa un número entero.
  3. Haz clic en Guardar.

bq

Usa el comando bq query con la marca --maximum_bytes_billed.

  bq query --maximum_bytes_billed=1000000 \
  --use_legacy_sql=false \
  'SELECT
     word
   FROM
     `bigquery-public-data`.samples.shakespeare'

API

Establece la propiedad maximumBytesBilled en JobConfigurationQuery o QueryRequest.

Evita usar LIMIT en tablas no agrupadas en clústeres

Práctica recomendada: Para tablas no agrupadas en clústeres, no uses una cláusula LIMIT como método para el control de costos.

En el caso de las tablas no agrupadas en clústeres, aplicar una cláusula LIMIT a una consulta no afecta la cantidad de datos leídos. Se te cobra por leer todos los bytes en la tabla completa según lo indica la consulta, aunque esta solo muestre un subconjunto. Con una tabla agrupada en clústeres, una cláusula LIMIT puede reducir la cantidad de bytes analizados, ya que el análisis se detiene cuando se analizan suficientes bloques para obtener el resultado. Solo se te cobrarán los bytes analizados.

Materializa los resultados de la consulta en etapas

Recomendación: Si es posible, materializa los resultados de tu consulta en etapas.

Si creas una consulta grande de varias etapas, BigQuery lee todos los datos que requiere cada vez que la ejecutas. Se te factura por todos los datos que se leen cada vez que se ejecuta la consulta.

En su lugar, divide tu consulta en etapas que materialicen los resultados de la consulta mediante la escritura en una tabla de destino. Consultar la tabla de destino más pequeña reduce los costos y la cantidad de datos que se leen. El costo de almacenar los resultados materializados es mucho menor que el de procesar grandes cantidades de datos.

Controla los costos de la carga de trabajo

En esta sección, se describen las prácticas recomendadas para controlar los costos dentro de una carga de trabajo. Una carga de trabajo es un conjunto de búsquedas relacionadas. Por ejemplo, una carga de trabajo puede ser una canalización de transformación de datos que se ejecuta a diario, un conjunto de paneles que ejecuta un grupo de analistas de negocios o varias consultas ad hoc que ejecuta un conjunto de científicos de datos.

Usa la Google Cloud calculadora de precios

Práctica recomendada: Usa la Google Cloud calculadora de precios para crear una estimación del costo mensual general de BigQuery en función del uso proyectado. Luego, puedes comparar esta estimación con tus costos reales para identificar áreas de optimización.

A pedido

Para estimar los costos en la calculadora de precios deGoogle Cloud con el modelo de precios según demanda, sigue estos pasos:

  1. Abre la calculadora de precios.Google Cloud
  2. Haz clic en Agregar a la estimación.
  3. Selecciona BigQuery.
  4. Selecciona "A pedido" en Tipo de servicio.
  5. Elige la ubicación en la que se ejecutarán tus consultas.
  6. En Cantidad de datos consultados, ingresa los bytes leídos estimados de tu ejecución de prueba o el validador de consultas.
  7. Ingresa tus estimaciones de uso del almacenamiento para Almacenamiento activo, Almacenamiento a largo plazo, Inserciones de transmisión y Lecturas de transmisión. Solo debes estimar el almacenamiento físico o el almacenamiento lógico, según el modelo de facturación de almacenamiento del conjunto de datos.
  8. La estimación aparece en el panel Detalles del costo. Para obtener más información sobre el costo estimado, haz clic en Abrir vista detallada. También puedes descargar y compartir la estimación de costos.

Para obtener más información, consulta Precios a pedido.

Ediciones

Para estimar los costos en la calculadora de precios deGoogle Cloud con el modelo de precios basado en la capacidad con las ediciones de BigQuery, sigue estos pasos:

  1. Abre la calculadora de precios.Google Cloud
  2. Haz clic en Agregar a la estimación.
  3. Selecciona BigQuery.
  4. Selecciona "Editions" en Tipo de servicio.
  5. Elige la ubicación en la que se usarán las ranuras.
  6. Elige tu edición.
  7. Elige las Cantidad máxima de ranuras, Ranuras base, Compromiso opcional y Uso estimado del ajuste de escala automático.
  8. Elige la ubicación en la que se almacenarán los datos.
  9. Ingresa tus estimaciones de uso del almacenamiento para Almacenamiento activo, Almacenamiento a largo plazo, Inserciones de transmisión y Lecturas de transmisión. Solo debes estimar el almacenamiento físico o el almacenamiento lógico, según el modelo de facturación de almacenamiento del conjunto de datos.
  10. La estimación aparece en el panel Detalles del costo. Para obtener más información sobre el costo estimado, haz clic en Abrir vista detallada. También puedes descargar y compartir la estimación de costos.

Para obtener más información, consulta Precios por capacidad.

Usa reservas y compromisos

Práctica recomendada: Usa reservas y compromisos de BigQuery para controlar los costos.

Para obtener más información, consulta Cómo restringir los costos para cada modelo de precios.

Usa el estimador de ranuras

Práctica recomendada: Usa el estimador de ranuras para calcular la cantidad de ranuras que requieren tus cargas de trabajo.

El estimador de ranuras de BigQuery te ayuda a administrar la capacidad de las ranuras según las métricas de rendimiento históricas.

Además, los clientes que usan el modelo de precios a pedido pueden ver recomendaciones de tamaño para las reservas de ajuste de escala automático y de compromiso con un rendimiento similar cuando cambian a los precios basados en la capacidad.

Cancela los trabajos innecesarios de larga duración

Para liberar capacidad, verifica los trabajos de larga duración y asegúrate de que deban seguir ejecutándose. De lo contrario, cancélalas.

Visualiza los costos con un panel

Práctica recomendada: Crea un panel para analizar tus datos de Facturación de Cloud y, así, supervisar y ajustar tu uso de BigQuery.

Puedes exportar tus datos de facturación a BigQuery y visualizarlos en una herramienta como Looker Studio. Para ver un instructivo sobre cómo crear un panel de facturación, consulta Visualiza Google Cloud la facturación con BigQuery y Looker Studio.

Usa presupuestos y alertas de facturación

Práctica recomendada: Usa presupuestos de Facturación de Cloud para supervisar tus cargos de BigQuery en un solo lugar.

Los presupuestos de Facturación de Cloud te permiten hacer un seguimiento de tus costos reales en función de tus costos planificados. Después de establecer un importe del presupuesto, establece reglas de umbral de alertas de presupuesto que se usan para activar las notificaciones por correo electrónico. Los correos electrónicos de alertas de presupuesto te ayudan a mantenerte informado sobre cómo se realiza el seguimiento de tu inversión en BigQuery en relación con tu presupuesto.

Controla los costos de almacenamiento

Usa estas prácticas recomendadas para optimizar el costo del almacenamiento de BigQuery. También puedes optimizar el almacenamiento para mejorar el rendimiento de las consultas.

Usa el almacenamiento a largo plazo

Práctica recomendada: Usa los precios de almacenamiento a largo plazo para reducir el costo de los datos más antiguos.

Cuando cargas datos en el almacenamiento de BigQuery, estos quedan sujetos a los precios de almacenamiento de BigQuery. En el caso de los datos más antiguos, puedes aprovechar automáticamente los precios de almacenamiento a largo plazo de BigQuery.

Si tienes una tabla que no se editó durante 90 días consecutivos, el precio de almacenamiento de esa tabla disminuye automáticamente en un 50%. Si tienes una tabla particionada, cada partición se considera por separado para la elegibilidad de los precios a largo plazo sujetos a las mismas reglas que las tablas no particionadas.

Configura el modelo de facturación de almacenamiento

Práctica recomendada: Optimiza el modelo de facturación de almacenamiento según tus patrones de uso.

BigQuery admite la facturación del almacenamiento con bytes lógicos (sin comprimir) o físicos (comprimidos), o una combinación de ambos. El modelo de facturación de almacenamiento configurado para cada conjunto de datos determina los precios de almacenamiento, pero no afecta el rendimiento de las consultas.

Puedes usar las vistas de INFORMATION_SCHEMA para determinar el modelo de facturación de almacenamiento que funciona mejor según tus patrones de uso.

Evita sobrescribir tablas

Práctica recomendada: Cuando uses el modelo de facturación de almacenamiento físico, evita sobrescribir tablas de forma repetida.

Cuando reemplazas una tabla, por ejemplo, con el parámetro --replace en los trabajos de carga por lotes o con la instrucción TRUNCATE TABLE de SQL, los datos reemplazados se conservan durante los períodos de recuperación ante errores y de viaje en el tiempo. Si reemplazas una tabla con frecuencia, se te cobrarán cargos de almacenamiento adicionales.

En su lugar, puedes cargar datos de forma incremental en una tabla con el parámetro WRITE_APPEND en los trabajos de carga, la instrucción de SQL MERGE o la API de escritura de Storage.

Reduce el período de viaje en el tiempo

Práctica recomendada: Según tus requisitos, puedes reducir el período de viaje en el tiempo.

Si se reduce el período de viaje en el tiempo del valor predeterminado de siete días, se reduce el período de retención de los datos borrados o modificados en una tabla. Solo se te facturará el almacenamiento de viaje en el tiempo cuando uses el modelo de facturación de almacenamiento físico (comprimido).

El período de viaje en el tiempo se establece a nivel del conjunto de datos. También puedes establecer el período de viaje en el tiempo predeterminado para los conjuntos de datos nuevos con la configuración.

Usa el vencimiento de tablas para las tablas de destino

Recomendación: Si escribes resultados de consulta de gran tamaño en una tabla de destino, usa el tiempo de vencimiento de tabla predeterminado para quitar los datos cuando ya no sean necesarios.

Mantener conjuntos de resultados de gran tamaño en el almacenamiento de BigQuery tiene un costo. Si no necesitas acceso permanente a los resultados, usa el vencimiento de tabla predeterminado para borrar los datos de forma automática.

Archiva datos en Cloud Storage

Práctica recomendada: considera archivar datos en Cloud Storage.

Puedes mover datos de BigQuery a Cloud Storage según las necesidades empresariales del archivo. Como práctica recomendada, considera los precios de almacenamiento a largo plazo y el modelo de facturación de almacenamiento físico antes de exportar datos fuera de BigQuery.

Soluciona problemas de discrepancias en los costos y cargos inesperados de BigQuery

Sigue estos pasos para solucionar problemas relacionados con cargos inesperados o discrepancias de costos de BigQuery:

  1. Para comprender de dónde provienen los cargos de BigQuery cuando se consulta el informe de Facturación de Cloud, la primera recomendación es agrupar los cargos por SKU para que sea más fácil observar el uso y los cargos de los servicios correspondientes de BigQuery.

  2. Luego, estudia los precios de los SKU correspondientes en la página de documentación de SKU o en la página Pricing de la IU de Cloud Billing para comprender qué función es, por ejemplo, la API de BigQuery Storage Read, el almacenamiento a largo plazo, los precios según demanda o la edición Estándar.

  3. Después de identificar los SKU correspondientes, usa las vistas de INFORMATION_SCHEMA para identificar los recursos específicos asociados con estos cargos, por ejemplo:

Consideraciones importantes para la solución de problemas:

  • Ten en cuenta que un período Diario en el informe de Facturación de Cloud comienza a la medianoche, hora del Pacífico de EE.UU. y Canadá (UTC-8), y observa los cambios en el horario de verano en Estados Unidos. Ajusta tus cálculos y agregaciones de datos para que coincidan con los mismos períodos.

  • Filtra por proyecto si hay varios proyectos asociados a la cuenta de facturación y deseas revisar los cargos de un proyecto específico.

  • Asegúrate de seleccionar la región correcta cuando realices investigaciones.

La solución de problemas relacionados con cargos inesperados por la ejecución de trabajos depende del origen de estos cargos:

  • Si observas un aumento en los costos del análisis a pedido, esto puede deberse a un incremento en la cantidad de trabajos que se iniciaron o al cambio en la cantidad de datos que deben procesar los trabajos. Investiga esto con la vista INFORMATION_SCHEMA.JOBS.
  • Si hay un aumento en los cargos por las ranuras comprometidas, investiga el problema consultando INFORMATION_SCHEMA.CAPACITY_COMMITMENT_CHANGES para ver si se compraron o modificaron compromisos nuevos.
  • Para los aumentos en los cargos que se originan en el uso de reservas, consulta los cambios en las reservas que se registran en INFORMATION_SCHEMA.RESERVATION_CHANGES. Para hacer coincidir el uso de la reserva de ajuste de escala automático con los datos de facturación, sigue el ejemplo de ajuste de escala automático.

Las horas de ranura facturadas son mayores que las horas de ranura calculadas en la vista INFORMATION_SCHEMA.JOBS

Cuando se usa una reserva de ajuste de escala automático, la facturación se calcula según la cantidad de ranuras escaladas, no la cantidad de ranuras usadas. BigQuery ajusta la escala automáticamente en múltiplos de 50 ranuras, lo que genera facturación para el múltiplo más cercano, incluso si se usa una cantidad inferior a la que se ajustó automáticamente. El escalador automático tiene un período mínimo de 1 minuto antes de reducir la escala verticalmente, lo que se traduce en que se cobra al menos 1 minuto, incluso si la consulta usó las ranuras durante menos tiempo, por ejemplo, solo 10 segundos del minuto. La forma correcta de estimar los cargos de una reserva con ajuste de escala automático se documenta en la página Ajuste de escala automático de ranuras. Para obtener más información sobre cómo usar el ajuste de escala automático de manera eficiente, consulta las prácticas recomendadas para el ajuste de escala automático.

Se observará una situación similar para las reservas sin ajuste de escala automático: la facturación se calcula según la cantidad de ranuras aprovisionadas, no la cantidad de ranuras usadas. Si deseas estimar los cargos de una reserva sin ajuste de escala automático, puedes consultar la vista RESERVATIONS_TIMELINE directamente.

La facturación es inferior a los bytes totales facturados calculados a través de INFORMATION_SCHEMA.JOBS para el proyecto que ejecuta consultas a pedido.

Puede haber varios motivos por los que la facturación real sea menor que los bytes procesados calculados:

  • Cada proyecto recibe 1 TB de consultas de nivel gratuito por mes sin cargo adicional.
  • Los trabajos de tipo SCRIPT no se excluyeron del cálculo, lo que podría hacer que algunos valores se contaran dos veces.
  • Diferentes tipos de ahorros aplicados a tu cuenta de Facturación de Cloud, como descuentos negociados, créditos promocionales y otros. Revisa la sección Ahorros del informe de Facturación de Cloud. Aquí también se incluye el nivel gratuito de 1 TB de consultas por mes.

La facturación es mayor que los bytes procesados calculados a través de INFORMATION_SCHEMA.JOBS para el proyecto que ejecuta consultas a pedido

Si el importe de la facturación es mayor que el valor que calculaste consultando la vista INFORMATION_SCHEMA.JOBS, es posible que se hayan producido ciertas condiciones que causaron esto:

  • Consultas en tablas con seguridad a nivel de la fila

    • Las consultas sobre tablas con seguridad a nivel de la fila no producen un valor para total_bytes_billed en la vista INFORMATION_SCHEMA.JOBS. Por lo tanto, la facturación calculada con total_bytes_billed de la vista INFORMATION_SCHEMA.JOBS será menor que el valor facturado. Consulta la página Prácticas recomendadas para la seguridad a nivel de la fila para obtener más detalles sobre por qué no se ve esta información.
  • Cómo realizar operaciones de AA en BigQuery

    • El precio de las consultas a pedido en BigQuery ML depende del tipo de modelo que se crea. Algunas de estas operaciones del modelo se cobran a una tarifa más alta que las consultas que no son de AA. Por lo tanto, si solo sumas todos los total_billed_bytes del proyecto y usas la tarifa estándar por TB de precios según demanda, esta no será una agregación de precios correcta. Debes tener en cuenta la diferencia de precios por TB.
  • Importes de precios incorrectos

    • Confirma que se usen los valores de precios por TB correctos en los cálculos. Asegúrate de elegir la región correcta, ya que los precios dependen de la ubicación. Consulta la documentación sobre precios.

La recomendación general es seguir la forma recomendada de calcular el uso de trabajos a pedido para la facturación en nuestra documentación pública.

Se cobra el uso de la API de BigQuery Reservations, aunque la API esté inhabilitada y no se hayan usado reservas ni compromisos.

Inspecciona el SKU para comprender mejor qué servicios se cobran. Si el SKU facturado es BigQuery Governance SKU, se trata de cargos provenientes de Dataplex Universal Catalog. Algunas funciones de Dataplex Universal Catalog activan la ejecución de trabajos con BigQuery. Estos cargos ahora se procesan con el SKU correspondiente de la API de BigQuery Reservations. Consulta la documentación de Precios de Dataplex Universal Catalog para obtener más detalles.

El proyecto está asignado a una reserva, pero aún se ven los costos de BigQuery Analysis según demanda

Lee la sección Soluciona problemas con las reservas para identificar de dónde podrían provenir los cargos de Analysis.

Cargos inesperados por ranuras de pago por uso (PAYG) para la edición estándar de BigQuery

En el informe de Facturación de Cloud, aplica un filtro con la etiqueta goog-bq-feature-type y el valor BQ_STUDIO_NOTEBOOK. El uso que verás se medirá como ranuras de pago por uso en BigQuery Standard Edition. Estos son los cargos por usar el notebook de BigQuery Studio. Obtén más información sobre los precios de los notebooks de BigQuery Studio.

Cargos de la API de BigQuery Reservations que aparecen después de que se inhabilita la API de Reservations

Si inhabilitas BigQuery, no se detendrán los cargos por compromiso. Para detener los cargos por compromiso, deberás borrar uno. Establece el plan de renovación en NONE y el compromiso se borrará automáticamente cuando venza.

Cargos de almacenamiento inesperados

Situaciones que podrían generar aumentos en los cargos de almacenamiento:

El borrado de tablas o conjuntos de datos generó costos de almacenamiento de BigQuery más altos

La función de viaje en el tiempo de BigQuery retiene los datos borrados durante el período configurado para el viaje en el tiempo y 7 días adicionales para la recuperación ante fallas. Durante este período de retención, los datos borrados en los conjuntos de datos del modelo de facturación de almacenamiento físico contribuyen al costo de almacenamiento físico activo, aunque las tablas ya no aparezcan en INFORMATION_SCHEMA.TABLE_STORAGE ni en la consola. Si los datos de la tabla estaban en el almacenamiento a largo plazo, la eliminación hace que se muevan al almacenamiento físico activo. Esto hace que aumente el costo correspondiente, ya que los bytes físicos activos se cobran aproximadamente 2 veces más que los bytes físicos a largo plazo, según la página de precios de almacenamiento de BigQuery. El enfoque recomendado para minimizar los costos causados por la eliminación de datos en los conjuntos de datos del modelo de facturación de almacenamiento físico es reducir el período de viaje en el tiempo a 2 días.

Se reducen los costos de almacenamiento sin modificar los datos.

En BigQuery, los usuarios pagan por el almacenamiento activo y a largo plazo. Los cargos por almacenamiento activo incluyen cualquier tabla o partición de tabla que no se haya modificado durante 90 días consecutivos, mientras que los cargos por almacenamiento a largo plazo incluyen tablas y particiones que no se hayan modificado durante 90 días consecutivos. Se puede observar una reducción general en el costo de almacenamiento cuando los datos pasan al almacenamiento a largo plazo, que es alrededor de un 50% más económico que el almacenamiento activo. Obtén más información sobre los precios de almacenamiento.

Los cálculos de almacenamiento de INFORMATION_SCHEMA no coinciden con la facturación

  • Usa la vista INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE en lugar de INFORMATION_SCHEMA.TABLE_STORAGE, ya que TABLE_STORAGE_USAGE_TIMELINE proporciona datos más precisos y detallados para calcular correctamente los costos de almacenamiento.
  • Las consultas que se ejecutan en las vistas de INFORMATION_SCHEMA no incluyen impuestos, ajustes ni errores de redondeo. Ten esto en cuenta cuando compares los datos. Obtén más información sobre los informes en la Facturación de Cloud en esta página.
  • Los datos que se presentan en las vistas de INFORMATION_SCHEMA están en UTC, mientras que los datos del informe de facturación se informan en la hora del Pacífico de EE.UU. y Canadá (UTC-8).

¿Qué sigue?