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

Top consultas de BigQuery por costo

Esta es la consulta más valiosa para la optimización de costos de BigQuery. Devuelve cada ejecución de consulta clasificada por costo bajo demanda, mostrándole exactamente qué instrucciones SQL consumen más recursos en su proyecto.

Por qué importa

En la mayoría de los proyectos de BigQuery, el principio de Pareto aplica: el 20% de las consultas representa el 80% de los costos. Encontrar y optimizar esas consultas principales ofrece el mayor ROI. Sin esta visibilidad, los equipos desperdician tiempo optimizando consultas que apenas mueven la aguja.

Cómo funciona

La consulta lee metadatos de trabajos desde INFORMATION_SCHEMA.JOBS_BY_PROJECT, deduplica por job_id y ordena por costo bajo demanda descendente. El costo se estima a partir de total_bytes_billed a $6.25/TiB. También calcula el uso aproximado de slots para cada consulta.

Consulta SQL

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

SQL
-- Most expensive queries ranked by on-demand cost

DECLARE lookback_days INT64 DEFAULT 14;

WITH jobs AS (
  SELECT
    user_email,
    query,
    job_id,
    project_id,
    start_time,
    end_time,
    COALESCE(total_bytes_billed, 0) AS bytes_billed,
    total_slot_ms,
    ROW_NUMBER() OVER (PARTITION BY job_id ORDER BY end_time DESC) AS rn
  FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
  WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
    AND job_type = 'QUERY' AND state = 'DONE' AND total_slot_ms IS NOT NULL
)
SELECT
  user_email,
  query,
  project_id,
  start_time,
  end_time,
  ROUND(bytes_billed / POW(1024, 4), 4) AS tib_scanned,
  ROUND(bytes_billed / POW(1024, 4) * 6.25, 2) AS on_demand_cost_usd,
  ROUND(SAFE_DIVIDE(total_slot_ms,
    TIMESTAMP_DIFF(end_time, start_time, MILLISECOND)), 0) AS avg_slots
FROM jobs
...
Reemplace your-project y region-us con su proyecto GCP y la región de su dataset.

Explicación de la consulta

INFORMATION_SCHEMA.JOBS_BY_PROJECT se filtra a trabajos de consulta completados dentro de la ventana de retención. ROW_NUMBER() deduplica en job_id. El costo bajo demanda se calcula como total_bytes_billed / 1024^4 * $6.25. El número aproximado de slots muestra la intensidad computacional: total_slot_ms / execution_time_ms.

Puntos clave

  • lightbulb

    Las 10 consultas más costosas típicamente representan el 50-80% de los costos totales del proyecto.

  • lightbulb

    Las consultas que aparecen múltiples veces en los primeros resultados son candidatas para materialización o caché.

  • lightbulb

    Las consultas de alto costo con pocos slots están analizando demasiados datos — agregue filtros de partición o seleccione menos columnas.

  • lightbulb

    Las consultas de alto costo con muchos slots están limitadas por cómputo — simplifique JOINs, reduzca operaciones DISTINCT o use funciones aproximadas.

Mejores prácticas

  1. 1

    Revise las 10 principales consultas semanalmente y cree tickets de optimización para cada una.

  2. 2

    Agregue filtros de partición para eliminar escaneos completos de tablas en tablas particionadas por tiempo.

  3. 3

    Reemplace SELECT * con listas de columnas explícitas para reducir bytes analizados.

  4. 4

    Use la explicación del plan de consulta de BigQuery para identificar etapas que procesan más datos.

¿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