Vega

Funnel : attrition d'un pipeline de données

Entonnoir construit avec des barres centrées : calculate dérive -volume/2 et +volume/2 en x/x2, une couche text affiche les volumes au centre de chaque étage.

Cas d'usage

Montrer combien d'événements survivent à chaque étape : dédup, validation, enrichissement, service.

Prérequis

Vega-Lite v5

Vega-Lite
{
  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
  "data": {
    "values": [
      { "etape": "Événements bruts", "volume": 120000, "ordre": 0 },
      { "etape": "Dédupliqués", "volume": 98000, "ordre": 1 },
      { "etape": "Validés", "volume": 86000, "ordre": 2 },
      { "etape": "Enrichis", "volume": 74000, "ordre": 3 },
      { "etape": "Agrégés", "volume": 52000, "ordre": 4 },
      { "etape": "Servis (API)", "volume": 31000, "ordre": 5 }
    ]
  },
  "transform": [
    { "calculate": "-datum.volume / 2", "as": "x0" },
    { "calculate": "datum.volume / 2", "as": "x1" }
  ],
  "encoding": {
    "y": { "field": "etape", "type": "nominal", "sort": { "field": "ordre", "op": "min" }, "title": null }
  },
  "layer": [
    {
      "mark": { "type": "bar", "height": 28, "cornerRadius": 4, "tooltip": true },
      "encoding": {
        "x": { "field": "x0", "type": "quantitative", "axis": null },
        "x2": { "field": "x1" },
        "color": { "field": "volume", "type": "quantitative", "scale": { "scheme": "teals" }, "legend": null },
        "tooltip": [
          { "field": "etape", "title": "Étape" },
          { "field": "volume", "format": ",.0f", "title": "Volume" }
        ]
      }
    },
    {
      "mark": { "type": "text", "color": "#e6edf3", "fontWeight": "bold" },
      "encoding": {
        "x": { "datum": 0 },
        "text": { "field": "volume", "type": "quantitative", "format": ",.0f" }
      }
    }
  ]
}
Vega-LiteFunnelcalculateData engineering

Snippets liés

Retour au Data Lab