Top requêtes BigQuery par fréquence
Les requêtes répétées sont un multiplicateur de coût caché dans BigQuery. Cette requête regroupe des textes de requêtes identiques et compte combien de fois chacune a été exécutée, ainsi que le coût cumulé de toutes ces exécutions.
Pourquoi c'est important
Une requête coûtant 0,10 $ par exécution mais s'exécutant 10 000 fois par mois coûte 1 000 $. L'analyse de fréquence révèle souvent des requêtes à faible coût qui s'accumulent en dépenses significatives en raison de leur simple répétition. Ce sont des candidats idéaux pour la mise en cache, la matérialisation planifiée ou l'accélération BI Engine.
Comment ça fonctionne
La requête regroupe chaque texte de requête unique, puis compte les occurrences et additionne total_bytes_billed par groupe. Le résultat montre chaque requête unique avec son nombre d'exécutions et son coût à la demande cumulé.
Requête SQL
Fill in your details to get a ready-to-run query:
-- Find the most frequently repeated queries and their cumulative cost
DECLARE lookback_days INT64 DEFAULT 14;
WITH jobs AS (
SELECT
query,
COALESCE(total_bytes_billed, 0) AS bytes_billed,
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
),
deduplicated AS (
SELECT query, bytes_billed FROM jobs WHERE rn = 1
),
grouped AS (
SELECT
query,
COUNT(*) AS exec_count,
SUM(bytes_billed) AS total_bytes
FROM deduplicated
GROUP BY query
)
SELECT
query,
exec_count,
ROUND(total_bytes / POW(1024, 3), 2) AS total_gib_scanned,
ROUND(total_bytes / POW(1024, 4) * 6.25, 2) AS cumulative_cost_usd
FROM grouped
...Explication de la requête
Les jobs sont d'abord dédupliqués par job_id, puis regroupés par texte de requête. Le comptage donne la fréquence d'exécution, et la somme des octets facturés donne le coût cumulé. Cette approche permet de faire remonter efficacement les requêtes exécutées de manière répétée à grande échelle.
Points clés
Les requêtes s'exécutant >100 fois par jour sont presque certainement automatisées — vérifiez si elles peuvent utiliser des résultats mis en cache.
BigQuery met en cache les résultats pendant 24 heures par défaut, mais uniquement pour des requêtes identiques avec des résultats déterministes.
Les requêtes avec CURRENT_TIMESTAMP() ou NOW() contournent le cache — envisagez d'utiliser la troncature de date à la place.
Les requêtes à haute fréquence analysant les mêmes tables peuvent bénéficier de vues matérialisées ou de BI Engine.
Meilleures pratiques
- 1
Activez la mise en cache des résultats BigQuery et évitez les modèles qui la contournent (CURRENT_TIMESTAMP, RAND, etc.).
- 2
Créez des vues matérialisées pour les 5 requêtes analytiques les plus fréquemment exécutées.
- 3
Consolidez les requêtes dupliquées de différents tableaux de bord ou services en une seule requête planifiée.
- 4
Utilisez BI Engine pour les requêtes en moins d'une seconde alimentant des tableaux de bord interactifs.
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 coût
Trouvez les requêtes BigQuery les plus coûteuses par coût à la demande. Classez les requêtes par total d'octets facturés pour identifier les principaux facteurs de coût.
Lire le guideTop 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 guideAnalyse des coûts BigQuery par requête
Analysez le coût, l'utilisation des slots et le temps d'exécution de chaque requête individuelle. Obtenez une ventilation détaillée du coût à la demande par exécution.
Lire le guide