¿Cómo hacer referencia a una columna de transformación?Cuando genero una columna de transformación enviando Transformar columna a un tabla de datos , obtengo una referencia a la columna como valor de retorno.
Cuando genero una columna de transformación enviando Transformar columna a un objeto GraphBuilder, obtengo una referencia a un Graph Builder como valor de retorno, sin referencia a la columna 
Entonces, pedirle a esta "Columna" col2 su nombre no funciona.
¿Dónde puedo encontrar más información sobre cómo hacer referencia a columnas de transformación?
por ejemplo, cómo obtener una referencia sólida a la columna (algo como: col2).
Qué bueno que no sea necesario hacer referencia a la columna mediante un símbolo. Parece estar bien usar el nombre de la columna, incluso está bien sin comillas (!?)
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");
Automatización y secuencias de comandosRe: ¿Cómo hacer referencia a una columna de transformación?Soporte Jmp: TS-00056243
. no puede hacer referencia a una columna de transformación creada en el contexto de la plataforma.Esto significa que no puede quitarlo ni reemplazarlo.Si desea tener una referencia a una columna de transformación, debe crear la columna en el contexto de la tabla de datos.
Entonces, si desea cambiar o cambiar el nombre de una columna de transformación (en una plataforma), debe hacerlo a través de la GUI, no a través de JSL.
(# ¿Qué no es posible a través de JSL?)
Deseo agregado:
mejoras para Transformar columna
Re: ¿Cómo hacer referencia a una columna de transformación?Mientras tanto ...
la única solución parece ser generar la columna de transformación con alcance de mesa y volver a colocarlo en la trama cada vez que se actualice.
Para ilustrar la idea, generé un gráfico GraphBuilder que cuenta los M y F seleccionados.
Imagínese lo poderoso que puede ser este enfoque...
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: ¿Cómo hacer referencia a una columna de transformación?Beneficio de este enfoque en comparación con generar una columna de Fórmula:
- La columna Transformar es sólo temporal, no se guardará.
comparable:
- con la necesidad de generar la columna de transformación con alcance de tabla, también es visible desde otras plataformas
peor:
- el código se volvió bastante largo en comparación con el enfoque con una columna de fórmula real: Re: Transformar columna: error con filas excluidas
Para una columna de fórmula real, basta con actualizar la lista de entrada y luego la fórmula se volverá a evaluar.
Con la columna de transformación es como eliminar la columna y generarla nuevamente.
¿por qué?
Para las columnas Transformar, se puede usar
<< reset transform()
para actualizar los valores.
pero, sorprendentemente, el informe no detecta la actualización y muestra los valores antiguos, incluso después de eliminar y agregar 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 informe de creación de gráficos recién generado ( gbnuevo ) muestra los nuevos valores.
-> Parece que el primer generador de gráficos utiliza algunos valores almacenados que no se actualizan cuando se actualiza la columna de transformación.
Re: ¿Cómo hacer referencia a una columna de transformación?¿Esto cuenta como solución?
mmm...
El soporte de Jmp [TS-00056243] es muy claro:
La respuesta corta es que no hay forma de cambiar la columna de transformación con un cambio en el filtro de datos local.
[uno de nosotros] ha estado trabajando con otros en soporte técnico y desarrollo del problema, y no hay ninguna solución disponible.
Re: ¿Cómo referenciar una columna de transformación?No hay forma de hacer que la columna de transformación cambie con un cambio en el filtro de datos local
aún no ...