Skip to main content

Alteryx Engine et AMP : principales différences

Dans l'article Alteryx AMP Engine nous avons couvert ce qu'est Alteryx Engine et le nouveau Alteryx Multi-Threaded Processing (AMP). Maintenant, nous allons voir plus en profondeur les principales différences entre les 2.

Différences dans le traitement des données

L'architecture du moteur d'origine permet un traitement à thread unique, où vos données sont traitées de façon séquentielle, enregistrement par enregistrement. En revanche, le nouveau concept AMP permet un traitement multi-threaded massif. Les enregistrements sont traités dans des paquets de 4 Mo, pour un temps d'exécution plus rapide et parallèle, ce qui peut affecter l'ordre des enregistrements de sortie.

With multiple cores, the AMP architecture allows for multi-threaded processing.
The original engine architecture allows for a single-threaded process, where your data is processed record-by-record.

Différences dans les entrées

Les fichiers CSV contenant un champ avec de nouvelles lignes entre guillemets échoueront si vous n'activez pas l'option supplémentaire AMP uniquement : les champs entre guillemets peuvent contenir de nouvelles lignes .

Limite d'enregistrements

Le paramètre d'exécution de la configuration du workflow Limite d'enregistrements pour toutes les entrées est activé avec AMP pour les outils suivants :

  • Entrée de données

  • Saisie de texte

  • Générer les lignes

  • Entrée de macro

La prise en charge d'AMP pour la limite d'enregistrements au niveau de l'outil dans l'outil Entrée dynamique a été ajoutée avec le correctif 2 de la version 2021.1 et à toutes les versions ultérieures.

Différences dans les résultats

Plusieurs outils peuvent produire des enregistrements dans un ordre différent de celui du moteur d'origine lors de l'exécution d'un workflow avec AMP Engine. Certains de ces outils incluent...

  • Tableau croisé dynamique

  • Nettoyage des données (lors de la suppression de lignes nulles)

  • Jointure

  • Plusieurs Jointures

  • Formule à plusieurs lignes

  • PolyBuild

  • Total cumulé

  • Trier (lorsque le tri du dictionnaire est utilisé avec des caractères spéciaux)

  • Agréger (lorsque l'option Regrouper par est utilisée)

  • Ensemble

  • Union

  • Unique

Si votre workflow nécessite que les enregistrements des outils ci-dessus soient dans un ordre spécifique pour les opérations en aval, le  mode de compatibilité du moteur  est disponible pour maintenir le même tri que le moteur d'origine. Cette option doit être utilisée après avoir soigneusement pris en compte le workflow spécifique, principalement lors de la migration de workflows créés avec le moteur d'origine pour une exécution avec AMP Engine.

Des fonctionnalités ou des paramètres spécifiques qui n'ont pas été convertis pour être utilisés avec AMP reviennent au moteur d'origine pour fonctionner. Par conséquent, les workflows qui contiennent à la fois des outils convertis et non convertis pour utiliser AMP sont parfaitement exécutables avec AMP.

Si vous avez des questions sur les outils qui ont été convertis pour utiliser AMP, consultez la rubrique : Utilisation d'outils avec AMP .

Avec le moteur d'origine, les outils sont davantage connectés aux outils en aval et cessent de fonctionner dès qu'ils ne détectent rien en aval. Lorsque AMP fonctionne en parallèle, les outils peuvent ne pas s'arrêter avec le vide en aval. Il est présumé qu'avec l'aval vide, le flux de données n'est pas pris en compte. Les informations contenues dans le message de journal sont fournies à titre indicatif. Si le nombre d'enregistrements dans le flux est important pour vous, vous pouvez y placer un outil Test et lui faire envoyer un message d'erreur s'il n'obtient pas le bon nombre d'enregistrements.

Performance de lecture

Un fichier YXDB écrit avec AMP Engine est lu plus rapidement qu'un fichier YXDB écrit avec le moteur d'origine.

Un fichier YXDB écrit avec le moteur d'origine est lu plus lentement avec AMP activé. Les formats sont toujours compatibles les uns avec les autres.

Utilisez les formats de fichiers XLSX, CSV, YXDB et SQLite avec AMP : ils prennent en charge les données de lecture multi-thread.

La conversion des enregistrements et des empaquetages entre le moteur d'origine et AMP lors de la lecture de fichiers Zip présente un coût de performance. Cela peut ralentir considérablement la lecture des fichiers Zip plus volumineux avec AMP.

CONSEIL

Lorsqu'il est ouvert dans un éditeur de texte, un fichier YXDB écrit avec AMP affiche «  Alteryx e2 Database file  » au tout début du contenu du fichier. En revanche, un fichier écrit avec le moteur d'origine affichera uniquement «  Alteryx Database File  » au même endroit.

Performance d'écriture

Pour améliorer les performances du moteur d'origine (en faisant écrire à AMP un fichier YXDB créé avec le moteur d'origine), accédez au menu  Configuration de l'outil  Sortie de données , où vous pouvez créer une version du fichier YXDB compatible avec Designer 18.1 et versions antérieures.

