comment référencer une colonne de transformation ?Lorsque je génère une colonne de transformation en envoyant Transformer la colonne à un tableau de données , j'obtiens une référence à la colonne comme valeur de retour.
Lorsque je génère une colonne de transformation en envoyant Transformer la colonne à un objet GraphBuilder, j'obtiens une référence à un Graph Builder comme valeur de retour - aucune référence à la colonne 
Donc, demander son nom à cette "Colonne" col2 ne fonctionne pas.
Où puis-je trouver plus d’informations sur le référencement des colonnes de transformation ?
par exemple, comment obtenir une référence solide à la colonne (quelque chose comme :col2).
C'est bien de ne pas avoir à référencer la colonne par un symbole. Cela semble acceptable d'utiliser le nom de la colonne - même OK sans guillemets (!?)
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder();
col1 = dt << Transform Column ("col1Name", Formula(1/:height));
col2 = gb << Transform Column ("col2Name", Formula(1/:height));
Show(Name Expr(col1));
Show(Name Expr(col2));
gb << Variables(X(:height), Y (col1));
// doesnt work :(
gb << Variables(X(:height), Y (col2));
gb << Variables(X(:height), Y ("col2Name")); //works
gb << Variables(X(:height), Y (col2Name)); // works (!?)
Show(col1 << get name());
Show(col2 << get name());
Show(Column(dt, "col1Name"));
Try(Show(Column(dt, "col2Name")), "dt doesn't know the column");
Automatisation et scriptsRe : comment référencer une colonne de transformation ?Prise en charge Jmp : TS-00056243
. vous ne pouvez pas référencer une colonne de transformation créée dans le contexte de la plateforme.Cela signifie que vous ne pouvez pas le supprimer ni le remplacer.Si vous souhaitez avoir une référence à une colonne de transformation, vous devez créer la colonne dans le contexte de la table de données.
Ainsi, si vous souhaitez modifier ou renommer une colonne de transformation (dans une plateforme), vous devez le faire via l'interface graphique – et non via JSL.
(# Qu'est-ce qui n'est pas possible via JSL ?)
Souhait ajouté :
améliorations pour la colonne de transformation
Re : comment référencer une colonne de transformation ?En attendant ...
la seule solution semble être de générer la colonne de transformation avec portée de table et de le remettre dans le tracé à chaque fois qu'il est mis à jour.
Pour illustrer l'idée, j'ai généré un tracé GraphBuilder qui compte les M&F sélectionnés.
Imaginez à quel point cette approche peut être puissante…
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
colName = "count_"||Char(Random Integer(100000));
Eval(Eval Expr(gb = dt << Graph Builder(
Transform Column(
Expr(colName),
"Table Scope", // essential because otherwise the replace(1) won't work
Formula( Col Number( 1,:sex ) )
),
Variables( X( :sex ), Y( Expr(colName) ) ),
Elements( Bar( X, Y ) ),
Local Data Filter(Add Filter(columns( :sex, :name )))
)));
ldf = (Current Report()["Local Data Filter"] << get scriptable object);
myRowsOld=[];
fch = Function( {x},
myRows = ldf << Get Filtered Rows;
If( not(nrows(myRows)==nrows(myRowsOld))| not(asList(myRows) == asList(myRowsOld)),
myRowsOld = myRows;
Eval(
Substitute(
Expr(
dt << Transform Column(
_colName_,
//"Table Scope", // gb doesn't understand replace(1) -> we have to talk to the table -> no Table Scope needed
Formula(
Col Number( 1, :sex, Contains( _myRows_, Row() ) > 0 )
),
Replace( 1 )
)
),
Expr( _myRows_ ), myRows, Expr(_colName_), colName
)
);
gb << add variable({ Column(colName), Role("Y") }); //replacing the transform column removes it automatically from the graph
dt << Show Transforms();
);
);
current report() << on close(dt << delete column(colname));
rs = ldf << Make Filter Change Handler( fch );
dt << Show Transforms();
Re : comment référencer une colonne de transformation ?Bénéfice de cette approche par rapport à la génération d'une colonne Formule :
- La colonne Transformation est juste temporaire, elle ne sera pas sauvegardée.
comparable:
- avec la nécessité de générer la colonne de transformation avec une portée de table, elle est également visible depuis d'autres plateformes
pire:
- le code devenait assez long par rapport à l'approche avec une vraie colonne de formule : Re : Transformer la colonne : bug avec les lignes exclues
Pour une vraie colonne de formules, il suffit de mettre à jour la liste d'entrée et la formule sera ensuite réévaluée.
Avec la colonne de transformation, c'est comme supprimer la colonne et la générer à nouveau.
pourquoi ?
Pour les colonnes Transform, on peut utiliser
<< reset transform()
pour actualiser les valeurs.
mais étonnamment, le rapport ne remarque pas la mise à jour et affiche les anciennes valeurs - même après avoir supprimé et ajouté la variable :

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// transform column with table scope
global:a = 2;
dt << Transform Column(
"sqrt[height]",
Formula( global:a * Sqrt( :height ) ),
Replace(1);
);
Show( :"sqrt[height]"n[1] );
gb = Graph Builder(
Variables( X( :height ), Y( :"sqrt[height]"n ) )
);
global:a = 30;
// clear the cache
:"sqrt[height]"n << Reset Transform();
// new values
Show( :"sqrt[height]"n[1] );
wait(2);
// try to update the GraphBuilder
gb << remove variable(2);
wait(2);
// unfortunately, still the old values !?!?!
gb << add variable({:"sqrt[height]"n, Role("Y")});
// a new GraphBuilder starts with updated values !
gbnew = Graph Builder(
Variables( X( :height ), Y( :"sqrt[height]"n ) )
);
Un rapport de création de graphiques nouvellement généré ( gbnouveau ) affiche les nouvelles valeurs.
-> Il semble que le premier générateur de graphiques utilise certaines valeurs stockées qui ne sont pas actualisées lorsque la colonne de transformation est actualisée.
Re : comment référencer une colonne de transformation ?Est-ce que cela compte comme une solution ?
hum...
Le support de Jmp [TS-00056243] est très clair :
La réponse courte est qu'il n'existe aucun moyen de modifier la colonne de transformation en modifiant le filtre de données local.
[l'un de nous] a travaillé avec d'autres en matière de support technique et de développement sur ce problème, et aucune solution n'est disponible.
Re : comment référencer une colonne de transformation ?il n'existe aucun moyen de modifier la colonne de transformation en modifiant le filtre de données local
pas encore ...