> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metronome.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Obtenir des analyses sur les engagements et l'usage

Ce guide vous accompagne dans la création de tableaux de bord internes qui permettent à vos équipes GTM de surveiller de façon proactive les habitudes d'usage des clients et la consommation des engagements, permettant des interventions opportunes qui évitent les mauvaises surprises de dépassement et améliorent la rétention des clients.

**Temps nécessaire :** 2 à 3 heures pour la configuration initiale, plus un affinement continu

**Prérequis :**

* Data Export activé et envoyant des données vers votre entrepôt ou lakehouse interne
* Accès à un outil de business intelligence (par exemple, Looker, PowerBI, Hex) avec la capacité d'interroger les tables Metronome
* Au moins un client avec un engagement actif

**Avantages clés :**

* Éviter le churn client dû à un dépassement inattendu
* Identifier les opportunités d'expansion à partir des habitudes d'usage
* Permettre un engagement client success proactif

## Avant de commencer

### Accès et permissions requis

**Rôle nécessaire :** rôle Admin ou Analyst dans Metronome

**Permissions :**

* Consulter les contrats et engagements clients
* Accéder aux configurations Data Export
* Créer et planifier des exports de données

**Exigences de données :** au moins 7 jours de données d'usage pour obtenir des insights significatifs

### Comprendre vos données

La fonctionnalité [Data Export](/fr/guides/reporting-insights/data-export/overview) de Metronome fournit des exports quotidiens des données Metronome vers l'entrepôt de votre choix. Les modèles de données incluent les informations client, les données granulaires d'usage et d'engagement, les détails de contrat, et plus encore.

## Mise en œuvre étape par étape

### Étape 1 : Configurer Data Export

<Note>
  **FONCTIONNALITÉ PAYANTE**

  Data Export est une fonctionnalité Metronome payante. Contactez votre représentant Metronome pour activer Data Export sur votre compte.
</Note>

**Objectif :** mettre en place des exports de données automatisés pour alimenter vos tableaux de bord de reporting

**Instructions :**

