Évaluation d'une liste de colonnes variables en tant que chaîne et insertion dans une nouvelle formule de colonneJ'ai créé une variable qui est une chaîne de noms de colonnes.Ceci est à l'intérieur d'une boucle FOR donc cela changera à chaque boucle.
Voici un exemple de table pour démonstration, en réalité ma table est d'environ 400 colonnes avec des noms bizarres.J'essaie de regrouper les colonnes qui doivent être regroupées et de signaler la valeur maximale. 99,9 % du temps, il n'y aura qu'une seule valeur par ligne pour chaque colonne "like" à regrouper.
| Col1 | Col2 | Col3 |
| 22 | | |
| | 22 | |
| | | 32 |
| | 32 | |
| 1 | | |
| | | 56 |
| | 34 | |
Cette première partie est une boucle qui génère une liste de colonnes variables.Je n'ai pas tout le code ici mais voici un résumé.Cela fonctionne donc je ne veux pas enliser la discussion là-dedans.
VarCols = functional code here and the output is a string with this format: {"col1", "col2", "col3"}
Ensuite, mon code est censé créer une nouvelle colonne nommée 'VarName' (définie dans une autre partie de la boucle), puis insérer une formule indiquant la valeur maximale des colonnes dans VarCols.Mais je n'arrive pas à l'évaluer.Est-ce que je fais mal de cette façon?
DT << New Column(VarName, Numeric, "Continuous", formula(Maximum(columns(eval(VarCols)))));
Voici l'erreur spécifique si j'ai inséré le nom de la colonne variable pour éviter toute confusion :
Colonne VarName Formule interrompue
Nom Non résolu : colonnes 1 fois Aux lignes : 2 Opération : colonnes, colonnes( Eval( VarCols) ) /*###*/
Les erreurs d'évaluation de la formule ont été ignorées
Re : Évaluation d'une liste de colonnes variables en tant que chaîne et insertion dans une nouvelle formule de colonneVeuillez fournir la valeur de "TheExpr"
Re : Évaluation d'une liste de colonnes variables en tant que chaîne et insertion dans une nouvelle formule de colonneFan de longue date. La première fois que j'ai besoin de poster pour obtenir une réponse à une question.
C'est bien. J'ai juste réussi à arriver au même point dans mon code. L'étape suivante consiste à insérer cette chaîne dans une fonction dans une nouvelle colonne.
dt << New Column( "MinValue", numeric, continuous, Formula( min(Eval( Parse( TheExpr)))));
mais cela ne fonctionne pas pour moi. Toute aide serait appréciée.
Merci d'ignorer. Le cerveau ne fonctionnait pas très tard ce soir...
Re : Évaluation d'une liste de colonnes variables en tant que chaîne et insertion dans une nouvelle formule de colonneCela a fonctionné, merci @txnelson
Re : Évaluation d'une liste de colonnes variables en tant que chaîne et insertion dans une nouvelle formule de colonneUn autre membre de la communauté peut avoir un morceau de code plus efficace, mais voici comment je coderais votre demande
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
VarCols = {"NPN1", "PNP2", "NPN2"};
VarName = "NewCol";
// Create the JSL required to generate the new column
theExpr = "DT << New Column(VarName, Numeric, Continuous, formula(Maximum(:" || VarCols[1];
For( i = 2, i <= N Items( VarCols ), i++,
theExpr = theExpr || ",:" || VarCols[i]
);
theExpr = theExpr || ")));";
// Run the generated JSL
Eval( Parse( theExpr ) );