Get a free observability report to evaluate the potential savingsContact us →
Analyse des coûts3 min de lecture

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:

SQL
-- 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
...
Remplacez your-project et region-us par votre projet GCP et la région de votre dataset.

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

  • lightbulb

    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.

  • lightbulb

    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.

  • lightbulb

    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.

  • lightbulb

    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. 1

    Appliquez une politique de labellisation : exigez au minimum un label 'team' et 'pipeline' sur tous les jobs planifiés.

  2. 2

    Utilisez les labels de requête par défaut dans votre outil d'orchestration (Airflow, dbt, Dataform) pour annoter automatiquement chaque job.

  3. 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. 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