L' outil Sortie se comporte différemment avec les enregistrements contenant des données SpatialObj lorsqu'un fichier CSV est enregistré avec le moteur d'origine et AMP Engine. Alors qu'AMP Engine écrit des données SpatialObj dans le fichier lorsque vous les enregistrez en tant que fichier CSV, le moteur d'origine ne le fait pas. Cela entraîne des différences de taille de fichier et un risque de baisse des performances.

Si nécessaire, une solution consiste à supprimer les données spatiales des enregistrements à l'aide de l' outil Sélectionner . Les deux moteurs se terminent alors avec des durées similaires.

Profilage des performances

Le profilage des performances par outil avec AMP est disponible avec Designer version 2021.3 et versions ultérieures.

Performances de l'outil R

AMP transmet les données vers et depuis R au format du moteur d'origine. Cette double conversion prend du temps. Le temps d'exécution d'un seul outil R peut être plus lent avec AMP qu'avec le moteur d'origine, mais il sera plus rapide si plusieurs branches sont exécutées simultanément.

Outils Saisie de texte et Champ automatique

AMP traite un problème historique où la taille du champ peut ne pas être assez grande lorsqu'il est traité par un outil en aval. Vous n'avez pas besoin d'ajouter des outils Sélectionner pour modifier les types de données lorsque les données résultantes dépassent la longueur du type de données d'origine. AMP crée un champ de taille maximale pour les chaînes et les nombres entiers afin que les opérations ultérieures aient la marge de manœuvre nécessaire pour contenir des valeurs en aval plus grandes.

Outil Régulateur

