formatting-insight-axes

Par posthog · skills

Choisissez la bonne unité pour l'axe Y lors de la création ou de la mise à jour d'un insight TrendsQuery via `posthog:insight-create` ou `posthog:insight-update`. À utiliser quand l'agent est sur le point d'ajouter une `formula` uniquement pour convertir des unités (par exemple, diviser des secondes par 60 pour afficher des minutes), quand un `math_property` est une durée, une devise, un ratio ou un grand nombre, ou chaque fois que l'utilisateur mentionne « formater l'axe Y », « durée », « secondes », « minutes », « heures », « millisecondes », « ms », « pourcentage », « devise », « décimales », « libellé d'axe » ou « unité d'axe » dans le contexte d'un insight graphique.

npx skills add https://github.com/posthog/skills --skill formatting-insight-axes

Formatage des axes de visualisation

PostHog rend les insights TrendsQuery avec un formateur d'axe intégré. Utilisez-le au lieu de contourner formula ou aggregationAxisPostfix pour simuler des unités.

L'anti-pattern

Si vous utilisez l'un de ceux-ci, arrêtez-vous et choisissez d'abord un format ci-dessous :

  • formula: "A / 60" avec aggregationAxisPostfix: " mins" — conversion manuelle secondes -> minutes
  • formula: "A / 1000" avec aggregationAxisPostfix: " s" — conversion manuelle ms -> secondes
  • formula: "A * 100" avec aggregationAxisPostfix: "%" — conversion manuelle ratio -> pourcentage
  • aggregationAxisPostfix: "ms" / "s" / "min" / "hr" sur des valeurs brutes

Ces approches figent l'unité à une seule échelle. Le formateur intégré choisit une unité conviviale par valeur (1,5s, 2m 12s, 1h 4m) et conserve la série sous-jacente numériquement correcte pour les calculs ultérieurs, les ventilations et les alertes.

Formats disponibles

Définissez trendsFilter.aggregationAxisFormat sur la TrendsQuery :

Valeur À utiliser quand la série est... Rendu
numeric (défaut) un simple comptage 1 234
duration secondes (toute échelle) 45s, 2m 12s, 1h 4m
duration_ms millisecondes 850ms, 1,5s, 1m 4s
percentage déjà 0-100 47,3%
percentage_scaled un ratio 0-1 47,3%
currency argent dans la devise de base du projet $1 234,56 (ou code local)
short grands comptages à compacter 1,2K, 3,4M

Champs complémentaires sur trendsFilter :

  • aggregationAxisPrefix — préfixe littéral (ex. "$") quand vous avez besoin d'un symbole épinglé à une devise ou unité spécifique, indépendamment des paramètres du projet
  • aggregationAxisPostfix — suffixe littéral ; réservez-le aux unités véritables que le format ne peut pas exprimer (ex. " req", " events"), jamais pour "mins" / "s"
  • decimalPlaces — limiter les décimales (1 ou 2 est généralement bon pour les devises / ratios)

Devise — choisissez format ou prefix avec soin

aggregationAxisFormat: "currency" rend avec la devise de base du projet (définie dans les paramètres du projet, par défaut USD). Utilisez-la quand les valeurs sous-jacentes sont dans cette même devise — ex. les événements de revenu que PostHog convertit automatiquement dans la devise de base du projet.

Si les valeurs sont épinglées à une devise spécifique indépendamment du projet (ex. $ai_total_cost_usd est toujours USD, même sur un projet en base EUR), utilisez aggregationAxisPrefix: "$" + decimalPlaces: 2 afin que le symbole corresponde aux données. Utiliser format: "currency" ici afficherait les valeurs USD avec sur un projet EUR.

Quand la série est en secondes

Si la série est en secondes (latence, durée de session, temps jusqu'au premier événement, temps de traitement, chargement de page, etc.), utilisez par défaut silencieusement aggregationAxisFormat: "duration". Ne demandez pas — le formateur est non-destructif (les valeurs sous-jacentes restent en secondes de toute façon, seules les étiquettes changent), donc le choisir est toujours au moins aussi bon que les secondes brutes.

Confirmez avec l'utilisateur seulement quand il a explicitement nommé une unité fixe qu'il veut épingler (« afficher ceci en minutes », « tracer la moyenne en heures ») :

« Je peux épingler l'axe y en minutes en divisant la série par 60, ou utiliser le formateur duration de PostHog qui choisit automatiquement secondes / minutes / heures par valeur — 90s s'affiche comme 1m 30s et 5400s comme 1h 30m. Lequel préférez-vous ? »

Dans des contextes MCP en une seule tentative sans utilisateur en boucle, choisissez simplement duration et continuez.

Exemples

Latence — durée en millisecondes

{
  "kind": "TrendsQuery",
  "series": [
    {
      "kind": "EventsNode",
      "event": "$pageview",
      "math": "p95",
      "math_property": "$performance_page_loaded"
    }
  ],
  "trendsFilter": {
    "aggregationAxisFormat": "duration_ms"
  }
}

Durée moyenne de session — durée en secondes

{
  "kind": "TrendsQuery",
  "series": [
    {
      "kind": "EventsNode",
      "event": "$pageleave",
      "math": "avg",
      "math_property": "$session_duration"
    }
  ],
  "trendsFilter": {
    "aggregationAxisFormat": "duration"
  }
}

Revenu — devise dans la devise de base du projet

{
  "trendsFilter": {
    "aggregationAxisFormat": "currency",
    "decimalPlaces": 2
  }
}

Valeur en devise fixe (ex. coût LLM en USD) — épinglez le symbole

{
  "trendsFilter": {
    "aggregationAxisPrefix": "$",
    "decimalPlaces": 2
  }
}

Taux de conversion — pourcentage à partir d'une formule 0-1

{
  "kind": "TrendsQuery",
  "series": [
    {
      "kind": "EventsNode",
      "event": "checkout_completed",
      "math": "dau"
    },
    {
      "kind": "EventsNode",
      "event": "checkout_started",
      "math": "dau"
    }
  ],
  "trendsFilter": {
    "formula": "A / B",
    "aggregationAxisFormat": "percentage_scaled",
    "decimalPlaces": 1
  }
}

Mise à jour d'une visualisation existante

Si vous mettez à jour une visualisation et que vous remarquez qu'elle utilise déjà l'anti-pattern formula/postfix, corrigez-la dans le même appel posthog:insight-update — supprimez la division par N, supprimez aggregationAxisPostfix, et définissez le aggregationAxisFormat correspondant. Les valeurs de la série restent les mêmes, seules les étiquettes changent. Ne scannez pas les visualisations non liées pour ce pattern — corrigez seulement celles que vous modifiez déjà.

Skills similaires