1. Accédez à Connections > Data Export dans l'application Metronome
2. Cliquez sur « Add Destination »
3. Configurez votre destination d'entrepôt ou de lakehouse
4. Activez les tables suivantes (remarque : les clients peuvent activer plus de tables que celles indiquées ci-dessous pour des cas d'usage supplémentaires)
   * `customer` - Tous les clients
   * `contracts` - Tous les modèles de données liés aux contrats (demandez à votre représentant Metronome de les activer)
   * `invoice` & `line_item` - Toutes les factures finalisées et leurs lignes
   * `draft_invoice` & `draft_line_item` - Toutes les factures en brouillon et leurs lignes

**Résultat attendu :** les modèles de données sont correctement transférés vers votre entrepôt de destination ou votre stockage objet sur une base quotidienne.

### Étape 2 : Construire des modèles de données de courbe de consommation au niveau client

**Objectif :** construire une courbe de consommation d'engagement par client avec la consommation réelle et la consommation attendue dans le temps

**Instructions :** pour créer une courbe de taux de consommation d'engagement, nous devons combiner deux concepts : combien d'un engagement *devrait* être consommé et combien d'un engagement a *réellement été* consommé. Les requêtes suivantes fournissent un guide étape par étape pour définir ces deux concepts à l'aide des données issues de Metronome Data Export.

<Note>
  **SQL GÉNÉRALISÉ**

  Le SQL utilisé ici est du SQL généralisé et ne s'exécutera très probablement pas tel quel dans votre moteur de requête. Python et SQL peuvent tous deux être utilisés pour la création de ces tableaux de bord.
</Note>

1. **Créer un taux de cadence à partir de `access_schedule` dans la table `contracts_balances` :**

   La requête suivante analyse l'objet JSON access schedule de la table `contracts_balances` pour générer la courbe de consommation attendue, ou combien d'un engagement *devrait* être consommé à un moment donné.

   ```sql theme={null}
   /*
   ==============================================================================
   SAMPLE QUERY: ACCESS SCHEDULE ANALYSIS
   ==============================================================================

   Purpose: Analyzes access schedules by parsing JSON schedule data and calculating
            daily rates, total duration, and normalized balance types.

   Tables Required:
   - contracts_balances_table: Contains balance information with access_schedule JSON column
   ==============================================================================
   */

   WITH access_schedules AS (
       SELECT
           -- Extract schedule item details from JSON
           JSON_EXTRACT_SCALAR(schedule_item, '$.id') AS access_schedule_id,
           id AS balance_id,

           -- Convert amount from cents to currency units
           CAST(JSON_EXTRACT_SCALAR(schedule_item, '$.amount') AS DOUBLE) / 100 AS schedule_amount_usd,
           CAST(JSON_EXTRACT_SCALAR(schedule_item, '$.amount') AS DOUBLE) AS schedule_amount_cents,

           -- Parse ISO8601 timestamps to datetime and date
           JSON_EXTRACT_SCALAR(schedule_item, '$.date') AS schedule_start_datetime,
           JSON_EXTRACT_SCALAR(schedule_item, '$.end_date') AS schedule_end_datetime,
           CAST((JSON_EXTRACT_SCALAR(schedule_item, '$.date')) AS DATE) AS schedule_start_date,
           CAST((JSON_EXTRACT_SCALAR(schedule_item, '$.end_date')) AS DATE) AS schedule_end_date,

       FROM contracts_balances_table
       CROSS JOIN UNNEST(
           TRY_CAST(
               JSON_EXTRACT(JSON_PARSE(access_schedule), '$.schedule_items') AS ARRAY(JSON)
           )
       ) AS schedule_items_table(schedule_item)
   ),

   schedule_duration AS (
       SELECT
           access_schedule_id,
           -- Calculate total days in schedule (inclusive of start and end dates)
           DATE_DIFF('day', MIN(schedule_start_date), MAX(schedule_end_date)) + 1 AS total_schedule_days
       FROM access_schedules
       GROUP BY access_schedule_id
   )

   SELECT
       -- Schedule details
       sch.access_schedule_id,
       sch.schedule_amount_usd,
       sch.schedule_amount_cents,
       sch.schedule_start_datetime,
       sch.schedule_end_datetime,
       sch.schedule_start_date,
       sch.schedule_end_date,

       -- Duration and rate calculations
       dur.total_schedule_days,
       sch.schedule_amount_usd / dur.total_schedule_days AS daily_rate_usd,

       -- Balance information
       bal.contract_id,
       bal.type AS original_balance_type,

       -- Normalized balance type with category
       CASE
           WHEN (bal.type = 'prepaid'
                 AND JSON_ARRAY_LENGTH(JSON_EXTRACT(JSON_PARSE(bal.invoice_schedule), '$.schedule_items')) = 0)
           THEN CONCAT('free_commit')
           ELSE bal.type
           -- your metronome instance may have other balance types
       END AS normalized_balance_type,

       -- Invoice schedule metadata
       bal.invoice_schedule,
       JSON_ARRAY_LENGTH(JSON_EXTRACT(JSON_PARSE(bal.invoice_schedule), '$.schedule_items')) = 0 AS has_empty_invoice_schedule

   FROM access_schedules acs
   LEFT JOIN schedule_duration dur
       ON dur.access_schedule_id = acs.access_schedule_id
   LEFT JOIN balances_table bal
       ON acs.balance_id = bal.id
   ```

2. **Calculer la consommation historique à l'aide de la table `line_item` des factures :**

   La requête suivante analyse les données de lignes de facture pour déterminer combien de l'engagement a été *réellement* consommé sur un mois donné. Cette requête n'analyse que les factures finalisées et devra ensuite être jointe aux données de factures en brouillon pour construire une vue à jour de l'engagement restant.

   ```sql theme={null}
   /*
   ==============================================================================
   SAMPLE QUERY: FINALIZED INVOICE LINE ITEM ANALYSIS
   ==============================================================================

   Purpose: Analyzes finalized invoices and their line items to categorize spend types,
            calculate usage amounts, and identify commit vs on-demand usage patterns.

   Tables Required:
   - invoice_table: Contains invoice data with timestamps and status
   - line_item_table: Contains detailed line items linked to invoices
   - customer_table: Contains customer details

   Parameters to Replace:
   - {{line_item_types}} → comma-separated list of relevant line item types

   ==============================================================================
   */

   WITH line_items AS (
       SELECT
           li.*
       FROM line_items_table li
       INNER JOIN invoices_table inv
           ON li.invoice_id = inv.id
           AND inv.status = 'FINALIZED' -- Filter to finalized invoices only
   )

   SELECT
       -- Date and time breakdowns
       CAST(inv.start_timestamp AS DATE) AS invoice_start_date,
       CAST(inv.end_timestamp AS DATE) AS invoice_end_date,
       DATE_TRUNC('month', inv.start_timestamp) AS invoice_start_month,

       -- Customer information
       inv.customer_id,
       cust.customer_name,

       -- Balance and commit tracking
       li.commit_id AS balance_id,
       li.commit_id IS NOT NULL AS is_burning_commit,

       -- Invoice details
       inv.id AS invoice_id,
       inv.issued_at AS invoice_issued_at,
       inv.status AS invoice_status,
       inv.billable_status AS invoice_billable_status,

       -- Line item details
       li.id AS invoice_line_item_id,
       li.product_id,
       li.name AS product_name,
       li.quantity AS line_item_quantity,
       li.unit_price AS line_item_price,
       li.total AS line_item_total_amount_cents,
       li.total / 100.0 AS line_item_total_amount_usd,
       li.commit_id IS NULL AS is_on_demand_usage,

       -- Audit timestamps
       inv.updated_at AS invoice_updated_at,
       li.updated_at AS line_items_updated_at,

   FROM invoices_table inv
   INNER JOIN line_items li
       ON inv.id = li.invoice_id
       AND li.line_item_type IN ({{line_item_types}}) -- Filter by Line Item Types that are appropriately contribute to Burn e.g., 'ContractUsageLineItem'
   LEFT JOIN customer_table cust
       ON cust.customer_id = inv.customer_id
   ```

3. **Calculer la consommation du mois en cours à l'aide de la table de factures en brouillon `draft_line_item` :**

   La requête précédente fournit une vue historique mois par mois de la consommation d'engagement. La requête suivante peut être combinée à celle ci-dessus pour montrer comment l'engagement a été consommé jusqu'au jour actuel dans la période de facturation. La logique de la requête est similaire au modèle `line_item` finalisé ci-dessus, à la seule différence qu'elle récupère les données d'engagement intra-mensuelles à partir de la table `draft_invoice`.

   ```sql theme={null}
   /*
   ==============================================================================
   SAMPLE QUERY: DRAFT INVOICE LINE ITEM ANALYSIS
   ==============================================================================

   Purpose: Analyzes draft invoices and their line items to categorize spend types,
            calculate usage amounts, and identify commit vs on-demand usage patterns
            for the current, not finalized, billing period

   Tables Required:
   - draft_invoice_table: Contains draft invoice data with timestamps and status
   - draft_line_item_table: Contains detailed draft line items linked to invoices
   - customer_table: Contains customer details

   Parameters to Replace:
   - {{line_item_types}} → comma-separated list of relevant line item types

   ==============================================================================
   */

   SELECT
       -- Date and time breakdowns
       CAST(drafts.breakdown_start_timestamp AS DATE) AS breakdown_start_date,
       CAST(drafts.breakdown_end_timestamp AS DATE) AS breakdown_end_date,
       DATE_TRUNC('month', drafts.breakdown_start_timestamp) AS breakdown_start_month,

       -- Customer information
       drafts.customer_id,
       cust.customer_name,

       -- Balance and commit tracking
       dli.commit_id AS balance_id,
       dli.commit_id IS NOT NULL AS is_burning_commit,
       dli.commit_segment_id,

       -- Invoice details
       drafts.invoice_id,
       drafts.issued_at AS invoice_issued_at,
       drafts.status AS invoice_status,
       drafts.billable_status AS invoice_billable_status,

       -- Line item details
       dli.id AS breakdown_line_item_id,
       dli.product_id,
       dli.name AS product_name,
       dli.quantity AS line_item_quantity,
       dli.unit_price AS line_item_price,
       dli.total AS line_item_total_amount,
       dli.total / 100.0 AS line_item_total_amount_usd,
       dli.commit_id IS NULL AS is_on_demand_usage,

       -- Audit timestamps
       drafts.updated_at AS invoice_updated_at,
       dli.updated_at AS line_items_updated_at

   FROM draft_invoice_table drafts
   INNER JOIN draft_line_item dli
       ON drafts.id = dli.invoice_breakdown_id
       AND dli.type IN ({{line_item_types}}) -- Filter by Line Item Types that are appropriately contribute to Burn e.g., 'ContractUsageLineItem'
   LEFT JOIN customer_table cust
       ON cust.customer_id = drafts.customer_id
   ```

4. **Combiner les résultats des requêtes `access_schedule`, `line_item` et `draft_line_item` et créer une colonne vertébrale de dates :**

   Il existe de nombreuses façons d'y parvenir, à la fois en SQL et en Python, et il existe également de nombreuses façons de regrouper ces données (par exemple, par compte, par type d'industrie, etc.), mais les points importants à signaler sont :

   * `line_item.commit_id` doit être joint à `access_schedule.balance_id`
   * la colonne vertébrale de dates doit être créée à l'aide de `schedule_start_date` et `schedule_end_date`, en incluant `schedule_start_date` afin que la consommation ne soit mesurée que par rapport à la période de service appropriée de l'access schedule
   * lorsque `line_item.commit_id` est nul, cela signifie qu'il s'agit d'un usage à la demande, qui ne peut pas être rattaché à un engagement particulier, et donc cet usage n'apparaîtra pas dans la courbe de consommation
   * les sommes cumulatives sur `line_item_total_amount_usd` au sein d'une période de service d'`access_schedule` génèreront la consommation totale d'un engagement à la fin de cette période de service
   * `forecast_burn_curve` peut être modélisé en fonction des heuristiques de votre choix
   * voici un exemple de ce à quoi pourrait ressembler un tableau de bord de taux de consommation d'engagement

   <img src="https://mintcdn.com/metronome-b35a6a36/yVlMhTemZHUzeXwH/images/docs/guides/implement-metronome/commit_burn_curve.png?fit=max&auto=format&n=yVlMhTemZHUzeXwH&q=85&s=19968d0a51dc3866f1cff11709a3c539" alt="commit_burn_curve_example_chart" width="1200" height="750" data-path="images/docs/guides/implement-metronome/commit_burn_curve.png" />

