Suite

Comment arrêter conditionnellement une traduction FME ?

Comment arrêter conditionnellement une traduction FME ?


J'ai un espace de travail FME qui prend un ensemble d'axes de rue et le convertit en points d'adresse. J'ai traversé l'État du Missouri avec ce traducteur, un comté à la fois, car chaque comté peut prendre jusqu'à une heure à traiter. Je sélectionne un comté au début du traducteur comme paramètre de choix.

Mon problème est que je dois toujours vérifier pour m'assurer des comtés que j'ai traités afin de ne pas traiter un comté deux fois. Lorsque j'ai un fichier de plusieurs millions de points d'adresse, je ne souhaite pas supprimer les doublons.

Ce que j'aimerais que FME fasse, c'est de prendre le comté que j'ai sélectionné et de vérifier par rapport à un fichier de formes de comtés pour voir si le comté a déjà été traité. J'ai un attribut de drapeau, "COMPLETE" qui est défini sur 0 si le comté n'a pas été traité et 1 s'il l'a été.

Le fichier de formes du comté n'a rien à voir avec les autres lecteurs ou rédacteurs du traducteur.

Edit : Pour clarifier, les comtés ne sont pas du tout traités par le traducteur, seulement les lignes médianes.

Puisqu'il y a plus de 2 millions de lignes médianes, je ne veux pas du tout lire les lignes médianes (et encore moins maintenir un attribut sur les lignes médianes) si le comté a déjà été traité.

Edit : voici la solution. J'ai déplacé le lecteur st_county10 (celui de l'image) en haut de la liste des lecteurs. Cela s'exécute avant toute autre chose. En utilisant le support de fonctionnalité, j'évite d'écrire sur le fichier de formes st_county10 si la traduction est terminée.

Un dernier morceau, puisque j'avais un script d'arrêt python, j'ai dû ajouter cette ligne :

importer pyfme si FME_Status == True :

Au début du script d'arrêt pour arrêter également l'exécution du script d'arrêt.


Si je comprends bien le problème, je pense que vous souhaitez incorporer votre fichier de formes de comté en tant que lecteur, puis exécuter un transformateur de testeur par rapport à cela, puis acheminer votre travail en conséquence. Utilisez votre paramètre publié de nom d'état dans le testeur comme l'une des clauses de test, avec l'indicateur oui/non traité. Voici un quickie que j'ai préparé :

Cela recherche les entités avec un statut = « Autre » dans ce fichier de formes de villes, puis les itinéraires en fonction de la réussite/l'échec. Maintenant, je pense que FME est sensible à l'ordre dans lequel vous placez vos lecteurs dans l'espace de travail, donc si vous placez ce lecteur après en avoir déjà d'autres, les autres seront exécutés en premier. Essayez-le, vous devrez peut-être créer un nouvel espace de travail, mettre cette logique en premier, puis mettre vos autres lecteurs après cela pour obtenir l'ordre de lecture correct. Si vous voulez tuer le travail si la requête échoue, il peut y avoir un moyen de le faire avec pyfme, ou vous pouvez acheminer la fonctionnalité FAILED (lorsque le statut = déjà terminé) vers un transformateur Terminator.