Free Trial

Blog

Les analyses et les idées des plus grands esprits de l'analyse.
TIPS de la semaine

Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !

Voir l'index
messi007
15 - Aurora
15 - Aurora

 

 

 

messi007_0-1651158582511.png

 

 

 

 

 

Il y a deux manières de définir une chaîne :

  • Longueur fixe (String et WString) : pour le cas d'une chaîne dont la longueur est fixe et constante (ex. un code comme le code Magnitude de 5 caractères format S9999)
  • Longueur variable (V_String et V_WString) : ou VARCHAR pour le cas d'une chaîne dont la longueur est variable tout en étant limitée (ex. un libellé de 10 à 50 caractères)

 

Il faut donc privilégier le String ou WString pour représenter un code car c'est une option économique pour le système. En effet, dans le cas d'une chaîne variable (VARCHAR), le système doit gérer la longueur effective de la chaîne pour connaître la position du champ suivant, ce qu'il n'a pas à faire dans une chaîne fixe.

 

Historiquement le VARCHAR a été introduit pour économiser le volume des chaînes de longueur variable en compressant l'espace vide en fin de chaîne.

 

Mais alors pourquoi deux sous-types à chaque fois ?

Le W de WString et V_WString signifie Wide pour "large" ou étendu.

 

Il faut comprendre qu'un caractère est encodé, historiquement, sur un octet, ce qui permet 256 possibilités.

C'est le fameux code ASCII (American Standard Code for Information Interchange - Code américain normalisé pour l'échange d'information).

 

Or l'anglais (UK/US) n'a pas de lettre accentuée contrairement au français ou aux langues européennes en général. Les langues comme le japonais, chinois, etc. utilisent plus de 256 symboles. Il a donc fallu les encoder sur plus d'un octet. Deux voire trois. C'est ce qui donné lieu à l'UNICODE. Dans cette norme d'encodage des caractères, la norme UTF-8 est la plus connue et utilisée. Elle assure la compatibilité avec les codes ASCII.

 

Ce qu'il faut donc retenir, c'est que si vous utilisez abusivement du WString ou du V_WString, vous perdrez de l'efficacité en volume et en performance. Le pire étant V_WString.

 

 

Pour finir, il faut commencer par bien étudier les données du fichier à manipuler. Pour ce faire, vous pouvez utiliser l'outil Alteryx "Champs Automatiques".  Mais cet outil est à utiliser juste pour analyser le fichier, en mode expérimental, découverte et surtout pas en mode RUN., ce qui serait une surcharge pour votre Workflow. La structure est normalement stable.

 

messi007_0-1652278320386.jpeg

 

 

 

 

Après une première exécution, vous obtiendrez, dans l'onglet "Résultat" du Designer, les informations sur les longueurs optimales et les types à définir dans l'outil "Sélectionner".

Il n'y a plus qu'à reporter dans l'outil "Sélectionner".

 

messi007_1-1652278320462.jpeg

 

 

 

Attention toutefois, vous devez rester maître dans vos décisions. L'outil vous donne juste une indication.

Conseil : Si le fichier est trop volumineux, cette analyse peut être longue. Dans ce cas, limitez le nombre d'enregistrements en effectuant un échantillonnage.

 

 

messi007_2-1652278320526.jpeg

 

 

 

Voici ci-dessous la taille des fichiers de tests qui valident cette démonstration.

 

messi007_3-1652278320559.jpeg

 

 

 

Au passage, et en guise de conclusion, on remarquera que le format natif d'Alteryx YXDB est plutôt avantageux et même performant.

C'est un format propriétaire compressé efficacement ! A utiliser sans modération dès le début du workflow.

 

N’hésitez pas à poster vos questions/remarques  !

 

A bientôt pour un autre article !

Commentaires
TL69
Atome

Merci Mokhtar pour ce partage fort intéressant, détaillé et surtout très utile.
Il serait pertinent de compléter ce billet par l'usage des numériques.

StephaneP
Alteryx Alumni (Retired)

Super article, merci @messi007 😊

 

Petit retour terrain. Effectivement le V_WString est le format le moins optimisé.
Je le conseille cependant régulièrement dans les situations suivantes:

  • Vous êtes débutant et n'avez pas encore vocation à descendre dans ce niveau de détail => on ne se pose pas de question, le format passe partout est le V_WString. Si il n'y en a qu'un à retenir c'est lui.
  • Vous n'avez pas de souci de volumétrie/ perf => Là aussi, on ne se pose pas de question, le V_Wstring passe partout.

 

Pour les formats numériques, l'équivalent du "passe partout" est le Double. Gourmand en stockage mais qui absorbe tout les types de numériques.

 

Plus tard lorsqu'ils maitrisent les outils de base et les workflowsje les réoriente vers les supers articles de @messi007 😄

NBUSSER
Météore

Bonjour @messi007,

 

Merci beaucoup pour cet article qui m'a permis d'y voir plus claire entre les différents formats proposés pour les chaines de caractères.


Une petite précision cependant, il me semble que contrairement à ce qui a été dit, les accentuations des lettres latines sont bien présentes dans le code ASCII.

C'est sans doute d'ailleurs ce qui permet pour la plus part des cas de pouvoir rester sur des types String non Wide, et cela même dans le cas où l'on ai à traiter avec des chaines de caractères issues de textes en allemand, espagnole ou français.
Mais en tout cas, le rapprochement avec l'Unicode ou l'UTF8 pour la partie Wide m'a aidé à y voir plus claire et va pouvoir m'être très utile.

 

Encore merci !

 

Étiquettes