Free Trial

Forum

Trouvez des réponses, posez des questions, et partagez votre expertise d’Alteryx.
TIPS de la semaine

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

Voir l'index
RÉSOLU

Découper un fichier en fonction de sa taille

FlorianDlp
Astéroïde

Bonjour à tous, je suis confronté à un problème auquel je n'arrive pas à trouver de solution :

 

J'essaye de créer une macro permettant de "découper" un fichier Excel en plusieurs petits fichiers. L'idée serait de créer une macro qui aurait pour entrée un fichier Excel. Cette macro diviserait ensuite le fichier en plusieurs petits fichiers de taille équivalente : supposons que le fichier d'entrée fasse 200 Mo je souhaiterais diviser ce fichier en 4 fichiers de 50 Mo chacun. Pourriez-vous m'aider dans la réalisation de cette macro ?

 

Cordialement,

 

Florian

8 RÉPONSES 8
messi007
15 - Aurora
15 - Aurora

Bonjour @FlorianDlp,

 

Je ne suis pas sûr si tu peux faire un split sur la taille mais tu peux spliter en nombre égaux en se bason sur le nombre de ligne:

Voici la macro 

 

messi007_0-1607954907941.png

1- Tile tool permet de definir le nombre de fichier

2- Nous ajoutons le numero du tile au niveau du nom de fichier afin d'avoir plusieurs output

messi007_1-1607954994848.png

3- Mise à jour au niveau de l'output

 

messi007_2-1607955054704.png

Voici le workflow pour definir le nombre tile de l'exterieur

 

messi007_3-1607955093160.png

 

Ci-joint le workflow,

 

J'espère que ça t'aides 🙂

 

Cordialement,

FlorianDlp
Astéroïde

Bonjour @messi007 tout d'abord merci beaucoup d'avoir pris le temps de répondre à ma question cependant je préfèrerais une règle basée sur la taille de fichier si cela est possible

StephV
Alteryx Alumni (Retired)

Des solutions @abdelkrimkhatiri@Didier_Altide@carlosteixeira2005@MathieuF@StephaneP , @matyohan@Adam_LY@ZakEllaoui,@A2H ? 

 

Steph Vitale-Havreng
messi007
15 - Aurora
15 - Aurora

@FlorianDlp,

 

D'après ce que je sais ce n'est pas faisable.

Mais je serai ravi si une autre personne peut confirmer ou pas 😊

 

Cordialement,

 

 

 

Ladarthure
14 - Magnetar
14 - Magnetar

Bonjour @FlorianDlp,

 

en utilisant un directory tool, on peut avoir une information sur la taille du fichier, ensuite, en divisant ou en mettant un maximum on peut ensuite avoir une estimation, par contre pour transformer cela en macro et lire de manière dynamique le poids du fichier sélectionné peut être touchy, on  peut par contre envisager une application analytique qui ferait le travail!

FlorianDlp
Astéroïde

Bonjour @Ladarthure merci d'avoir pris le temps de me répondre, je n'avais pas connaissance de ce directory tool, je vais chercher de ce côté

StephaneP
Alteryx
Alteryx

Salut à tous et bonne année !! (c'est mon 1er post de l'année j'ai le droit)

 

Je ne vais pas réinventer la poudre. Voici un post qui synthétise toutes les solutions possibles, de ce que j'ai compris, si on recherche un split sur la taille.

 

https://community.alteryx.com/t5/Alteryx-Designer-Discussions/Splitting-the-output-file-into-n-small...

 

Globalement l'idée à retenir lorsqu'on parle de fichier compressés comme du XLS c'est qu'on ne peut pas savoir à l'avance la taille qu'il va faire en se basant uniquement sur le nombre de lignes. On ne peut pas non plus se baser sur la taille des 1ères lignes car la "densité" des données n'est pas forcément linéaire dans un fichier.

On se base bien sur les infos de l'outil Browze pour déterminer la taille du fichier source et la taille des fichiers intermédiaires ou splittés.

 

Il y a donc 2 grandes options pour des fichiers compressés:

1. Soit on fait une boucle itérative qui place dans un fichier de plus en plus de lignes. On teste la taille obtenue jusqu'à atteindre la taille de split attendue. Et alors elle recommence dans un nouveau fichier et ainsi de suite.

Ca marche mais c'est hyper long puisqu'on écrit dans le fichier autant de fois qu'il y a d'itération... Il faut vraiment avoir besoin de précision donc.

 

2. Soit on génère un fichier contenant un échantillon de x% de ligne pour en déduire la taille qu'il fait. Cela nous permet d'en déduire en combien de lignes il faut découper notre fichier pour obtenir la taille cible escomptée.

C'est moins précis que la méthode précédente mais plus précis que le nombre de lignes. En effet si les données sont vraiment de densité non linéaire cela donnera des tailles assez variées voir au dessus du palier. Le plus le % d'échantillon est grand le plus se sera précis.

 

On peut même imaginer une 2ème boucle qui vient tester le résultat pour le re travailler.

 

Note informative:

Sinon pour ceux qui veulent spliter par ligne à noter l'option souvent méconnue du Output: Max Reccords Per File

StephaneP_0-1609856194227.png

Qui en 1 option vous permet de générer dynamiquement des fichiers du même nombre de ligne. Dès qu'il atteint le Max il génère un nouveau fichier à coté.

 

Enjoy !

 

Stéphane Portier
Sales Engineer
Alteryx
StephV
Alteryx Alumni (Retired)

Merci beaucoup pour le complément d'information @StephaneP ! J'espère que cela te sera utile @FlorianDlp. En vous souhaitant à tous une excellente année 2021 ! 

 

Steph Vitale-Havreng
Étiquettes