Consultando la tabla de datos jmp con JSLHola,
Necesito obtener una lista de nombres distintos para las edades de 12 y 13 en Big Class.jmp
Mi forma actual parece ser muy ineficiente. (Seleccione dónde, subconjunto...)
¿Cuál es la forma de hacer esto con Query();
Gracias.
Mi guion es:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
AgeList = {13, 15};
dt << Select where( Contains( AgeList, :Age ) > 0 );
SubsetDt = dt << Subset( Selected Rows, Columns( "name" ) );
Summarize( SubsetDt, DistinctNames = By( :(1) ) );
Close( SubsetDt, nosave );
Show( DistinctNames );Re: Consultar tabla de datos jmp con JSLMuchas gracias, esto es exactamente lo que necesito.
Re: Consultar tabla de datos jmp con JSLGracias Jim @txnelson .
@tom_abramov , hay múltiples maneras de hacer esto. Como usó la palabra consulta, sospeché que podría tener una selección de tipo SQL más compleja, así que usé la función JMP query().A continuación se muestra un método simple que no requiere sintaxis SQL. Una matriz asociativa es una lista con claves y las claves deben ser únicas.:name[idx] produce una lista de todas las filas con 12, 13 y 15 años. La matriz asociativa solo tiene nombres únicos con un valor asociado de 1. Los nombres únicos son las claves de la matriz asociativa.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
idx = dt << get rows where(Contains(Agelist,:age));
uniq_names = Associative Array( :name[idx] ) <<GET keys=""></GET>
Re: Consultar tabla de datos jmp con JSLHacer que la consulta cree una tabla de datos no es realmente un inhibidor.La siguiente secuencia de comandos es una simple modificación de la secuencia de comandos anterior, con la adición de mover el contenido de la columna Nombre de la tabla de datos final a una lista y luego eliminar la tabla de datos.En lo que respecta a cualquiera que ejecute el script, nunca se muestran tablas de datos.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ),invisible, Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
namesList = ndtQ:Name << get values;
Close( dt, NoSave );
close(ndtQ, nosave);Re: Consultar tabla de datos jmp con JSLEs muy útil, gracias.
Estoy usando JMP 15.
Una pregunta más: ¿puedo guardar el resultado de la consulta directamente en la lista en lugar de crear una tabla de datos?
Eso es porque no necesito la tabla, necesito una lista de nombres distintos.
Si no, es mucho mejor que Seleccionar dónde --> Subconjunto.
Gracias.
Re: Consultar tabla de datos jmp con JSL@tom_abramov ,
No mencionó qué versión de JMP está utilizando.No recuerdo si la función JMP query() estuvo disponible primero en JMP 12 o 13. Puede utilizar instrucciones SQL estándar en tablas JMP.Dado que Big Class solo tiene un nombre no único, Robert, para niños de 12 y 15 años, modifiqué su solicitud para niños de 12, 13 y 15 años.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ), Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
ndtQ << set name( "Unique BC Names" );
Wait( 3 );
Close( dt, NoSave );
Aquí está el resultado:
