Les cycles détectés constituent un problème majeur pour mon travail.Bonjour la communauté JMP
Les "cycles détectés" constituent un problème majeur (qui se produit fréquemment) en raison de la simulation de règles métier qui ne sont PAS cycliques par ligne. Cependant, JMP est incapable de gérer une dépendance très simple par ligne comme Excel. Franchement, je n'aime pas entendre que JMP n'est pas un tableur car je pense qu'une partie importante des utilisateurs a probablement rencontré ce genre de problème. Je lutte constamment contre ce problème car les données sont classées par enregistrements (c'est-à-dire date/heure) et, en tant que telles, sont soumises à des enregistrements antérieurs. Pourquoi JMP fournirait-il une fonction de décalage s'ils ne voulaient pas faciliter la gestion des opérations par ligne (et c'est génial, je l'utilise constamment). Mais cela ouvre le problème des cycles détectés, et encore une fois, du point de vue de la feuille de calcul, il n'y a pas de conflits. Excel peut le gérer facilement, JMP ne le peut pas. Je suis titulaire d'une licence Pro et un retour comme celui-ci à ma haute direction n'aurait franchement pas fière allure. Pour moi, le principal avantage de JMP Pro réside dans la capacité conviviale de modélisation complexe, de science des données et d'apprentissage automatique sur le Big Data. Le problème actuellement décrit concerne la convivialité de l’outil. Si je ne peux rien faire d'autre, je dois exporter depuis JMP pour pouvoir le faire avec Excel (ce qui est compliqué)
Mes intentions à partir de ce post :
1- Puis-je faire quelque chose pour attirer l'attention des développeurs sur ce problème ?
Par exemple J'ai essayé "Ignorer les erreurs" et "Ignorer tous les cycles" indépendamment - je m'attendais à ce que ceux-ci aient contourné les vérifications nécessaires et puissent peut-être laisser les formules s'exécuter (ce n'est pas le cas)
2- Existe-t-il une approche basée sur une formule (même s'il s'agit d'un script, cela doit être dans une formule) qui peut être utilisée ? Je joins 2 exemples ci-dessous - mêmes calculs, un en JMP et l'autre en xls.
A est une colonne d'entrée libre.
B s'initialise à A pour record = 1, puis A ou la valeur antérieure de B (c'est-à-dire lui-même utilisant la fonction de décalage) dépend de C
C est A - valeur antérieure de B
merci.
Ingénierie Qualité et ProcédésRe : Les cycles détectés sont un problème majeur pour mon travail.Mes paramètres réels étaient plus compliqués que ceux indiqués ici dans cet exemple simple. La solution de Julian est tout aussi acceptable, mais je pense qu'essayer de mettre toute la complexité dans une seule formule serait trop, c'est pourquoi j'ai opté pour le script de Craige (qui a fonctionné).
Je vais essayer d'envoyer une note aux développeurs JMP afin que (1) ils puissent peut-être clarifier les points "Ignorer les erreurs" et "Ignorer tous les cycles" - ce qui me semble encore une fois - donne l'impression que vous pouvez contourner un problème de cycles détectés, mais ils clairement pas. (2) et peut-être qu'ils peuvent envisager de mettre une option à JMP pour contourner si un véritable cyclique n'existe pas.
Re : Les cycles détectés sont un problème majeur pour mon travail.Ce script produit la même réponse que le tableau Excel et ressemble beaucoup à vos formules de colonnes.
dt = Open( "/Z:/cyclic_error_sample.jmp" );;
dt:b<<DELETEFORMULA> 1,
dt:a - lag(dt:b);//
,//
.
);
dt:b = If( dt:record == 1,
dt:a;//
, //
If( dt:c < 1.5,
dt:a;//
, //
lag(dt:b)
)
);
);</DELETEFORMULA>
Le script place l'évaluation de C avant l'évaluation de B, ligne par ligne, contrairement aux formules de colonne JMP qui évaluent colonne par colonne. Il m'a fallu une minute pour regarder vos formules pour voir que C doit d'abord être évalué, car cela ne dépend que de la ligne précédente de B. Ensuite, B peut évaluer car cela dépend de la valeur C que nous venons de calculer pour la ligne actuelle.
En l'étudiant un peu plus... copiez simplement la formule C dans la colonne B à la place de dt:C, comme ceci :
Removes the reference to column CRemoves the reference to column CSupprime la référence à la colonne C
Ce qui vous permettra de supprimer la colonne C si vous n’en avez pas vraiment besoin. Cela signifie également que les colonnes seront mises à jour automatiquement, contrairement au premier script que vous devrez réexécuter.
Re : Les cycles détectés sont un problème majeur pour mon travail.Salut @altug_bayram ,
Cela ressemble à un problème tellement frustrant à rencontrer tout le temps dans votre travail ! Je suis d'accord qu'il semble que "Ignorer tous les cycles" devrait faire ce qu'il dit et laisser les formules continuer parce que vous affirmez à JMP qu'aucune dépendance n'est réellement là. Cela ressemble à un défaut, et la meilleure façon de le transmettre aux développeurs est d'envoyer un e-mail support@jmp.com expliquant le problème comme vous l'avez fait ici.
Pour contourner le problème, la solution consiste à ne même pas créer le apparence d'une dépendance en copiant la formule entière de la colonne C et en remplaçant les références à C par cette formule dans la colonne B :

If( :Record == 1,
:A,
If( If( :Record > 1, :A - Lag( :B, 1 ), . ) < 1.5,
:A,
Lag( :B, 1 )
)
)
Vous pouvez conserver votre formule pour C telle quelle et votre tableau se remplira très bien. Cela ne déclenche pas d'alarme pour un cycle car, dans une formule unique, il est clair pour JMP que les références à B dans la formule de colonne pour B se produisent via Lag(). Il semble que lorsque les formules sont dans des colonnes différentes, la détection de cycle ne prend pas en compte le Lag() et voit simplement B faisant référence à C faisant référence à B.

J'espère que cela sera utile pour votre travail jusqu'à ce qu'une solution à « Ignorer tous les cycles » puisse être trouvée !
@julien