Get a free observability report to evaluate the potential savingsContact us →
Análisis de costos3 min de lectura

Análisis de costos de BigQuery por consulta

Esta consulta le ofrece una vista línea por línea de cada ejecución de consulta en su proyecto, incluyendo su costo bajo demanda, uso de slots y duración facturada. Es el análisis de costos más granular disponible — perfecto para profundizar en consultas individuales costosas.

Por qué importa

Las vistas de costos agregados (por usuario, por etiqueta) le dicen dónde va el dinero a alto nivel, pero para resolver realmente el problema necesita ver las consultas individuales. Este desglose por consulta le permite identificar las instrucciones SQL exactas que consumen más recursos y priorizar optimizaciones con el mayor ROI.

Cómo funciona

La consulta lee desde INFORMATION_SCHEMA.JOBS_BY_PROJECT y calcula varias métricas de costo para cada ejecución de consulta: número aproximado de slots, costo bajo demanda (basado en bytes facturados), horas-slot facturadas (para comparación con Editions) y número de ejecuciones. También aplica las reglas de facturación mínima de BigQuery — mínimo 10 MiB por consulta y duración mínima de 1 minuto para Editions.

Consulta SQL

Fill in your details to get a ready-to-run query:

SQL
-- Per-query cost breakdown with slot and duration metrics

DECLARE lookback_days INT64 DEFAULT 7;

WITH base_jobs AS (
  SELECT
    project_id,
    query,
    start_time,
    end_time,
    COALESCE(total_bytes_billed, 0) AS bytes_billed,
    total_slot_ms,
    TIMESTAMP_DIFF(end_time, start_time, MILLISECOND) AS duration_ms,
    ROUND(SAFE_DIVIDE(total_slot_ms,
      TIMESTAMP_DIFF(end_time, start_time, MILLISECOND)), 2) AS avg_slots
  FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
  WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
    AND state = 'DONE' AND total_slot_ms IS NOT NULL
),
with_billing AS (
  SELECT *,
    CEIL(avg_slots / 100) * 100 AS billed_slots,
    GREATEST(duration_ms, 60000) / 3.6e6 AS billed_hours,
    GREATEST(bytes_billed, 10 * POW(1024, 2)) AS billed_bytes
  FROM base_jobs
),
freq AS (
  SELECT query, COUNT(*) AS exec_count FROM base_jobs GROUP BY query
)
SELECT
...
Reemplace your-project y region-us con su proyecto GCP y la región de su dataset.

Explicación de la consulta

La consulta calcula el número aproximado de slots dividiendo total_slot_ms por el tiempo de ejecución. Aplica las reglas de facturación mínima de BigQuery: mínimo 10 MiB de bytes y duración mínima de 1 minuto. El número de slots se redondea al 100 más cercano (coincidiendo con los incrementos del autoscaler). El costo bajo demanda se calcula a $6.25/TiB, y las horas-slot se calculan para comparación de costos con Editions.

Puntos clave

  • lightbulb

    Las consultas con alto costo bajo demanda pero pocos slots están analizando demasiados datos — necesitan filtros de partición o poda de columnas.

  • lightbulb

    Las consultas con muchas horas-slot pero pocos bytes facturados son computacionalmente costosas — busque JOINs complejos, DISTINCT o funciones de ventana.

  • lightbulb

    Las consultas con alto número de ejecuciones son candidatas para caché de resultados o vistas materializadas.

  • lightbulb

    Compare on_demand_cost_usd vs slot_hours para determinar qué modelo de facturación sería más barato por consulta.

Mejores prácticas

  1. 1

    Concentre el esfuerzo de optimización en las 10 consultas principales por costo — típicamente representan el 60-80% del gasto total.

  2. 2

    Para consultas ejecutadas frecuentemente, considere materializar resultados o usar BI Engine.

  3. 3

    Use EXPLAIN para entender el plan de ejecución de la consulta antes y después de la optimización.

  4. 4

    Configure alertas automáticas para consultas que superen un umbral de costo.

¿Quiere que CloudClerk encuentre estos ahorros automáticamente?

Nuestra plataforma se conecta a su proyecto BigQuery, ejecuta estos análisis automáticamente y entrega recomendaciones de optimización impulsadas por IA — todo con sus datos completamente anonimizados.

Guías relacionadas