Top requêtes BigQuery par coût
C'est la requête la plus précieuse pour l'optimisation des coûts BigQuery. Elle retourne chaque exécution de requête classée par coût à la demande, vous montrant exactement quelles instructions SQL consomment le plus de ressources dans votre projet.
Pourquoi c'est important
Dans la plupart des projets BigQuery, le principe de Pareto s'applique : 20 % des requêtes représentent 80 % des coûts. Trouver et optimiser ces requêtes principales offre le meilleur ROI. Sans cette visibilité, les équipes gaspillent du temps à optimiser des requêtes qui ont peu d'impact.
Comment ça fonctionne
La requête lit les métadonnées des jobs depuis INFORMATION_SCHEMA.JOBS_BY_PROJECT, déduplique par job_id et trie par coût à la demande décroissant. Le coût est estimé à partir de total_bytes_billed à 6,25 $/Tio. Elle calcule également l'utilisation approximative des slots pour chaque requête.
Requête SQL
Fill in your details to get a ready-to-run query:
-- 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
...Explication de la requête
INFORMATION_SCHEMA.JOBS_BY_PROJECT est filtré sur les jobs de requête terminés dans la fenêtre de rétention. ROW_NUMBER() déduplique sur job_id. Le coût à la demande est calculé comme total_bytes_billed / 1024^4 * 6,25 $. Le nombre approximatif de slots montre l'intensité computationnelle : total_slot_ms / execution_time_ms.
Points clés
Les 10 requêtes les plus coûteuses représentent typiquement 50-80 % des coûts totaux du projet.
Les requêtes apparaissant plusieurs fois dans les premiers résultats sont candidates à la matérialisation ou à la mise en cache.
Les requêtes à coût élevé avec peu de slots analysent trop de données — ajoutez des filtres de partition ou sélectionnez moins de colonnes.
Les requêtes à coût élevé avec beaucoup de slots sont limitées par le calcul — simplifiez les JOINs, réduisez les opérations DISTINCT ou utilisez des fonctions approximatives.
Meilleures pratiques
- 1
Examinez les 10 premières requêtes hebdomadairement et créez des tickets d'optimisation pour chacune.
- 2
Ajoutez des filtres de partition pour éliminer les analyses complètes de tables sur les tables partitionnées par temps.
- 3
Remplacez SELECT * par des listes de colonnes explicites pour réduire les octets analysés.
- 4
Utilisez l'explication du plan de requête BigQuery pour identifier les étapes qui traitent le plus de données.
Voulez-vous que CloudClerk trouve ces économies automatiquement ?
Notre plateforme se connecte à votre projet BigQuery, exécute ces analyses automatiquement et fournit des recommandations d'optimisation basées sur l'IA — tout avec vos données entièrement anonymisées.
Guides associés
Top requêtes BigQuery par complexité
Trouvez les requêtes BigQuery les plus intensives en calcul classées par utilisation des slots. Identifiez les requêtes consommant des ressources computationnelles disproportionnées.
Lire le guideTop requêtes BigQuery par durée
Trouvez les requêtes BigQuery les plus longues. Identifiez les requêtes lentes qui bloquent les ressources et impactent l'expérience utilisateur.
Lire le guideTop requêtes BigQuery par fréquence
Identifiez les requêtes BigQuery les plus fréquemment exécutées. Trouvez les requêtes répétées candidates à la mise en cache, aux vues matérialisées ou à la consolidation.
Lire le guideAnalyse des coûts BigQuery par utilisateur
Identifiez les utilisateurs qui génèrent le plus de dépenses BigQuery. Interrogez INFORMATION_SCHEMA pour classer les utilisateurs par coût à la demande.
Lire le guide