5. **Signaler les clients en surconsommation ou en sous-consommation :**

   À l'aide de la courbe de cadence et de la courbe de consommation réelle, les clients qui consomment leurs engagements plus vite ou plus lentement que prévu peuvent être signalés. De nombreux clients de Metronome utilisent ces données pour déclencher des conversations de renouvellement anticipé lorsqu'un client consomme trop, ou des conversations d'activation produit lorsqu'un client consomme trop peu. Un modèle courant que nous avons observé consiste à fournir à chaque Account Manager ou CSM un tableau de bord montrant les clients qui leur sont assignés et l'état actuel de la consommation (surconsommation, sous-consommation, dans les temps).

## Comprendre vos résultats

### Interpréter les données

**Ce qu'il faut rechercher :**

* Des habitudes d'usage stables et prévisibles (adoption saine)
* Des augmentations progressives de l'usage (réalisation de valeur croissante)
* Des taux de consommation entre 80 et 110 % (consommation dans les temps)

**Signaux d'alerte ou tendances préoccupantes :**

* Des pics soudains d'usage dans les 30 premiers jours (mauvaise configuration potentielle)
* Un taux de consommation supérieur à 150 % avant le mois 3 (consommation non durable)
* Des schémas répétés de pic puis de chute (implémentation instable)

