Comportement Max () - différent de JMP 12 vs JMP 11?Pourquoi les éléments suivants ne fonctionnent-ils plus dans JMP 12?
Exemple, j'ai une colonne "WW" avec des entrées comme ("17WW01", "17WW02", "17WW03" ... "17WW05").
Et je veux trouver la dernière semaine de travail dans la colonne "WW" (caractère / nominal dans les deux versions de JMP):
current_ww = Max(Associative Array(:WW << Get As Matrix()) << Get Keys);
JMP 11.1.1 => cela fonctionne bien. current_ww = "17WW05"
JMP 12.2.0 => cela ne fonctionne plus. current_ww =.
Pourquoi donc? Est-ce que Max () est maintenant super restrictif dans JMP 12? DJ
Re: comportement Max () - différent de JMP 12 vs JMP 11?Merci pour vos commentaires à ce sujet. Nous aurions dû émettre une note de compatibilité JSL avec ce changement - une partie du problème est que le changement a affecté un certain nombre de fonctions numériques. Nous mettrons à jour la documentation avec une version ultérieure.
Il est à noter que la fonction n'a jamais vraiment fonctionné correctement sur les chaînes. Notez que développer l'exemple ci-dessus:
lst <SPAN class="token operator">=</SPAN> <SPAN class="token punctuation">{</SPAN><SPAN class="token string">"17WW01"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"17WW02"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"17WW03"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"17WW04"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"17WW05"</SPAN><SPAN class="token punctuation">}</SPAN><SPAN class="token punctuation">;</SPAN>
Show(Max<SPAN class="token punctuation">(</SPAN>lst<SPAN class="token punctuation">))</SPAN><SPAN class="token punctuation">;<BR />Show(Min(lst));</SPAN>
Les deux réponses reviennent pareil. Le bogue dans JMP 11 (et les versions antérieures) est que le résultat que vous voyez est un effet secondaire de l’évaluation des arguments.
Re: comportement Max () - différent de JMP 12 vs JMP 11?"Cela a été modifié exprès - Max () est une fonction numérique, comme Mean () ou Std Dev ().
Pour les chaînes, vous pouvez utiliser Trier par ordre croissant ou Trier par ordre décroissant. Par exemple:"
Mais ce n'est pas ce qui est écrit sur le conseil d'aide en vol stationnaire JMP12. Il dit qu'il peut aussi faire un maximum de chaînes dans JMP12. Alors yeh, ça a changé, mais la documentation JMP12 n'a pas pu changer. C’est la raison pour laquelle les utilisateurs n’aiment pas passer aux nouvelles versions de JMP, à cause de changements cachés comme celui-ci. Dans mon cas, un script JSL critique pour mon entreprise fonctionnait très bien dans JMP11, puis nous avons migré vers JMP12 et cela a provoqué un blocage. DJ
Re: comportement Max () - différent de JMP 12 vs JMP 11?Et bien sûr, cela est revenu me hanter aujourd'hui sur un scénario critique. (migration de JMP11 vers JMP12). Je vais en informer JMP, même s’ils ne feront probablement rien, je suppose. Certainement un bogue JMP12 dans mon esprit, car la fonction max indique qu’elle peut trouver le maximum d’une liste de chaînes (comme elle fonctionnait très bien dans JMP11). DJ
Re: comportement Max () - différent de JMP 12 vs JMP 11?Je l'ai démonté d'une manière différente:
lst = {"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"};
Max(lst);
Cela renvoie une valeur dans JMP 11 mais une valeur vide dans 12 ou 13. Je suppose que la solution consiste à trier la liste et à prendre le dernier élément. Pas sûr que le changement de comportement soit un bug ou une fonctionnalité.
Re: comportement Max () - différent de JMP 12 vs JMP 11?Cela a été changé exprès - Max () est une fonction numérique, comme Mean () ou Std Dev ().
Pour les chaînes, vous pouvez utiliser Trier par ordre croissant ou Trier par ordre décroissant. Par exemple:
current_ww = Sort Descending(Associative Array(:WW << Get As Matrix()) << Get Keys)[1];
Re: comportement Max () - différent de JMP 12 vs JMP 11?Je l'ai démonté pour voir où il tombait en panne. Je pense que c'est un bug. Voici la première partie:
aa = Associative Array( :WW << Get As Matrix );
k = aa << Get Keys;
Cette expression est évaluée à:
Associative array( 5 elements ) assigned.
{"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"}
Enfin, j'ai fait une expression valide
max expr = Expr( Maximum() );
For( item = 1, item <= N Items( k ), item++,
Insert Into( max expr, k[item] );
);
Show( Name Expr( max expr ) );
J'obtiens ce résultat:
Name Expr(max expr) = Maximum("17WW01", "17WW02", "17WW03", "17WW04", "17WW05");
Ceci est un appel valide à la fonction Maximum. Si les arguments multiples apparaissent comme ceci et non dans une liste ou une matrice, ils doivent tous être numériques ou toutes les chaînes de caractères. Il est clair que cet exemple répond à l'exigence. Lorsque j’évalue cette expression, j’obtiens le résultat suivant:
need arguments to be scalars, matrices, or lists in access or evaluation of 'Maximum' , Maximum/*###*/("17WW01", "17WW02", "17WW03", "17WW04", "17WW05")
Si j'essaie d'utiliser la liste de clés d'origine:
Name Expr(max expr) = Maximum({"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"});
Je ne reçois pas le message d'erreur. Je ne reçois que la valeur manquante comme rapport dans le message d'origine.
On dirait un bug.
Re: comportement Max () - différent de JMP 12 vs JMP 11?Apparemment cela a changé. Ni JMP 12 ni JMP 13 ne renvoient les mêmes résultats que JMP 11.