Bien que l’outil Régulateur n’ait pas été entièrement converti en AMP, vous pouvez l’utiliser avec l’outil Télécharger (Utilisez l'outil Régulateur en premier).

Correspondance partielle

L'outil Correspondance partielle peut générer des résultats différents entre le moteur d'origine et AMP. Les enregistrements AMP sont appariés à l’aide d’une méthode alternative. L'ordre de correspondance peut être différent et la sortie peut être aussi dans l'ordre inverse. Il existe un problème de performances connu avec l'outil Correspondance partielle étant moins performant avec AMP que le moteur d'origine.

Outil RegEx

AMP utilise les normes de codage Unicode et Perl, où les caractères $ , + , < , = , > , ^ , | et ~ ne sont pas considérés comme de la ponctuation. Lorsque vous utilisez la fonction de la formule  REGEX_Replace ou l' outil RegEx pour filtrer la ponctuation à l'aide de l'ensemble RegEx [[:punct:]], vous devez changer l'expression avec AMP. 

Exemple

REGEX_REPLACE([_CurrentField_],'[[:punct:]]|[\$\+<=>\^`\|~]','')

Outils de regroupement et outils de blocage

Dans le moteur d'origine, l'algorithme de l'outil Jointure est basé sur la méthode de jointure de tri-fusion, où les enregistrements viennent toujours dans un ordre trié. Avec AMP, le nouvel algorithme de l'outil Jointure est basé sur une méthode de jointure de hachage, de sorte que les enregistrements sortent de manière désordonnée. Par exemple :

The Join algorithm with AMP is based on hash join, so the record order is different.

Entrée gauche :

The Join algorithm - left input.

Entrée droite :

The Join algorithm - right input.

Si nous effectuons la jointure par la colonne CustomerID en utilisant le moteur d'origine, l'ordre des enregistrements est trié par le champ  CustomerID  :

Join by CustomerID with the original Engine.

En utilisant AMP, les enregistrements sont les mêmes, mais dans un ordre différent :

Join by CustomerID with AMP.

Si vous avez besoin d'avoir une sortie ordonnée, ajoutez l'outil  Trier après l'outil  Jointure ou activez le paramètre  Mode de compatibilité du moteur dans Configuration du workflow  > Exécution , sous le paramètre  Utiliser AMP Engine .

Use AMP Engine checkbox

Macros itératives

La différence entre le moteur d’origine et AMP peut se produire lorsqu’un outil à l’intérieur de la macro signale une erreur. En étant un thread unique, le moteur d’origine s’arrête si une erreur se produit dans la macro. AMP fonctionne jusqu'à ce que la sortie itérative soit vide ou que le nombre maximum d'itérations se produise. Vous pouvez rencontrer ces situations, en raison d'un plus grand nombre d'itérations :

  • Le nombre d’erreurs (le cas échéant) peut être plus élevé avec AMP.

  • Le nombre d'enregistrements peut être plus élevé avec AMP.

  • Le schéma de sortie peut être différent avec AMP.

Outil Formule

Les fonctions ConvertFromCodePage et ConvertToCodePage de l'outil Formule acceptent la chaîne comme paramètre et renvoient la chaîne comme résultat. Il n'est donc pas possible de distinguer la façon dont la chaîne est codée. Il existe une différence dans la sortie de l'outil Formule lorsque ces fonctions sont utilisées avec le moteur d'origine et AMP.

Une représentation binaire différente des données entrantes est causée par l'utilisation interne par AMP de chaînes codées UTF-8. Lorsque les données avec un codage différent sont importées, il est impossible de restaurer les données d'origine. Le moteur d'origine stocke les chaînes sous forme de chaînes codées Latin-1 ou UTF-16 qui ont été utilisées comme tampon et permettent de reconvertir les données correctement.

Compléments de formules

Les compléments de formules ne sont pas encore compatibles avec AMP. Si vous avez besoin d'exécuter un workflow contenant la fonctionnalité Compléments de formules, exécutez-le sur le moteur d'origine.

Application analytique

Les applications utilisant l'outil Carte pour sélectionner à partir d'une couche de référence spatiale dans une application analytique doivent continuer à utiliser le moteur d'origine.

Attendre des flux égaux

Avec le moteur d'origine, l'outil Expect Equal reste une macro CReW. Avec AMP, il fonctionne comme un outil natif.

Exécution parallèle des branches et ordre d'exécution des outils

Certains workflows lisent un fichier, puis réécrivent dans le même fichier. Cela nécessite une séquence qui assure que la lecture est terminée avant que l'écriture ne commence. De même, un workflow qui vise à écrire plusieurs feuilles dans un fichier XLSX doit écrire une feuille à la fois. Alteryx Designer fournit l'outil Bloquer jusqu'à la fin pour aider à diviser le travail en phases qui ne sont pas l’une sur le chemin de l’autre.

La même solution s'applique à l'outil E-mail lorsque vous utilisez le ou les fichiers de sortie des branches précédentes comme pièces jointes. Vous devez attendre que le traitement des données soit terminé, puis les ajouter en pièces jointes à l'outil E-mail.

Lorsque vous travaillez sur un workflow avec plusieurs branches (flux largement séparés des entrées vers les sorties), placez l'outil Bloquer jusqu'à la fin dans la branche du workflow qui possède l'outil d'entrée avec l'identifiant le plus bas. Cela fait que chaque branche subséquente n’est exécutée que lorsque la branche précédente soit terminée, ce qui garantit que les outils fonctionnent comme prévu.

Fonctionnalité disponible

Pour plus d'informations sur le fonctionnement spécifique de chaque outil, voir : Utilisation d'outils avec AMP .