**Schémas courants :**

* **Schéma :** taux de consommation à 300 % la semaine 1 → **Action :** appel de point immédiat pour revoir l'implémentation
* **Schéma :** taux de consommation inférieur à 50 % après 60 jours → **Action :** l'équipe Success doit identifier les freins à l'adoption

## Bonnes pratiques et conseils

### Recommandations d'optimisation

* **Fréquence :** examinez les comptes à haut risque quotidiennement, tous les comptes hebdomadairement
* **Timing :** Metronome exporte les données de factures en brouillon quotidiennement — il est courant que les équipes qui produisent ces tableaux de bord définissent des SLA selon lesquels leurs équipes Account Management peuvent s'attendre à voir des données de consommation fraîches
* **Public :** équipe CSM en priorité, équipe Sales pour les opportunités d'expansion et de nouveaux clients

### Fonctionnalités avancées

* Modélisation prédictive à partir des schémas saisonniers historiques
* Score de santé multidimensionnel intégrant les tickets de support
* Déclencheurs de playbook automatisés en fonction des habitudes d'usage

### Considérations sur la qualité des données

* Un usage antidaté peut provoquer des pics temporaires — attendez 24 heures avant d'escalader
* Des changements de prix en cours de période peuvent fausser les calculs de consommation
* Vérifiez toujours les anomalies par rapport aux changements de configuration récents

