Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignesCette option ou fonction simplifierait la création d'une transformation de colonne personnalisée pour résoudre le problème décrit par @hogi dans l'une des réponses ultérieures à compte unique
Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignesL'enquête sur ce problème est en cours et vous tiendrons au courant si nous parvenons à une solution.
Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignesAutre exemple : l'écriture d'une fonction personnalisée plus fluide comme un filtre Savitzky-Golay qui ignore les lignes exclues.Cela peut être calculé efficacement pour toute la colonne à la fois lorsque la première ligne est évaluée. Je voudrais mettre en cache les valeurs de toute la colonne lors de la première évaluation, puis renvoyer simplement le résultat pré-calculé dans chaque ligne au lieu de le recalculer. à chaque fois.
Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignesOui, je l'ai remarqué aussi, mais je suis sûr que vous l'utilisiez de cette façon. Il semble prendre la partie "constante" trop au sérieux pour ce que je voudrais. Nous devrons enquêter, mais cela nécessite probablement de nouvelles fonctionnalités pour la sensibilisation aux dépendances/réexécutions.
Pour des cas comme le vôtre, je fais normalement dépendre la formule d'une variable de table et je mets à jour la variable de table à chaque fois dans la boucle pour avoir une nouvelle valeur aléatoire.
Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignesSalut @XanGregg ,
Il se peut qu'il me manque quelque chose, mais je n'arrive pas à faire en sorte qu'As Constant réévalue lorsque les formules du tableau sont à nouveau exécutées.Il semble (probablement correctement) mettre en cache sa valeur tant que la table est ouverte. Voici un exemple plus complet qui résout ce problème en utilisant une variable globale.
Voir plus... Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignesAvez-vous vu la fonction As Constant(x) ? Cela devrait gérer la seule partie de la demande.
Local(
{startofweek = As Constant(
Random Uniform(
Col Min( :Timestamp ),
Col Max( :Timestamp ) - In Days( 7 )
)
)},
If( :timestamp > startofweek & :timestamp < startofweek + In Days( 7 ),
1,
0
)
)Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignesMerci pour l'exemple et les informations complémentaires @ih . Changement du statut en enquête.
Re : Option ou fonction permettant d'évaluer une formule de colonne personnalisée en même temps, ou de mettre en cache les valeurs entre les lignes - Statut modifié en : EnquêteRe : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignesVoici quelques cas d'utilisation potentiels, je sais qu'il y en a d'autres que j'oublie en ce moment.Beaucoup de ces problèmes peuvent être résolus facilement pour de petites tables, ou en utilisant plusieurs colonnes ou variables de table, mais fournir une variable de contexte de colonne les rendrait plus faciles.
- Utilisez une valeur aléatoire dans la formule de colonne afin qu'elle puisse être remplacée dans une simulation
// this value should be cached and re-used for all rows,
// but it should change each time the column is recalculated
startofweek = Random Uniform(
Col Min( :Timestamp ),
Col Max( :Timestamp ) - In Days( 7 )
);
If( :Timestamp > startofweek & :Timestamp < startofweek + In Days( 7 ),
1,
0
);
- Nombre de lignes depuis le début du dernier échantillon hors spécifications.
- Le temps jusqu'à la fin de cette campagne
- Moyenne mobile des 10 derniers échantillons pour ce code produit
Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignesJe pense que cet article pourrait démontrer le problème Création d'une fonction statistique personnalisée (formule) qui a byVar
Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignes - Statut modifié en : Besoin d'informations@ih Seriez-vous en mesure de partager un exemple de tableau de données qui illustre le problème que vous décrivez ?
Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignes@hogi - Vous prenez ici ma réponse dans le cas du support technique hors de son contexte. je faisais référence à Transformations personnalisées puisque c'est ce que vous avez demandé.
Je n'ai rien dit sur les fonctions personnalisées en général.
Dans l'éditeur de formule lui-même, il existe généralement des moyens de transmettre une référence de colonne à une fonction personnalisée, par exemple en l'enveloppant dans Expr(). Ou des moyens pour JMP de reconnaître qu'il doit utiliser une colonne, par exemple lors de l'envoi de messages.
Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignesaïe - la réponse est encore plus triste : *)

