How to display data as a percentage in Kibana visualizations | Elastic Blog
Technique

Conversion des données en pourcentages dans les visualisations Kibana

Lorsque l’on analyse des données, l’utilisation de pourcentages permet d’effectuer une comparaison numérique efficace, en particulier lorsque les données en question affichent des tailles d’échantillon ou des totaux complètement différents. Les pourcentages permettent de comprendre rapidement et avec précision comment les données cumulées ont évolué sur telle ou telle dimension, p. ex. une période, des régions géographiques, des gammes de produits, etc.

Visualisation linéaire par région

Visualisation linéaire par pourcentage selon les régions

Dans cet article de blog, nous allons voir comment calculer des pourcentages dans Kibana au travers de quelques exemples, en utilisant des visualisations courantes comme un camembert, un indicateur à un seul chiffre, un tableau et une chronologie avec TSVB (visualiseur de données temporelles).

Nous nous servirons pour cela des ensembles de données flights et ecommerce proposés en échantillon avec Kibana. Avec ces données, vous apprendrez à répondre aux questions suivantes :

  • Quel est le pourcentage de vols à l’heure ?
  • Quel est le ratio de chaque type de retard au fil du temps ?
  • Comment les ventes évoluent-elles semaine après semaine ?

Avant de vous atteler à la tâche, vous devez tout d’abord installer les données échantillon "flights" et "ecommerce". Vous pouvez les installer dans votre propre cluster (version 6.5 ou supérieure) ou déployer Elasticsearch Service gratuitement pendant 14 jours.

Quel est le pourcentage de vols à l’heure ?

Votre client est une compagnie aérienne qui souhaiterait afficher sur un tableau de bord un gros nombre qui montre ses performances par rapport à ses objectifs de ponctualité. Dans l’index kibana_sample_data_flights, chaque document représente un vol unique. Aussi, pour calculer un pourcentage, vous devez diviser le nombre de documents représentant un "vol à l’heure" par le nombre de vols.

Nombre de vols à l’heure divisé par le nombre total de vols

Pour cette division, utilisez la visualisation d’indicateur TSVB, qui dispose du calcul Filter ratio. Filter ratio divise le même indicateur en deux ensembles de documents et renvoie un nombre. Seule condition pour utiliser TSVB : indiquer un champ temporel de l’index, disponible dans kibana_sample_data_flights.

Pourcentage de vols à l’heure

Pour configurer cela dans TSVB (Kibana 7.4), vous devez d’abord sélectionner votre type de visualisation et votre ensemble de données, puis configurer les agrégations utilisées pour afficher le pourcentage ci-dessus.

Pour choisir le type de visualisation et l’ensemble de données :

  1. Accédez à TSVB et sélectionnez l’onglet Metric :Sélection de l’onglet Metric
  2. Sélectionnez l’onglet Panel options :
  3. Onglet Panel options
  1. Définissez Data timerange mode sur Entire time range, au lieu de n’utiliser que le dernier intervalle. Remarque : Ce paramètre est disponible uniquement à partir de la version 7.4 de Kibana. Dans les versions antérieures, vous pouvez définir l’intervalle de dates sur une plus grande valeur à la place.
  2. Saisissez kibana_sample_data_flights en tant qu’index. Définissez time field sur timestamp.Définition de Time field sur timestamp

Maintenant que vous avez sélectionné l’index et la plage temporelle, vous pouvez configurer les données à afficher.

  1. Revenez sur l’onglet Data et utilisez Filter Ratio pour calculer le pourcentage d’une valeur spécifique, comme FlightDelayType: "No Delay".Utilisation de Filter Ratio
  1. Accédez à l’onglet Options et sélectionnez l’outil de mise en forme Percent.
    • Si la précision à 4 chiffres (proposée par défaut) est trop élevée pour vous, utilisez un format personnalisé pour tronquer les chiffres.Utilisation d’un format personnalisé

Si vous souhaitez comparer plusieurs valeurs, deux autres visualisations sont disponibles dans Kibana. Avec une bucket aggregation, sélectionnez des valeurs à comparer et utilisez un camembert ou un tableau pour convertir chaque valeur en pourcentage.

Camembert pour convertir chaque valeur en pourcentage

Tableau pour convertir chaque valeur en pourcentage

Ces visualisations se servent d’une agrégation de buckets de type Terms sur le champ FlightDelayType. Elles affichent le nombre par bucket converti en pourcentage du total. Dans l’ensemble de données "flights", il n’y a que 6 valeurs pour FlightDelayType. Les pourcentages sont donc exacts lorsque la taille de Terms est définie sur 6 ou plus. Si vos données contiennent plus de valeurs uniques, vous devrez activer le bucket "Other" pour couvrir la totalité des données :

Activation du bucket Other

Quel est le ratio de chaque type de retard au fil du temps ?

La même compagnie aérienne souhaite avoir deux visualisations côte à côte dans un tableau de bord : le récapitulatif des résultats ci-dessus par rapport à une chronologie. Cela lui permettra d’approfondir son analyse d’une période de temps précise et de voir à la fois le récapitulatif et le détail de cette période.

