Requêtes SQL courantes et exemples pour analyser vos exports d’entrepôt de données Metronome
Cette page fournit des exemples pratiques de requêtes SQL pour travailler avec vos exports de données Metronome. Utilisez ces requêtes comme points de départ pour vos propres analyses et rapports.
Tous les exemples utilisent une syntaxe SQL standard. Adaptez les fonctions de date et la syntaxe selon votre entrepôt de données spécifique (Snowflake, BigQuery, Redshift, etc.).
Décomposez les revenus mensuels par type de ligne.
SELECT DATE_TRUNC("MONTH", i.end_timestamp) AS month, li.line_item_type, SUM(li.total) AS totalFROM invoice iJOIN line_item li ON i.id = li.invoice_idGROUP BY 1, 2ORDER BY 2, 1;
Récupérer le total des factures brouillon par contrat depuis le dernier snapshot
Obtenez les derniers totaux de factures brouillon groupés par contrat.
SELECT contract_id, COUNT(0) AS invoice_count, SUM(total) AS invoice_totalFROM draft_invoiceWHERE snapshot_time = (SELECT MAX(snapshot_time) FROM draft_invoice)GROUP BY 1ORDER BY 1;
Récupérer la quantité agrégée et le total quotidiens des lignes brouillon
Analysez les métriques de lignes à partir du dernier snapshot de décompositions brouillon.
WITH max_draft_breakdown_snapshot AS ( SELECT max(snapshot_timestamp) AS max_snapshot_ts FROM breakdowns_draft_invoices)SELECT i.breakdown_start_timestamp, li.name, SUM(li.quantity) AS quantity, SUM(li.total/100) AS total_dollarsFROM breakdowns_draft_invoices iJOIN breakdowns_draft_line_items li ON i.id = li.invoice_breakdown_id AND i.snapshot_timestamp = li.snapshot_timestampWHERE i.environment_type = 'PRODUCTION' AND i.snapshot_timestamp = (SELECT max_snapshot_ts FROM max_draft_breakdown_snapshot) AND li.total >= 0GROUP BY 1, 2ORDER BY 1 DESC;
Récupérer les totaux des lignes de factures brouillon quotidiennes par client
Obtenez des décompositions détaillées de lignes brouillon par client et par facture.
WITH max_draft_breakdown_snapshot AS ( SELECT max(snapshot_timestamp) AS max_snapshot_ts FROM breakdowns_draft_invoices)SELECT i.customer_id, i.breakdown_start_timestamp, i.invoice_id, li.name, li.quantity, li.total/100 AS total_dollarsFROM breakdowns_draft_invoices iJOIN breakdowns_draft_line_items li ON i.id = li.invoice_breakdown_id AND i.snapshot_timestamp = li.snapshot_timestampWHERE i.environment_type = 'PRODUCTION' AND i.snapshot_timestamp = (SELECT max_snapshot_ts FROM max_draft_breakdown_snapshot)GROUP BY 1, 2ORDER BY 1 DESC;
Remplacez <contract_id> par votre ID de contrat réel.
Récupérer le nombre d'entrées de rate card actives par rate card
Analysez la couverture des rate cards en comptant les entrées actives.
SELECT crc.id AS rate_card_id, COUNT(*)FROM contracts_rate_cards crcJOIN contracts_rate_card_entries crce ON crc.id = crce.rate_card_idWHERE crce.ending_before > NOW()GROUP BY 1ORDER BY 1;
Récupérer le nombre d'alertes par jour au cours de la dernière semaine
Analysez la fréquence de déclenchement des alertes par jour.
SELECT DATE_TRUNC("DAY", ah.created_at) AS alert_date, alert.name, COUNT(alert.id) AS triggered_countFROM customer_alert_history ahJOIN alert ON ah.alert_id = alert.idGROUP BY 1, 2ORDER BY 1;