## Intégration et prochaines étapes

### Partage et distribution

Une fois les métriques ci-dessus définies, il existe de nombreuses façons d'opérationnaliser les données. Vous trouverez ci-dessous quelques idées que nous avons vues déployées par des clients Metronome pour aider les équipes GTM à prioriser les prises de contact et l'engagement client.

**Équipes internes :**

* Publications Slack automatisées pour les alertes critiques
* Synthèse e-mail hebdomadaire vers la direction avec les comptes à risque
* Accès au tableau de bord en temps réel pour toutes les équipes en contact avec les clients

**Parties prenantes externes :**

* Rapports d'usage mensuels aux administrateurs client
* Revues d'affaires trimestrielles avec analyse des tendances

### Passer à l'action sur les insights

1. **Surconsommation :** planifiez un appel immédiat pour examiner les habitudes d'usage et les opportunités d'optimisation
2. **Sous-consommation :** identifiez les obstacles à l'adoption et proposez un accompagnement à l'implémentation
3. **Usage élevé stable :** conversation d'expansion proactive avant épuisement de l'engagement

## Dépannage et FAQ

### Problèmes courants

**Q : Pourquoi mon client affiche-t-il un taux de consommation de 500 % au jour 2 ?**

R : Les nouveaux clients ont souvent des pics initiaux de configuration pendant qu'ils apprennent à utiliser votre plateforme. Nous vous recommandons de surveiller leur usage pendant cette période critique et de fournir des conseils d'onboarding/d'implémentation pour éviter ces erreurs précoces et coûteuses.

**Q : Le tableau de bord affiche un solde d'engagement négatif mais le client n'a pas été notifié ?**

R : Metronome est un système très flexible qui permet des configurations entraînant un usage négatif. Il est important de demander le contexte à votre équipe de facturation si vous observez un comportement anormal dans les visualisations de la courbe de consommation d'engagement.

### Checklist en cas de divergence de données

Lorsque les données du rapport ne correspondent pas aux attentes :

* ✓ Vérifiez que les plages de dates s'alignent sur la période de facturation du client
* ✓ Vérifiez s'il y a un usage antidaté au cours des 48 dernières heures
* ✓ Validez que les conditions de l'engagement correspondent à la configuration du contrat dans Metronome (date de début, montant, durée)
