¿Cómo se pueden ejecutar los comandos JSL después de que se cumplan las condiciones?Estimados usuarios de la comunidad JMP,
Soy nuevo en JMP y he estado enfrentando un problema. Con suerte, podría obtener ayuda de ustedes.
Tengo una tabla de datos. Me gustaría ejecutar un generador de gráficos para columnas solo algunos valores específicos.
Por ejemplo, me gustaría seleccionar celdas que sean AB766 y RSDF que pertenezcan a las columnas "monitor_set_name" y "measurement_set_name"; y otras columnas y filas correspondientes a "AB766" y "RSDF"

Luego, me gustaría ejecutar "Generador de gráficos" para la tabla que contiene la información que necesito.
Si "monitor_set_name" y "measurement_set_name" no contienen "AB766" y "RSDF", saltaré para ejecutar el "generador de gráficos"
¿Podrías aconsejarme?
Atentamente,
La personalización en masaRe: ¿Cómo se pueden ejecutar comandos JSL después de que se cumplan las condiciones?Estimado señor Brady,
Gracias por su apoyo. Aplicaré su sugerencia más adelante en mi guión.
Atentamente,
Re: ¿Cómo se pueden ejecutar comandos JSL después de que se cumplan las condiciones?Déjame probarlo Muchas gracias.
Por cierto, encontré un método que se ha sugerido en el foro y me funciona.
CHECK_U2_CT_HDF = Contains(
df << get column names( string ),
"centerline@u2_holdforceduration_2"
);
If( CHECK_U2_CT_HDF == 0,
df << New Column( "centerline@u2_holdforceduration_2",
Numeric,
Continuous,
Format( "Best", 10 )
)
);
¡Gracias por su fuerte apoyo!
Re: ¿Cómo se pueden ejecutar comandos JSL después de que se cumplan las condiciones?La función Try() es una forma de lidiar con esto.
U1_UCL_HDF =Try( Column( dt, "up_control_lmt@u1_holdforceduration_2" )[1],.);
if(isMissing(:U1_UCL_HDF),
add and populate the new column
);
U1_UCL_HDF tendrá un valor válido si la columna y la fila existen, pero si el intento falla, devolverá un valor que falta.por lo tanto, el flujo podría ser algo así como
Re: ¿Cómo se pueden ejecutar comandos JSL después de que se cumplan las condiciones?Estimado txnelson,
JMP dejará de ejecutarse cuando no pueda encontrar una columna a la que se hace referencia --> está en lo correcto
Quisiera aclarar mi pregunta. La cosa es que trato de obtener datos del sistema en mi empresa. Debido a las diferentes categorías de productos, la tabla de datos será diferente.
Por ejemplo:
Producto A: contiene la columna: up_control_lmt@u1_holdforceduration_2 y up_control_lmt@u2_holdforceduration_2
Producto B: solo contiene la columna: up_control_lmt@u1_holdforceduration_2
Ya que quiero crear un script que se pueda aplicar a ambos productos.
En su sugerencia, necesito agregar una columna más para el producto B si la tabla de datos del producto B no contiene la columna: up_control_lmt@u2_holdforceduration_2.
Por lo tanto, con la función que puedo usar para verificar si la tabla de datos del producto B contiene o no: up_control_lmt@u2_holdforceduration_2. --> si la tabla de datos contiene: up_control_lmt@u2_holdforceduration_2. , Agregaré una nueva columna a la tabla de datos.
Espero que puedas entender mi pregunta.
Atentamente,
Re: ¿Cómo se pueden ejecutar comandos JSL después de que se cumplan las condiciones?Estoy confundido.Indica que desea leer valores de una columna específica, celda 1, pero que no tiene dicha columna.
JMP dejará de ejecutarse cuando no pueda encontrar una columna referenciada.Por lo tanto, no continuará procesando una vez que se encuentre el error.
Si no tiene esa columna y desea tenerla, deberá agregar la columna a la tabla de datos y completar la celda 1 con el valor que desea que tenga.Esa es la solución....... pero no creo que realmente esté entendiendo la pregunta.
Re: ¿Cómo se pueden ejecutar comandos JSL después de que se cumplan las condiciones?Estimado Txnelson,
Funciona. Gracias por tu sugerencia. Me referiré a la Guía de secuencias de comandos para su estudio.
Mientras tanto, tengo más preguntas.
Me gustaría extraer el valor de la celda de la columna, luego asignar el valor a las variables ya que me gustaría usar variables para graficar.
Sin embargo, en caso de que mi tabla no contenga la columna: lo_control_lmt@u2_holdforceduration_2 o : up_control_lmt@u2_holdforceduration_2 , mi script no muestra ningún gráfico
Si elimino 2 líneas en mi secuencia de comandos a continuación, mi secuencia de comandos mostrará el gráfico
U2_UCL_HDF = Columna(dt,"up_control_lmt@u2_holdforceduration_2")[1];
U2_LCL_HDF = Columna(dt,"lo_control_lmt@u2_holdforceduration_2")[1];
Tiene alguna solución para este caso. Atentamente.
Mi guion:
U1_UCL_HDF = Column( dt, "up_control_lmt@u1_holdforceduration_2" )[1]; //extract value from cell
U1_LCL_HDF = Column( dt, "lo_control_lmt@u1_holdforceduration_2" )[1]; //extract value from cell
U2_UCL_HDF = Column( dt, "up_control_lmt@u2_holdforceduration_2" )[1]; //extract value from cell
U2_LCL_HDF = Column( dt, "lo_control_lmt@u2_holdforceduration_2" )[1]; // extract value from cell
NW = New Window( "KPP summarize",
Variability Chart(
Y( :HOLDFORCEDURATION_2 ),
X( :COMPLEVEL_1, :LINK_ID, :TEST_OR_BOND_HEAD_ID, :LOT, :BONDSTAGE, :CARRIER_X ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Connect Cell Means( 1 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
AIAG Labels( 0 ),
SendToReport(
Dispatch(
{"Variability Chart for HOLDFORCEDURATION_2"},
"2",
ScaleBox,
{Min( 332 ), Max( 641 ), Inc( 50 ), Minor Ticks( 1 ),
Add Ref Line( 0, "Dotted", "Medium Light Gray", "", 1 ),
Add Ref Line( U1_UCL_HDF, "Solid", "Red", "UCL_U1", 2 ),
Add Ref Line( U1_LCL_HDF, "Solid", "Red", "LCL_U1", 2 ), // put the value in here extract
Add Ref Line( U1_CT_HDF, "DashDot", "Red", "CL_U1", 2 ), // put the value in here extract
Add Ref Line( U2_UCL_HDF, "Solid", "BlueCyan", "UCL_U2", 2 ), // put the value in here extract
Add Ref Line( U2_LCL_HDF, "Solid", "BlueCyan", "LCL_U2", 2 ), // put the value in here extract
Add Ref Line( U2_CT_HDF, "DashDot", "BlueCyan", "CL_U2", 2 )} // put the value in here extract
)
)
)
);Re: ¿Cómo se pueden ejecutar comandos JSL después de que se cumplan las condiciones?Su variable "df" apunta a la tabla de datos subdividida.Cuando crea un informe a partir de una tabla de datos, no se convierte en parte de la tabla de datos.Es una entidad sobre sí misma.Por lo tanto, la forma más fácil de acceder al informe creado es especificar una variable para señalarlo.He hecho esto en la siguiente modificación de su script.
gb = df << Graph Builder(
La variable "gb" apunta al objeto Graph Builder.Más adelante en el código, el mensaje Guardar imagen se aplica al informe generado por la plataforma Graph Builder.
report(gb) << save picture( "C:\Users\lamquocb\image.jpg" );
Aquí está el script modificado.
names default to here( 1 );
dt = Open( "raw_data.csv", "invisible" );
dt << Select Where(
:monitor_set_name == "CSP_FAST_TC" & :spc_chart_subset == "STDDEV" & :measurement_set_name == "U1_X"
);
df = dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ), "invisible" );
gb = df << Graph Builder(
Size( 1056, 675 ),
Show Control Panel( 0 ),
Automatic Recalc( 0 ),
Variables(
X( :spc_txn_date ),
Y( :chart_value ),
Y( :lo_control_lmt, Position( 1 ) ),
Y( :up_control_lmt, Position( 1 ) ),
Y( :centerline, Position( 1 ) ),
Group Y( :monitor_set_name ),
Group Y( :measurement_set_name ),
Group Y( :spc_chart_subset ),
Wrap( :spc_entity )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 25 ), Connection( "Curve" ), Smoothness( 0.5 ) )
),
SendToReport(
Dispatch( {}, "spc_txn_date", ScaleBox, {Label Row( Automatic Font Size( 0 ) )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
25,
Properties( 2, {Line Color( 19 )} ),
Properties( 3, {Line Color( 0 ), Line Style( "Dotted" )} )
)}
)
)
);
report(gb) << save picture( "C:\Users\lamquocb\image.jpg" );
Le recomiendo encarecidamente que se tome el tiempo de leer la Guía de secuencias de comandos, disponible en la Biblioteca de documentación de JMP, que se encuentra en el menú desplegable Ayuda.
Re: ¿Cómo se pueden ejecutar comandos JSL después de que se cumplan las condiciones?Estimado txnelson,
Funciona. Apreciar mucho.
Intento seguir tu guía y aplicarla por mí mismo.
dt = Open( "raw_data.csv", "invisible" );
dt << Select Where(
:monitor_set_name == "CSP_FAST_TC" & :spc_chart_subset == "STDDEV" & :measurement_set_name == "U1_X"
);
df = dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ), "invisible" );
df << Graph Builder(
Size( 1056, 675 ),
Show Control Panel( 0 ),
Automatic Recalc( 0 ),
Variables(
X( :spc_txn_date ),
Y( :chart_value ),
Y( :lo_control_lmt, Position( 1 ) ),
Y( :up_control_lmt, Position( 1 ) ),
Y( :centerline, Position( 1 ) ),
Group Y( :monitor_set_name ),
Group Y( :measurement_set_name ),
Group Y( :spc_chart_subset ),
Wrap( :spc_entity )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 25 ), Connection( "Curve" ), Smoothness( 0.5 ) )
),
SendToReport(
Dispatch( {}, "spc_txn_date", ScaleBox, {Label Row( Automatic Font Size( 0 ) )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
25,
Properties( 2, {Line Color( 19 )} ),
Properties( 3, {Line Color( 0 ), Line Style( "Dotted" )} )
)}
)
)
);
df << save picture( "C:\Users\lamquocb\image.jpg" );
Sin embargo, encuentro otro problema en el que no pude guardar la imagen: el generador de gráficos para df.
Intento acceder a la ubicación en la que quiero almacenar la imagen, pero no puedo encontrar ninguna.
¿Tienes algún consejo?
Atentamente,
Re: ¿Cómo se pueden ejecutar comandos JSL después de que se cumplan las condiciones?Hola,
Si es nuevo en JMP, asegúrese de consultar el filtro de datos local y el selector de columnas. El filtro de datos locales probablemente lo ayudará aquí... Incluí un conmutador de columna en mi ejemplo solo para hacerle saber lo que puede hacer.
Simplemente haga clic en los elementos del menú para restringir su gráfico a los datos que desea considerar. No se requiere codificación y es fácil de usar... cualquiera puede usarlos.
Para obtener el filtro de datos locales, en el menú del triángulo rojo de Graph Builder, seleccione Agregar filtro de datos locales.
Para obtener el Cambiador de columnas, seleccione Rehacer > Cambiador de columnas en el menú principal. También deberá seleccionar la columna que desea intercambiar y las columnas entre las que desea rotar. Asegúrese de incluir la columna que desea intercambiar en este conjunto. Todas las columnas deben ser del mismo tipo de datos.
Ejecute el script a continuación para obtener un vistazo de estos en acción.
Salud,
Brady

Names Default To Here(1);
dt = open ("$Sample_Data\Car Physical Data.jmp");
Graph Builder(
Size( 526, 448 ),
Show Control Panel( 0 ),
Variables( X( :Country ), Y( :Gas Tank Size ) ),
Elements( Box Plot( X, Y, Legend( 8 ) ), Points( X, Y, Legend( 9 ) ) ),
Local Data Filter(
Show Histograms and Bars( 0 ),
Add Filter(
columns( :Type ),
Where( :Type == "Compact" ),
Display( :Type, N Items( 5 ) )
)
),
Column Switcher(
:Gas Tank Size,
{:Weight, :Turning Circle, :Displacement, :Horsepower, :Gas Tank Size}
)
);
Re: ¿Cómo se pueden ejecutar comandos JSL después de que se cumplan las condiciones?Para generar el JSL a continuación, simplemente ejecuté los pasos de forma interactiva y luego tomé el código del registro y lo pegué en una ventana de secuencia de comandos.
names default to here(1);
// Open Data Table: big class.jmp
// → Data Table( "big class" )
Open( "$SAMPLE_DATA/big class.jmp" );
// Select matching cells
Data Table( "big class" ) << Select Where( :age == 12 & :sex == "F" );
// Subset data table
// → Data Table( "Subset of big class" )
Data Table( "big class" ) << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
// Report snapshot: Subset of big class - Graph Builder
Data Table( "Subset of big class" ) << Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
);
// Invert current selection
Data Table( "big class" ) << Invert Row Selection;
// Subset data table
// → Data Table( "Subset of big class 2" )
Data Table( "big class" ) << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
// Report snapshot: Subset of big class 2 - Graph Builder
Data Table( "Subset of big class 2" ) <<
Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);