<< Back

Optimisation des performances des flux de préparation de données Alteryx

Nous continuons notre série d’articles concernant la migration de programmes SAS vers Alteryx.

Nous avons détaillé dans un premier article les étapes à ne pas manquer pour une migration réussie.

Dans cet article nous nous intéressons à l’optimisation des performances des flux de préparation de données sur Alteryx.

Quels sont les leviers principaux permettant d’optimiser les performances d’un flux de préparation de données sur Alteryx  ?

Il est possible d’optimiser les performances en jouant sur plusieurs aspects :

  • Idéalement, les filtres doivent être utilisés au début du flux afin de diminuer rapidement le volume de données. Dans le même but, il est conseillé de réaliser les étapes de nettoyage comme la suppression des champs superflus le plus tôt possible.
  • Il est peu recommandé d’utiliser des outils peu performants (comme par exemple l’outil « nettoyage de données », ou en anglais « data cleansing ») afin de diminuer les temps de traitement.
  • Là où une table peut être requêtée plusieurs fois dans un même programme SAS, il est possible d’effectuer une seule requête de cette table dans Alteryx pour ensuite l’utiliser dans plusieurs branches du flux de préparation de données. Cela peut permettre des gains de temps importants étant donné que les étapes de requêtage font partie des plus chronophages.
  • Enfin, lorsque les tables requêtées présentent une volumétrie importante (plus de 10 millions de lignes), l’utilisation des outils in-database d’Alteryx permet de réduire grandement les temps de traitement. En effet, ces outils utilisent la puissance de calculs de la base de données (Oracle, teradata, …) au lieu d’utiliser les capacités plus réduites d’un poste de travail local. Les outils les plus utilisés dans les traitements Alteryx ont leur équivalent en version in-database.

Lors du développement des flux Alteryx, il est essentiel d’activer le profilage des performances afin de pouvoir comparer et identifier rapidement les outils et étapes performants et ceux moins performants.

Ce point est détaillé dans l’article suivant : Améliorer la performance de vos workflows Alteryx

Quels sont les outils à éviter et ceux à privilégier notamment lorsque la volumétrie des données est importante ?

Plusieurs outils Alteryx peuvent permettre d’effectuer la même opération. Ces outils induisent des temps de traitement différents, et plus particulièrement quand la volumétrie de données est importante. Ainsi, le choix de l’outil s’avère primordial lors de la phase de développement du flux de préparation de données.

Par exemple : 

  • Si l’on souhaite supprimer des espaces de têtes et de queue dans un champ “chaîne de caractère” (“string”), il est préférable d’utiliser l’outil “formule” (“formula”) et la fonction trim plutôt que l’outil “nettoyage de données” (“data cleansing”).
  • Dans le but de supprimer des lignes dupliquées, l’outil “agréger” (“summarize”) est plus performant que l’outil “unique”.
  • Même si l’outil “datetime” est très simple d’utilisation, il sera préférable d’utiliser les fonctions de date et de conversion dans l’outil “formule”.

Ainsi, dès lors qu’il existe plusieurs options permettant de réaliser la même opération, il est recommandé de les tester et de comparer les temps de traitement grâce au profilage des performances. Cela permettra de choisir l’option la plus performante.

Quand choisir d’utiliser les outils in-database d’Alteryx ?

L’utilisation des outils in-database d’Alteryx permet de considérablement diminuer les temps d’exécution des flux de préparation de données.

Toutefois, dans certains cas, l’utilisation excessive et non raisonnée de tels outils entraînera une baisse des performances.

Prenons comme exemple un enchaînement trop long d’outils in-database avec des données en entrée stockées dans une base de données (Teradata, Oracle, Microsoft SQL, …) et des données en sortie sous forme de fichiers plats. Ce flux de préparation de données sera potentiellement moins performant que le même enchaînement d’outils in-memory.

En effet, lorsque l’on sort du flux de données in-database, Alteryx compile toutes les opérations en une seule requête SQL (ou teradata) qui peut donc contenir de nombreuses sous-requêtes et par conséquent être peu performante.

Les bonnes pratiques d’utilisation des outils in-database d’Alteryx sont donc : 

  1. Utiliser ces outils lorsque la volumétrie de données dépasse plusieurs millions ou dizaines de millions d’enregistrements
  2. Filtrer les données le plus tôt possible dans le flux in-database quand cela est possible
  3. Dès que la volumétrie de données le permet, sortir du flux de données in-database pour continuer le développement du flux avec les outils in-memory

L’outil le plus chronophage est en réalité l’outil “Sortie du flux de données” (“Data Stream Out”) qui compile tous les outils in-database précédents en une seule requête. Il est donc essentiel, lors du développement du flux, de mesurer le temps d’exécution de cet outil avec le profilage des performances et de mesurer la volumétrie des données en sortie : lorsque le temps d’exécution de l’outil explose (par exemple, le temps d’exécution de l’outil double voire triple alors que l’on a ajouté un seul outil dans le flux), cela signifie soit que la requête est trop longue (et qu’il y a donc trop d’outils in-database), soit que la volumétrie des données est encore trop élevée pour sortir du flux in-database.

Ce qu’il faut retenir des points évoqués ci-dessus :

Le développement des flux de préparation de données en suivant les bonnes pratiques générales de préparation de données (filtres, nettoyage de données) permet d’optimiser leurs performances.

De plus, le choix rigoureux des outils Alteryx (“formula” vs “data cleansing”, “ in-memory” vs “in-database”, …) permet d’obtenir des performances similaires voire meilleures que celles obtenues avec SAS.

Nous parlerons des avantages d’Alteryx par rapport à SAS dans le prochain article.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *