Passer au contenu principal
Les métriques facturables définies à l’aide de l’éditeur SQL sont formatées comme des requêtes SQL exécutées sur une table appelée events, qui inclut tous les événements d’utilisation bruts envoyés à Metronome. De manière similaire à l’éditeur Filtres de base, les requêtes SQL des métriques facturables doivent inclure un ensemble de filtres qui identifient les événements d’utilisation corrects à interroger, et une agrégation pour transformer ces événements en une valeur que Metronome utilisera comme quantité pour les postes en aval. Metronome gère le filtrage des requêtes SQL pour les clients individuels au cours de leur période de facturation. Vous n’avez pas besoin d’inclure cette logique dans vos requêtes — concentrez-vous simplement sur le filtrage et l’agrégation !

Fonctionnalités prises en charge

Voici comment vous pouvez accéder aux éléments de votre événement d’utilisation dans la requête :
  • Interrogez la table events
  • Vous pouvez accéder au champ event_type dans l’éditeur SQL en utilisant event_type
  • Vous pouvez accéder au champ timestamp dans l’éditeur SQL en utilisant timestamp
  • Vous pouvez accéder à tout champ dans le dictionnaire properties en utilisant properties.field_name
Si votre requête renvoie plus d’une colonne, Metronome recherche d’abord une colonne appelée value à utiliser comme colonne pour la quantité de la métrique. Si aucune colonne value n’existe, Metronome utilise la première colonne renvoyée dans la requête. Toute autre colonne renvoyée peut être utilisée comme clé de groupe dans la tarification et le packaging en aval.
INFOSi des colonnes supplémentaires sont renvoyées mais ne sont pas utilisées comme clés de groupe de présentation ou de tarification, Metronome additionne tous les résultats pour générer une quantité unique pour la métrique.

Fonctions et opérateurs pris en charge

L’éditeur SQL prend en charge ces fonctions et opérateurs.
  • Agrégations
    • COUNT : compte le nombre de lignes
    • SUM : somme des nombres
    • MAX : prend le maximum des nombres
    • MIN : prend le minimum des nombres
    • AVG : moyenne des nombres
    • EARLIEST : retourne la valeur la plus précoce d’une colonne en fonction de son timestamp
    • LATEST : retourne la dernière valeur d’une colonne en fonction de son timestamp
    • COUNT DISTINCT : compte les valeurs distinctes dans l’expression
  • Math
    • +, -, *, /
    • =, !=, >, <, ,
    • LEAST : retourne le plus petit de ses arguments
    • GREATEST : retourne le maximum de ses arguments
    • ROUND : arrondit un nombre à un nombre spécifié de décimales
    • CEIL : retourne la plus petite valeur entière qui est supérieure ou égale à l’entrée
    • FLOOR : retourne la plus grande valeur entière qui est inférieure ou égale à l’entrée
  • Logique
    • AND
    • OR
    • NOT
    • CASE WHEN
    • IS NULL
    • IS NOT NULL
    • IN
    • NOT IN
    • =
    • !=
  • Dates
    • DATE_TRUNC : tronque le champ timestamp à l’hour ou au day.
  • Casting
    • CAST

Exemple de flux de création

À titre d’exemple d’un scénario plus complexe, utilisez l’éditeur SQL pour créer une métrique facturable qui suit la moyenne quotidienne du stockage utilisé sur une période de facturation.
  1. Accédez à la section Métriques facturables dans l’application Metronome.
  2. Cliquez sur + Ajouter une nouvelle métrique facturable.
  3. Choisissez Requête SQL.
  4. Nommez votre métrique (par exemple, Storage latest daily max).
  5. Entrez votre requête SQL :
    SELECT SUM(max_daily_storage) / SUM(num_days) as value, user_id, region
    FROM (
        SELECT
            date_trunc('day', timestamp) as date,
            properties.user_id as user_id,
            properties.region as region,
            MAX(properties.storage_used) as max_daily_storage,
            1 as num_days
        FROM events
        WHERE event_type = 'storage_heartbeat'
        GROUP BY date, user_id, region
    )
    GROUP BY user_id, region
    
INFODans cet exemple, user_id est renvoyé afin qu’il puisse être défini comme presentation_group_key lors de la création d’un produit à partir de cette métrique. Cela vous permet d’afficher des factures ventilées par user_id. region est renvoyé afin qu’il puisse être défini comme pricing_group_key. Cela vous permettrait d’ajouter des taux différents pour cette métrique facturable pour les valeurs us-east-1, us-west-1 ou ap-south-1.
  1. Prévisualisez votre métrique par rapport à toutes les données d’utilisation existantes pour vous assurer que les résultats sont corrects. Lorsque c’est terminé, enregistrez votre métrique.

Granularité de la décomposition SQL

Lorsque vous créez un produit soutenu par une métrique facturable SQL, vous pouvez sélectionner une granularité de décomposition SQL. La valeur par défaut est hour, ce qui convient à la plupart des cas d’usage. Avec la granularité hour, les coûts sont engagés en continu tout au long de la période de facturation à mesure que l’utilisation est ingérée. Si vous voulez utiliser la dernière valeur d’une métrique, ou si vous avez autrement une métrique qui n’a pas de sens lorsqu’elle est décomposée par heure, vous pouvez utiliser service period.

Exemple

Parcourons un exemple simple pour comparer les deux granularités. Imaginez que vous avez une simple métrique SUM construite à l’aide d’une métrique facturable SQL. Le jour 1 de la période de facturation du client, vous envoyez une valeur de 5. Le jour 2, vous envoyez une valeur de 10. Le jour 3, vous envoyez une valeur de 15. La période de facturation du client s’étend du 01/01/2026 au 01/02/2026. Avec la granularité de décomposition hour par défaut, les coûts sont engagés à mesure que l’utilisation est ingérée :
  • En supposant que vous planifiez que le taux est de $10 du 01/01/2026 au 15/01/2026, et le taux est de $20 à partir du 15/01/2026, les trois événements seront tarifés à $10.
  • Si vous avez créé un crédit ou un engagement qui s’appliquait uniquement au jour 2 de la période de facturation, seule la valeur d’utilisation de 10 et la dépense correspondante de $100 seraient appliquées au crédit ou à l’engagement.
  • Lorsque vous utilisez le point de terminaison invoice-breakdowns, vous verriez une valeur de 5 avec un total de $50 engagé le jour 1, une valeur de 10 avec un total de $100 engagé le jour 2, et une valeur de 15 avec un total de $150 engagé le jour 3.
Si vous définissez plutôt la granularité de décomposition SQL sur service period, la quantité totale de 30 utilisations sera engagée à la dernière fenêtre temporelle de la période de facturation :
  • Le prix final pour la période de facturation sera utilisé pour la quantité totale. Par exemple, si vous planifiez que le taux est de $10 du 01/01/2026 au 15/01/2026, et le taux est de $20 à partir du 15/01/2026, la quantité totale de 30 sera tarifée à $20.
  • Les crédits et engagements doivent couvrir le dernier instant de la période de facturation pour s’appliquer à la dépense.
  • Lorsque vous utilisez le point de terminaison invoice-breakdowns, les coûts seront engagés à la dernière fenêtre temporelle de la période de facturation.

Planifier un changement vers ou depuis une métrique facturable SQL sur le produit de contrat

Si vous voulez changer la métrique que vous utilisez pour facturer vos clients, vous pouvez planifier un changement de la métrique facturable associée à un produit d’utilisation. Les métriques facturables SQL sont échangeables sur les produits, et l’échange peut être planifié pour prendre effet à n’importe quel moment d’une période de facturation — pas seulement à une limite de période de facturation. Parcourons un exemple où nous passons de la métrique facturable A à la métrique facturable B, toutes deux des métriques facturables SQL, à compter du 15/03/2026. Supposons que le client utilise une facturation le 1er du mois.
  • La métrique facturable A prend la avg sur le champ value pour les événements qui correspondent à average_metric_v1.
  • La métrique facturable B prend la avg sur le champ value_new pour les événements qui correspondent à average_metric_v2.
Nous avons quelques événements d’utilisation qui correspondent à ces métriques facturables :
  • Le 01/03/2026, un événement avec une value de 4 est ingéré, avec un type d’événement average_metric_v1
  • Le 02/03/2026, un événement avec une value de 6 est ingéré, avec un type d’événement average_metric_v1
  • Le 15/03/2026, un événement avec une value_new de 10 est ingéré, avec un type d’événement average_metric_v2
  • Le 16/03/2026, un événement avec une value_new de 12 est ingéré, avec un type d’événement average_metric_v2
Dans la période de facturation de la mise à jour, pendant la période avant que la mise à jour de la métrique facturable ne soit planifiée, nous utilisons uniquement la métrique facturable A :
  • Le 01/03/2026, une quantité de 4 est engagée avec son coût correspondant.
  • Le 02/03/2026, la moyenne de 4 et 6 est 5. Une quantité de 4 était déjà engagée le jour 1, donc une quantité supplémentaire de 1 est engagée avec son coût correspondant.
Dans la période de facturation de la mise à jour, après la mise à jour de la métrique facturable, nous utilisons une formule pour déterminer quelle est la valeur de la métrique combinée chaque jour :
  • La valeur de la métrique facturable B, en utilisant toutes les données d’événements pour la période jusqu’au jour actuel
  • plus la valeur de la métrique facturable A, en utilisant toutes les données d’événements jusqu’au jour de l’échange
  • moins la valeur de la métrique facturable B, en utilisant toutes les données d’événements jusqu’au jour de l’échange
Cela signifie qu’avec l’exemple ci-dessus :
  • Le 15/03/2026, une quantité de 10 est engagée avec son coût correspondant.
  • Le 16/03/2026, la moyenne de 10 et 12 est 11. Une quantité de 1 est engagée avec son coût correspondant.
Notez que la troisième partie de la formule, la valeur de la métrique facturable B en utilisant toutes les données d’événements jusqu’au jour de l’échange, est 0 dans ce cas car les deux événements antérieurs ne correspondent pas à la métrique facturable B.