*) TS-00063463
Re : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignes
@ih a écrit:
La formule aurait également besoin d'accéder à la colonne entière au lieu de simplement à la ligne actuelle, de sorte que la référence de colonne doit être transmise sans être évaluée.
@Jeff_Perkinson , quant au TS-00063463, je pense que la triste réponse est : pas encore.
Ainsi, outre la vitesse, de nombreuses tâches sont tout simplement impossibles à mettre en œuvre via des fonctions personnalisées pour le moment.
statut: Enquêter -> ça semble prometteur 
J'espère qu'il existe un moyen de régler les fonctions personnalisées pour accepter les références de colonnes comme paramètre dans l'une des prochaines versions...
https://community.jmp.com/t5/Discussions/Column-reference-in-custom-function/mp/265085/highlight/true#M51645
Re : Option ou fonction permettant d'évaluer une formule de colonne personnalisée en une seule fois ou de mettre en cache les valeurs entre les lignesPour être précis, j'ai besoin de cette fonctionnalité pour les fonctions personnalisées qui sont ajoutées via :
ajouter des fonctions personnalisées (nouvelle fonction personnalisée ())
Les transformations personnalisées ne sont qu’une des applications de ce merveilleux framework.
modifier:
par exemple
Names Default To Here( 1 );
Add Custom Functions(
New Custom Function(
"COL",
"Median",
Function( {value, byGroup},
Col Median( value, byGroup )
),
<
<FORMULA category=""></FORMULA>
<P><A href="https://community.jmp.com/t5/Discussions/Fast-Way-to-calculate-quot-nested-quot-Col-aggregations-like-MAD/m-p/887467/highlight/true#M104961" target="_blank">https://community.jmp.com/t5/Discussions/Fast-Way-to-calculate-quot-nested-quot-Col-aggregations-like-MAD/mp/887467/highlight/true#M104961</A> </P>
Option ou fonction pour évaluer une formule de colonne personnalisée en même temps ou mettre en cache les valeurs entre les lignesCertaines formules de colonnes intégrées comme Col Mean() sont très rapides car elles ne calculent qu'une seule fois les valeurs coûteuses et les renvoient ou les modifient pour chaque ligne.Avec des formules personnalisées, cela est plus difficile à réaliser car chaque ligne est évaluée séparément.Parfois, l'utilisation d'une colonne séparée pour stocker les valeurs intermédiaires peut accélérer les choses (par exemple stocker les index de lignes qui répondent à certains critères, au lieu de les recalculer à chaque ligne), mais cela devient compliqué et difficile à suivre. S'il existait un concept de contexte de colonne tel que l'évaluation d'une ligne puisse accéder aux valeurs intermédiaires calculées dans la ligne précédente, alors un script pourrait calculer les résultats pour toutes les lignes à la fois, puis les renvoyer rapidement et transmettre les résultats intermédiaires à la ligne suivante. rangée. La formule aurait également besoin d'accéder à la colonne entière au lieu de simplement à la ligne actuelle, de sorte que la référence de colonne doit être transmise sans être évaluée.
Automatisation et scriptsRe : Option ou fonction pour évaluer une formule de colonne personnalisée en même temps, ou mettre en cache les valeurs entre les lignesLa moitié d'une solution - ou disons 1/4 :

est une fonctionnalité très utile que j'ai apprise il y a quelque temps grâce à une solution fournie par @txnelson :
https://community.jmp.com/t5/JMP-Wish-List/Option-or-function-to-evaluate-a-custom-column-formula-at-once/idc-p/695311/highlight/true# M5011
Si vous savez que la partie unique sera toujours donne le même résultat, vous pourriez envisager d'utiliser Comme constante une fonction personnalisée.
(ci-dessous le code adapté de https://community.jmp.com/t5/Discussions/Differentiate-between-entire-column-and-current-row/mp/677710/highlight/true#M86405 par @jthi )
Ce qui est intéressant : il ne sera évalué qu'une seule fois - et plus jamais (!)
En général, ce sera une version trop extrême de "once" 
Toute possibilité de modifier le comportement de Comme constante dans une Formule Personnalisée ?
Par exemple, exécutez-le à chaque fois ligne()==1 ?
Names Default To Here(1);
row_count = 10;
dt = New Table("test",
Add Rows(row_count),
New Column("Die X", set each value(row())),
New Column("Die Y", set each value(Random Integer(1, row_count * 2)))
);
dt << New Column("Formula As Constant", Numeric, Nominal, Formula(
As Constant(print("direct","");x_m = :Die X << get values);
Contains(x_m, :Die Y) > 0;
));
Add Custom Functions(
New Custom Function(
"test",
"myFunc",
Function( {},
As Constant(print("custom","");x_m2 = :Die X << get values);
Contains(x_m2, :Die Y) > 0;
)));
dt << New Column("Formula via Custom Formula", Numeric, Nominal, Formula(test:myFunc()));
Ré: Option ou fonction permettant d'évaluer une formule de colonne personnalisée en une seule fois ou de mettre en cache les valeurs entre les lignes - Statut modifié en : ReconnuRe : Option ou fonction permettant d'évaluer une formule de colonne personnalisée en une seule fois ou de mettre en cache les valeurs entre les lignesAvec JMP19, il y aura quelques améliorations :
par exemple, il sera possible de calculer les ordres de grandeur Col MAD() plus rapidement, même sans colonnes factices intermédiaires :
Méthode rapide pour calculer les agrégations « imbriquées » de Col... - comme MAD
Re : Option ou fonction permettant d'évaluer une formule de colonne personnalisée en une seule fois ou de mettre en cache les valeurs entre les lignesCela s'applique au type de fonctions personnalisées qui sont créées manuellement dans l'éditeur de formules - et avec une astuce pour les fonctions personnalisées qui sont créées via Fonction().
Ne contient pas les « Fonctions personnalisées » qui sont créées via l'ajout de fonctions personnalisées (nouvelle fonction personnalisée ().