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