Étant donné que les documents de vol disposent d’un champ temporel, TSVB est le choix le plus judicieux pour générer la visualisation. Avec la même configuration que ci-dessus, vous pouvez utiliser Filter Ratio pour diviser le nombre de vols à l’heure par rapport au nombre total de vols par intervalle :

Visualisation des vols à l’heure

Pour comparer plusieurs séries, vous pouvez établir plusieurs filtres ou utiliser une agrégation pour sélectionner les groupes. TSVB dispose d’un mode qui permet d’afficher plusieurs séries scalées à 100 %.

Visualisation de plusieurs séries

Pour configurer la visualisation en pourcentages empilés dans TSVB, vous devez d’abord sélectionner les données appropriées, puis définir vos agrégations. Pour sélectionner les données appropriées :

  1. Accédez à TSVB et sélectionnez Panel Options. Entrez ensuite kibana_sample_data_flights en tant qu’index.
  2. Définissez Time field sur timestamp.Définition de Time field sur timestamp

Pour configurer vos agrégations :

  1. Revenez à l’onglet Data.
  2. Sous Group by, sélectionnez Terms pour FlightDelayType.
  3. Accédez à l’onglet Options.Sélections dans l’onglet Options
  4. Sélectionnez Data Formatter > Percent.
  5. Sélectionnez Stacked > Percent.
  6. Sélection du mode stacked-percemt
  7. Sélectionnez Split color theme > Rainbow.

Comment les ventes évoluent-elles semaine après semaine ?

L’un de vos clients d’e-commerce enregistre chaque transaction dans l’index kibana_sample_data_ecommerce. Il souhaite une visualisation qui montre le changement de pourcentage au fil de l’évolution de ventes semaine après semaine, car il s’agit d’un indicateur essentiel pour son activité. Étant donné qu’il y a une composante temporelle dans cette question, vous allez utiliser TSVB pour créer cette visualisation. Sachez que vous pouvez également créer des tableaux semaine après semaine avec Timelion, mais nous n’allons pas aborder ce sujet ici.

Comme vous l’avez vu précédemment, TSVB peut générer à la fois une visualisation d’indicateur et une visualisation chronologique avec les mêmes agrégations. À la différence de l’exemple précédent, dans lequel vous avez défini Data timerange mode sur Entire time range, dans cette visualisation, vous afficherez uniquement les données du jour le plus récent que vous comparerez à celles du même jour une semaine auparavant. Comme vous pouvez le voir, ces deux visualisations montrent qu’il y a une baisse de 5,2 % des ventes d’après les données du jour le plus récent.

Baisse des ventes

Visualisation montrant la baisse

Pour créer cette visualisation, vous devez additionner le total de ventes sur chaque jour, puis le comparer au total des ventes 7 jours auparavant. Pour effectuer cette comparaison, le plus simple est d’utiliser l’agrégation Serial Difference. Celle-ci prend chaque valeur, à laquelle elle soustrait la valeur d’un intervalle antérieur.

Configurez TSVB comme dans les exemples précédents, en faisant bien attention à sélectionner l’index kibana_sample_data_ecommerce et à définir le champ temporel sur order_date. Définissez l’intervalle précisément sur 1d. Sur TSVB, l’intervalle par défaut changera en fonction de la chronologie globale, alors qu’avec ce calcul, l’intervalle restera toujours le même.

Choix des données échantillon

Revenez à l’onglet Data et sélectionnez l’agrégation Sum pour le champ taxful_total_price.

Agrégation Sum

Puis, ajoutez une agrégation Serial Difference sur Sum of taxful_total_price avec un décalage de 7 buckets, car vous avez déjà défini l’intervalle temporel sur 1 jour. L’agrégation Serial Difference soustraira la valeur remontant à 7 buckets pour chaque jour, ce qui nous donnera la différence totale des ventes semaine après semaine. Par rapport à la méthode de calcul utilisée pour l’indicateur Serial Difference, les 7 jours affichés à gauche resteront vierges, de sorte à ce que vous puissiez sélectionner un intervalle plus large.

Agrégation Serial Difference

Pour terminer, vous convertirez la différence semaine après semaine en pourcentage grâce à une formule mathématique. Ajoutez les ventes actuelles et la différence, puis divisez cette somme par la valeur actuelle :

Utilisation d’une formule pour calculer le pourcentage

Le Painless script utilisé est ((params.total + params.diff) / params.total) - 1

Résultat : vous obtiendrez la visualisation ci-dessus. Dans un souci de clarté, vous pourriez également créer une série à l’aide d’une valeur statique de 0 pour vous servir de la différence 0 en tant que référence.

À présent, vous pouvez basculer entre les onglets Time Series et Metric pour déterminer la présentation qui convient le mieux à votre cas d'utilisation.

Conclusion

Nous avons vu quelques exemples pour calculer et utiliser les pourcentages efficacement dans Kibana. Pour approfondir le sujet, si vous désirez étudier d’autres options de calcul concernant les pourcentages, nous vous invitons à tester Canvas dans Kibana et sa capacité à contrôler aussi bien les requêtes que l’affichage des données.

Pour aller plus loin