AccueilBlogTest BigQuery
Tests prêts à l'emploi

Test BigQuery : optimiser une requête coûteuse (avec la logique de coût derrière)

Sur BigQuery, on paie les données lues. Ce test vérifie la compétence la plus critique — et la plus rare — : la conscience du coût. On donne une requête qui « marche » mais scanne des téraoctets inutiles, et on regarde si le candidat sait la rendre économe. Corrigé et logique de coût inclus.

Data Builder·Juillet 2025·10 min de lecture·Test BigQuery · coût / performance · clé en main

Le principe à comprendre : BigQuery facture les octets scannés, pas le temps. Deux leviers réduisent la facture — sélectionner uniquement les colonnes utiles, et filtrer sur la colonne de partition. Un candidat qui l'ignore peut générer de grosses factures.

1La requête à optimiser

La consigne

« Cette requête coûte cher à chaque exécution. Réduis son coût sans changer le résultat. »

La table des commandes est partitionnée par date et contient de nombreuses colonnes. La requête ci-dessous ignore les deux leviers de coût de BigQuery.

-- Table commandes : partitionnee par date_commande, ~50 colonnes, plusieurs To SELECT * FROM commandes WHERE EXTRACT(YEAR FROM date_commande) = 2024 -- fonction : ignore la partition -- SELECT * : scanne les ~50 colonnes ; le filtre par fonction lit TOUTES les partitions

    2Les deux problèmes de coût

    La consigne

    Chacun multiplie inutilement les octets scannés.

    Un bon candidat identifie précisément pourquoi cette requête est chère, en raisonnant en octets scannés — pas en temps d'exécution.

    • SELECT * scanne toutes les colonnes, même celles inutiles (BigQuery est en colonnes).
    • EXTRACT(YEAR FROM ...) sur la date empêche l'élagage de partitions : toutes sont lues.
    • Bon réflexe : estimer les octets scannés avant de lancer (dry run).

    3Le corrigé

    La consigne

    Colonnes utiles + filtre par plage de dates.

    La version optimisée ne lit que les colonnes nécessaires et filtre par plage de dates, ce qui active l'élagage de partitions. Le coût peut chuter de plusieurs ordres de grandeur.

    SELECT client_id, montant, date_commande -- colonnes utiles seulement FROM commandes WHERE date_commande >= '2024-01-01' AND date_commande < '2025-01-01' -- filtre de partition -> elagage -- Resultat identique, une fraction des octets scannes.
    • Lister les colonnes utiles au lieu de SELECT *.
    • Filtrer par plage de dates pour n'ouvrir que les partitions 2024.
    • Le candidat sait estimer/comparer le coût avant/après.

    Signal d'alerte : le vrai marqueur : le candidat raisonne spontanément en octets scannés et vérifie le coût estimé (dry run) avant de lancer. Celui qui traite BigQuery comme une base classique représente un risque financier réel.

    4Grille par niveau

    NiveauMaîtrise attendueSignal GONO-GO
    JuniorÉcrit une requête correcteObtient le bon résultatLance SELECT * sans filtre
    ConfirméSélectionne les colonnes utilesRéduit les colonnes scannéesIgnore le partitionnement
    SeniorActive l'élagage de partitionsRaisonne en octets scannésNe relie jamais requête et facture
    LeadMet en place des garde-fous coûtAnticipe le coût avant d'exécuterTraite BigQuery comme une base classique

    Vous recrutez un profil data ?

    Data Builder mène l'entretien technique et vous livre un rapport clair et détaillé sous 24h. Premier entretien offert.

    Tester gratuitementRéserver un appel