2017-03-07 1 views
0

J'ai un travail Pentaho et dans l'une des transformations je veux obtenir le nombre de fichiers dans un dossier. J'ai essayé deux approches différentes, mais les deux ont pris plus de 2 minutes à exécuter. J'aimerais savoir s'il y a une étape qui pourrait être utilisée pour le faire de façon plus efficace.Obtenir rapidement le nombre de fichiers du dossier

Approche 1-à obtenir des lignes de nombre de fichiers -> Set Variables

Dans mes Get lignes de fichiers compte pas que j'ai le répertoire et un joker pour obtenir le nombre de fichiers xml (* xml.). dans un dossier. Dans l'onglet contenu, le compte de fichiers est enregistré dans un champ (fichierCompte) qui est ensuite enregistré dans une variable. Pour un dossier contenant 3 722 fichiers xml, il a fallu 2:15 pour fonctionner.

Get File rows count - File

Get File rows count - Content

Approche 2-obtenir les noms de fichiers -> Grouper par -> Définir les variables

Avec cette approche, j'ai un cadre similaire à l'étape « Get File rows count 'mais ensuite après je fais un groupe par action avec le type' Nombre de lignes (sans argument de champ) '. Cette méthode s'est déroulée en 2h30 pour les mêmes 3 722 fichiers.

Je pense que cela prend tellement de temps parce qu'il essaie d'obtenir les fichiers en mémoire, mais je me soucie seulement du nombre. J'espérais voir un moyen d'obtenir le compte.

Répondre

1

Le Obtenir des fichiers Nombre de rangs L'étape comptera chaque ligne de chaque fichier, il n'est donc pas étonnant qu'elle soit lente.

Utilisez le Get File Names et il devrait être très rapide, indépendamment de la taille des fichiers. Heureusement, j'avais un dossier complet de fichiers XML prêt, alors voici une capture d'écran de ce qu'il faut attendre (dans un linux VM sur mon ordinateur portable)

enter image description here

Si vous utilisez cette étape et ayant encore des problèmes, d'abord assurez-vous que vous avez supprimé les autres étapes d'entrée de la transformation, car elles seront toujours en cours d'exécution et éventuellement interférer. Ensuite, vérifiez si le logiciel antivirus essaie d'analyser chaque fichier lorsque Spoon les accède aux métadonnées.

+0

Merci pour l'entrée, il est plus logique d'utiliser l'approche deux surtout quand vous ne vous souciez pas du nombre de lignes. J'ai fait un autre test et trouvé ce qui causait la lenteur. Quand je regardais un dossier local, il courait très vite, à une vitesse similaire à la capture d'écran que vous avez joint. Quand j'ai couru contre un dossier de réseau alors cela a pris le même temps de plus de deux minutes. Cela m'amène à croire que le problème est de communiquer avec l'emplacement du partage et non l'étape elle-même. –