Analyse des coûts BigQuery par label
Les labels de jobs BigQuery vous permettent d'annoter les requêtes avec des métadonnées clé-valeur arbitraires — noms d'équipes, identifiants de pipelines, drapeaux de fonctionnalités ou tags d'environnement. Cette requête agrège les coûts par label afin d'attribuer les dépenses à la dimension métier qui compte le plus pour votre organisation.
Pourquoi c'est important
L'attribution des coûts au niveau utilisateur a ses limites. Dans les stacks data modernes, un seul compte de service peut exécuter des requêtes pour des dizaines d'équipes ou de pipelines. Les labels comblent cette lacune en vous permettant d'annoter les jobs avec un contexte métier (par ex. team=analytics, pipeline=revenue_report) puis de segmenter les coûts en conséquence. Sans attribution basée sur les labels, vous naviguez à l'aveugle sur la destination réelle de votre argent.
Comment ça fonctionne
BigQuery stocke les labels sous forme de champ STRUCT répété sur chaque job. Cette requête fait un CROSS JOIN sur le tableau de labels, déduplique les jobs, puis agrège total_bytes_billed par chaque paire clé-valeur de label. Le résultat est une estimation du coût à la demande par combinaison de labels.
Requête SQL
Fill in your details to get a ready-to-run query:
-- Break down on-demand cost by job label
DECLARE lookback_days INT64 DEFAULT 30;
WITH flattened AS (
SELECT
job_id,
lbl.key AS label_key,
lbl.value AS label_value,
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
CROSS JOIN UNNEST(labels) AS lbl
WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
AND state = 'DONE'
AND total_slot_ms IS NOT NULL
AND lbl.key IS NOT NULL
),
deduplicated AS (
SELECT label_key, label_value, bytes_billed
FROM flattened WHERE rn = 1
)
SELECT
label_key,
label_value,
COUNT(*) AS job_count,
ROUND(SUM(bytes_billed) / POW(1024, 3), 2) AS gib_scanned,
ROUND(SUM(bytes_billed) / POW(1024, 4) * 6.25, 2) AS estimated_cost_usd
FROM deduplicated
GROUP BY label_key, label_value
...Explication de la requête
La requête fait un CROSS JOIN sur le champ répété labels pour aplatir une ligne par label par job. Elle déduplique avec ROW_NUMBER() sur job_id, puis regroupe par label_key et label_value pour additionner total_bytes_billed. Le coût à la demande est calculé à 6,25 $/Tio.
Points clés
Si la plupart de vos jobs n'ont pas de labels, cette requête ne montrera qu'une fraction de vos coûts — commencez par labelliser vos pipelines les plus coûteux.
Comparez les coûts par label mois après mois pour détecter les régressions de coût introduites par de nouvelles fonctionnalités ou modifications de pipelines.
Des labels comme 'environment=production' vs 'environment=staging' peuvent révéler si les charges de travail non-production coûtent plus que prévu.
dbt ajoute automatiquement des labels avec le nom du modèle, rendant cette requête particulièrement puissante pour les équipes utilisant dbt.
Meilleures pratiques
- 1
Appliquez une politique de labellisation : exigez au minimum un label 'team' et 'pipeline' sur tous les jobs planifiés.
- 2
Utilisez les labels de requête par défaut dans votre outil d'orchestration (Airflow, dbt, Dataform) pour annoter automatiquement chaque job.
- 3
Créez un tableau de bord qui suit les coûts par label dans le temps pour détecter les régressions tôt.
- 4
Alertez sur les labels dont le coût hebdomadaire dépasse un seuil.
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
Analyse 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 guideAnalyse des coûts BigQuery par projet
Suivez les coûts BigQuery à travers les projets GCP. Utilisez INFORMATION_SCHEMA pour comparer les dépenses au niveau projet et trouver les projets les plus coûteux.
Lire le guideTop 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 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