Vocero
|
Transcripción
|
| Jordan Hiller |
Hola a todos. ¡Soy Jordan Hiller y esta charla es Robar este código! Tres actualizaciones para las secuencias de comandos obtenidas del registro mejorado. |
| |
Y aquí está la inspiración para esta charla. Es un libro de Abbie Hoffman, una provocadora y activista. Sí, llamó a su libro, Roba este libro, que es un gran título. No estoy seguro de que sea un gran plan de negocios ponerle ese nombre a tu libro, pero de todos modos es muy pegadizo. |
| |
Entonces, ¿por qué robar este código? JMP quiere que robes el código. La idea es que apunte y haga clic y haga su análisis en JMP, |
| |
y ese código detrás de su apuntar y hacer clic se guarda. Se guarda en el registro mejorado y puede tomarlo y reutilizarlo. |
| |
Y eso es aproximadamente el 90% de su guión de producción. Vas a tomar eso y reutilizarlo para que puedas |
| |
Automatice tareas comunes y hágalo con el clic de un botón, en lugar de una secuencia de apuntar y hacer clic. Así que ese es todo el objetivo aquí, vas a ahorrar |
| |
script del registro mejorado y esos son los huesos, el esqueleto de su script de producción. |
| |
Queda alrededor del 10% que necesita escribir usted mismo, y ese es nuestro objetivo para esta charla. Vamos a hablar sobre algo de ese tejido conectivo que mantiene unidos los guiones de producción. |
| |
En esta charla, me voy a centrar contigo, ya sabes, no tanto en el meollo de la sintaxis, |
| |
mucho más en el panorama general, y eso está en línea con lo que creo que es una buena manera de aprender a programar JSL. Es mucho mejor tomar el código existente y aprender con el ejemplo. Usa ese código. |
| |
Encuentra ese fragmento que hace lo que quieres hacer. Lo encontrará en la comunidad de usuarios de JMP o tal vez en la guía de secuencias de comandos. |
| |
Y simplemente cópielo y adáptelo para su uso. No es necesario que conozca todas las complejidades de la sintaxis. Llegarás muy lejos de esa manera. El aprendizaje de la sintaxis surge a medida que adquiere experiencia. |
| |
Así que vamos a hablar de tres estudios de caso sobre las cosas que puede hacer para mejorar su código desde el registro mejorado, pero primero hagamos una revisión de JSL. Tal vez sea una introducción a algunos conceptos básicos de JSL para algunos de ustedes. |
| |
Entonces, lo importante que debe saber sobre JSL si está comenzando es que todo es un objeto. Todo lo que tu |
| |
quiere hacer algo en un objeto, por lo que incluye tablas de datos y columnas en tablas de datos y plataformas, como la plataforma de distribución, el generador de gráficos, Ajustar Y por X, |
| |
y los informes que provienen de esas plataformas. Entonces, cuando tienes objetos, la forma en que los operas es enviarles mensajes. Entonces los objetos reciben mensajes. Aquí hay un ejemplo realmente simple que copié del registro mejorado. |
| |
Abra la tabla de datos de Big Class en el directorio de datos de muestra y ejecute un análisis de distribución simple, a la derecha. Y así es como se ve ese código, recién copiado del registro. |
| |
Ahora. |
| |
Lo que queremos hacer, lo primero que queremos hacer es nombrar la tabla de datos. Dale un nombre, y para eso tomé el código de la línea cinco aquí y lo mejoré. I |
| |
agregó este bctable = antes del resto, antes de la parte abierta de la declaración, de acuerdo. Y lo que hace es que, cuando abrimos esa tabla de datos, creamos este nombre, bctable. Sabes, elegí bctable, verás dt en la documentación. Usa lo que quieras, esto lo asignas tú. |
| |
Así que ejecutemos esto resaltándolo y haciendo clic en el botón Ejecutar, abriendo Big Class y asignando simultáneamente el nombre bctable. Ahora, la virtud de hacer eso, ¿por qué es importante? Es porque ahora tengo esto. |
| |
resolver. Es un gancho que puedo usar en el código más tarde, bctable. Siempre que digo bctable me refiero a Big Class. |
| |
Entonces |
| |
aquí está la siguiente línea, pero el comando de distribución, y también lo modifiqué. Y ya sabes, antes de aquí, desde el registro, es un comando de distribución simple. No tiene ... |
| |
no apunta a una tabla de datos. Cuando lo ejecuta de esta manera, JMP simplemente lo ejecutará en la tabla de datos que tiene el foco, |
| |
la tabla de datos actual, que resulta ser de gran clase, porque la abriste justo antes de eso, está bien. Pero siempre es bueno ser explícito. Es una buena idea decir explícitamente en qué tabla de datos desea operar, por lo que la ejecutaremos de esta manera. |
| |
bctable, y luego las flechas dobles y luego los comandos de distribución. Así que eso es lo que hemos agregado, que se puede combinar con las flechas dobles. |
| |
Y esta es la sintaxis para enviar un mensaje. Entonces, estamos enviando el mensaje de distribución a la derecha a la tabla de datos, por el que se nombra bctable, a la izquierda. Y puedes ver que eso es Big Class cuando coloco el cursor sobre bctable. Entonces corriendo todo |
| |
obtenemos el informe de distribución |
| |
que queríamos. |
| |
Ahora, aquí está ... podemos llevar esto un paso más allá y, a menudo, necesitamos hacer esto. Vamos a crear un nombre para la plataforma a medida que la ejecutamos, así que |
| |
aquí hay una línea que incorpora tanto la flecha doble como la igual, de acuerdo. Entonces, eh ... leamos esto de derecha a izquierda. Vamos a tomar ese mensaje de distribución y enviarlo al bctable. |
| |
Y el resultado de todo eso, que es la plataforma, lo vamos a guardar en esta variable que llamo distplat. |
| |
Ejecutemos eso. |
| |
Muy bien, se ve igual, pero la diferencia es que ahora tengo esta variable JSL distplat que puedo usar más adelante en mi código. |
| |
¿Para qué lo usarías? Puede usarlo para agregar opciones de triángulo rojo a la salida, así que aquí traigamos eso ... |
| |
llevemos ese informe de distribución donde pueda verlo. |
| |
Y vamos a tomar ese objeto distplat, esa es la ... esa es la plataforma de distribución. |
| |
Mira, colocándote sobre él, y ejecutemos esta línea. Active el gráfico de quintiles normal en la plataforma de distribución. Ahí está. |
| |
Bueno. |
| |
El último paso es tomar la plataforma, llevar este objeto aquí y |
| |
obtener un informe de él, un objeto de informe. Esa es esta línea. Envíe el mensaje de informe al objeto de la plataforma y ahora obtenemos un objeto de informe. |
| |
Y debemos hacer esto si desea acceder a estos valores en su código, cualquier número o gráfico o elemento gráfico en el informe, lo necesitará, de acuerdo. Este objeto rdistplat. Así que ejecutándolo una vez más, rdistplat. |
| |
Lo ejecuté y no ves nada visiblemente, pero lo que sucedió es que ahora tengo este objeto, rdistplat. Dice que es una caja de presentación, y más adelante hablaremos sobre cómo puede usar eso para acceder a los números aquí en el informe. |
| |
Está bien, voy a borrar mi registro |
| |
y empezar con nuestro |
| |
estudios de caso. |
| |
Entonces, la primera técnica que vamos a aprender es repetir el mismo comando una y otra vez en diferentes columnas en la tabla de datos, iterando sobre columnas con bucles usando para cada comando. Entonces |
| |
esta es una necesidad muy común, a veces es solo algo simple que debe hacer, como cambiar el formato o el tipo de modelado de una columna. |
| |
Podría ser muy complejo como |
| |
tomando ... tomando una transformación de la columna y ejecutando un gráfico de control y haciendo algo con ese gráfico de control. Así que sí, escala; esta técnica escala. |
| |
Así es como vamos a lograr esto en código JSL. Apuntaremos y haremos clic primero, a la derecha, haremos lo que queramos hacer. Hágalo para una sola columna, y luego tomaremos ese código usando el registro mejorado, |
| |
y ese es el esqueleto de nuestro guión. Y lo vamos a modificar para que recorra todas las columnas en las que queremos realizar esa acción. |
| |
El método que usaremos para hacer bucles, para iterar, es para cada uno, y se introdujo en JMP 16, por lo que esta técnica no funcionará en versiones anteriores de JMP. |
| |
Esto también usa un concepto llamado listas JSL, por lo que también hablaremos un poco sobre eso. |
| |
Está bien, voy a empezar |
| |
en JMP, déjame empezar por la ventana de inicio. |
| |
Y voy a ... déjame revisar el registro, asegurarme de que esté limpio. No, tengo que eliminar una cosa, borrar el registro. Bien, apuntemos y hagamos clic en lo que queremos hacer. Voy a abrir una tabla de datos llamada sc20. |
| |
Esta tabla de datos está disponible para usted en los materiales de presentación que encontrará en línea. |
| |
Y mirando esta tabla de datos, tiene una columna de ID y luego tiene aproximadamente 20 |
| |
columnas de datos. Estos tienen muchos, muchos lugares decimales, demasiada precisión y quiero truncarlos en dos lugares decimales. Así que cambiemos el formato para que solo mostremos los dos primeros lugares decimales de los datos. |
| |
Esa es una operación simple de apuntar y hacer clic. Haga clic derecho, vaya a la información de la columna, |
| |
y cambiaremos el formato de visualización del mejor predeterminado para corregir el decimal con dos lugares. |
| |
Bien, y ahora hicimos eso para NPN1, tenemos otras 19 columnas para las que nos gustaría hacer eso también. |
| |
Examinemos el registro mejorado. |
| |
Y esto es todo, este es el código que necesitamos para lograr eso cambiando el formato de una columna, NPN1, correcto. Y luego, para reutilizar esto, vaya al triángulo rojo y puede guardar el script en su portapapeles o incluso en una nueva ventana de script. |
| |
Voy a cambiar a otro archivo, donde he trabajado un poco y así podemos profundizar un poco más en esto. |
| |
Bueno. |
| |
Así que las dos primeras líneas aquí ... tres líneas, este es el código del registro. Muy bien, lo primero que estamos haciendo es abrir la tabla de datos. |
| |
Y es posible que haya notado que he editado un poco, edité mi nombre de ruta largo, mi ruta de directorio larga a este archivo. |
| |
Si lo ejecuta de esta manera, |
| |
funcionará siempre que la tabla de datos JMP, sc20, esté en el mismo directorio que este archivo JSL. Así que es como una ruta de archivo local a este mismo directorio en el que se encuentra actualmente. |
| |
De todos modos, desde el registro, solo estamos abriendo la tabla de datos, y luego estamos aquí, aplicando ese cambio de formato, decimal fijo de 10 caracteres y dos decimales. |
| |
La tabla ... la referencia de la columna aquí a la izquierda es una forma de abordar una columna. Hay varias formas diferentes, pero esta es una muy común que verá con el colon. Tabla ref ... ref ... referencia en el lado izquierdo de los dos puntos y el nombre de la columna en el lado derecho de los dos puntos. |
| |
Así que esto es nuevamente directamente del registro. |
| |
JMP utiliza esta forma en el registro para abordar la tabla de datos. Creo que es mejor hacer lo que hablamos, es mejor dar el nombre JSL al abrirlo y luego usar ese nombre JSL en el futuro. Entonces, en lugar de este asunto antes de los dos puntos, lo cambié a dt. |
| |
Así que aquí está el mismo código, solo ... simplemente arreglado un poco, y cuando lo ejecuto, sí, tiene el efecto correcto. Abre la tabla de datos y |
| |
cambia el formato a dos lugares decimales. De acuerdo, sí, ahora que tenemos eso, es bastante fácil |
| |
cambie las otras 19 columnas, a la derecha. Ahí ... aquí está NPN1, y luego puedo copiar esa línea y cambiar a todos y escribir 19 veces más. |
| |
Sí, por supuesto que eso es ineficiente, y una de las mejores cosas de la programación es que tú ... no tienes que hacer lo mismo más de una vez, ¿no? Así que se vuelve más fácil de mantener si ... si escribimos esto una vez, en lugar de escribirlo 19, 20 veces. |
| |
Así que así es como lo hacemos. Lo primero que hacemos es obtener una lista de todas las columnas en las que queremos operar. |
| |
Y cuando digo una lista, no me refiero a una lista genérica. Estoy hablando de una lista JSL, estoy hablando de una estructura de datos particular que usa cuando está programando en JSL. |
| |
Una lista es solo un par de objetos contenidos en un contenedor y así es como la usamos. Entonces, aquí hay tres formas de crear una lista de objetos de columna. |
| |
La primera forma es hacerlo manualmente, es simplemente escribir todo. Entonces, si tuviera que ejecutar esto, |
| |
referencia de tres tablas ... referencias de tres columnas, NPN1, PNP1, PNP2. |
| |
Tenga en cuenta las llaves tanto en mi código como cuando coloco el cursor sobre esa variable CNames. Cuando ve esas variables rizadas ... esas llaves, sabe que está lidiando con la lista en JSL. |
| |
Bien, esa es una forma de obtener una lista. Hablemos de un par de otras formas. Este es el que usaremos para este ejemplo, en última instancia. Este es |
| |
diciendo, oye, obtén todas las columnas continuas en mi tabla de datos actual, bueno, en la tabla de datos que nombro aquí, dt. Entonces, objeto de mensaje, crea una nueva lista. |
| |
Así que ejecutemos este. |
| |
Y ahora, si coloco el cursor sobre CNames, verás que eso es lo que queremos. Esa es la lista de los 20 en los que queremos operar. |
| |
De acuerdo, y la última forma en que puede hacer esto es dejar que el usuario seleccione qué columnas en la tabla de datos. Eso se parece a esto. Solo voy a seleccionar dos. Seleccionemos IVP y PNP4, dos columnas seleccionadas. |
| |
Y si ejecuto esto, |
| |
obtenemos una lista con solo esas dos columnas seleccionadas de la tabla de datos. |
| |
Muy bien, sin embargo, obtienes esa lista, el siguiente trabajo es aplicar esa línea de formato a cada uno de los elementos de la lista, y eso se llama bucle o iteración. |
| |
Así que esta es la forma antigua de hacerlo. Utiliza el comando for en JMP. Eso es lo que harías antes de JMP 16 y lo puse aquí, para tu referencia en caso de que todavía estés en JMP 15. Pero, |
| |
ya sabes, es un poco complicado y difícil buscar nuevos usuarios, por lo que hay algo mucho más compacto y legible que puedes hacer si estás usando una lista en JMP 16. Si quiero repetir una acción en cada elemento de una lista, puedo usar esto para cada comando. |
| |
Muy bien, echémosle un vistazo y veamos qué está haciendo. Se necesitan tres argumentos, los argumentos están separados por comas, los llevaremos de derecha a izquierda. |
| |
El último argumento es ese comando de formato, correcto, aplicando el formato, y en lugar de hacerlo para dt NPN1, en lugar de hacerlo para una columna, puse un marcador de posición aquí y elegí el elemento de lista; tu eliges lo que quieres. |
| |
Bien, esto es solo una palabra, un nombre de variable, lo eliges tú. Elegí el elemento de la lista. Ese es nuestro marcador de posición, y este es el comando que queremos ejecutar en cada elemento de la lista. Que lista Esta lista, está bien. Entonces esa es nuestra lista, esa es la segunda |
| |
argumento. Y luego, el primer argumento es el marcador de posición, correcto. Nos dice que estamos usando ese marcador de posición para mantener los valores de las cosas en la lista. |
| |
Está entre llaves, así que asegúrese de usarlo si reutiliza este código. |
| |
Así que así es como se ve todo, en lugar de más de 20 líneas de código, solo tengo, bueno, tres líneas de código, y eso incluye abrir la tabla de datos, |
| |
obtener una lista de nombres de columnas y luego repetirla ... repetir esa acción para las 20 columnas continuas. Para ejecutar todo, ves cómo se ve. |
| |
Y ahí está. Ahora cada una de estas columnas |
| |
tiene dos lugares decimales mostrados en el formato. |
| |
De acuerdo, ese fue un ejemplo muy simple del uso de cada uno para hacer algo muy simple en |
| |
en una columna. |
| |
Déjame mostrarte un ejemplo un poco más interesante. |
| |
Aquí hay un ejemplo donde, para el mismo conjunto de datos, para sc20, |
| |
Voy a hacer un gráfico de control para cada columna, y voy a agregar esos gráficos de control a un diario y guardar todo como un PDF, de acuerdo. Entonces |
| |
está usando lo mismo para cada uno, y tiene los mismos dos primeros argumentos, ya sabes, el elemento de la lista es el primero, un nombre de lista para el segundo. Pero ahora tengo mucho código como tercer elemento ... como tercer argumento para cada uno. |
| |
Así que, aquí vamos. Ejecutemos todo este script. |
| |
Abrir, ejecutar un montón de gráficos de control, juntarlos en un diario. Y ahora, si miro en mi escritorio, he creado esta cosa, mi report.pdf, que tiene todos esos gráficos de control, la página uno y sus saltos de página para separarlos. Así que la página uno, la página dos, la página tres. |
| |
Por lo tanto, también puede ver este ejemplo en su propio tiempo. Está incluido en los materiales de presentación. |
| |
De acuerdo, y esa es nuestra primera técnica de la que estamos hablando. Limpiemos el registro para nuestra próxima técnica. |
| |
Bien, extrayendo un valor de un informe. Esto sucede mucho en JSL. Haces algún tipo de análisis, tal vez sea una distribución, tal vez sea una regresión, necesitas |
| |
conseguir algo, recoger algo de allí. Tal vez sea una media o una mediana. Tal vez sea un coeficiente de pendiente de la regresión o un valor de P. |
| |
Así que ese es nuestro trabajo, y la parte complicada de esto es que los informes tienen una estructura jerárquica y altamente anidada, y puede ser un poco complicado descender por esa jerarquía, descender por ese árbol para encontrar exactamente lo que queremos. Así que te voy a enseñar un truco. |
| |
El truco es que vamos a apuntar y hacer clic en nuestro camino a través del análisis, como de costumbre, y luego lo que queremos tomar, |
| |
Voy a cambiar el color del texto a rojo, solo un pequeño cambio de formato. Y luego, cuando guardemos ese script en el registro, lo usaremos para aprender cómo abordar ese elemento rojo |
| |
en JSL. Así que repasemos eso juntos. |
| |
De vuelta en JMP de nuevo. |
| |
Voy a abrir Big Class, el bueno de Big Class y hagamos una distribución en la columna de altura. |
| |
Muy bien, aquí está mi informe de distribución del que quiero extraer algo. Digamos que es la mediana, en este caso la mediana es 63, y la voy a poner en una variable JSL para poder reutilizarla más tarde, y sabes escribir con ella o hacer algunos cálculos matemáticos o algo así. . |
| |
Aquí está el truco para descubrir cómo ... abordar ese número 63. |
| |
Cambiar el color o, ya sabes, la fuente o lo que sea de esta cosa que quiero agarrar. Entonces, vale la pena saber cómo hacer eso si nunca ha visto esto. |
| |
Hay un botón en la barra de herramientas para las propiedades, creo que es un botón nuevo en JMP 16. |
| |
Entonces, si activa las propiedades de este informe. |
| |
Podemos bajar por este árbol y encontrar qué es lo que necesitamos. Así que mira esto. |
| |
cuadro de columna numérica, a la derecha. Y tenga en cuenta que cuando hago clic en diferentes partes del informe, el correspondiente |
| |
elemento, el tipo de cuadro de visualización que es, se resalta en el panel de propiedades. |
| |
Bien, entonces podemos ver que esta cosa que tiene todos estos resultados es un cuadro de columna numérica con todos estos números y, como, te dije que solo vamos a tomar esta cosa, y voy a cambiar la color del texto a rojo. |
| |
Así. |
| |
Ahora voy a cerrar el panel de propiedades. |
| |
Ahí está el informe y enviemos este script al registro mejorado. |
| |
Triángulo rojo, guarde el guión en el registro. |
| |
Y ahora viendo ese registro. |
| |
Esta es la parte que queremos. Tiene, ya sabes, el comando de distribución con la parte que cambia el color del texto de esa mediana y esas otras estadísticas a rojo. Así que veamos eso con un poco más de detalle ahora. |
| |
Bien, aquí está ese código ... mismo código del registro mejorado. Lo copié aquí y lo formateé un poco, para que podamos hablar más sobre lo que necesitamos. |
| |
Así que la única razón por la que hicimos esto fue para obtener esta parte, que ahora vamos a interpretar, de acuerdo. Utiliza enviar para informar y, dentro de eso, enviar. |
| |
Y nos vamos a centrar realmente aquí en los cuatro argumentos a enviar. Necesitamos los tres primeros, el cuarto argumento es cambiar el color, eso no es lo que realmente nos interesa. Estamos interesados en abordar la caja de presentación, el elemento que queremos, está bien. Entonces |
| |
este primer argumento es la navegación. Nos dice, baje a los cuadros de visualización, estos son en realidad cuadros delineados, baje a los cuadros de contorno |
| |
aquí. Así que veamos ese informe. Una vez más, estoy seguro de que ha notado en JMP que en un informe tiene estos niveles de anidamiento, ¿verdad ?, y yo solo tengo un ... |
| |
una distribución de caja de contorno exterior. Dentro de eso hay una altura de cuadro de contorno y, dentro de eso, hay un cuadro de contorno cuantiles, y dentro de ese cuantiles uno es lo que necesito extraer. |
| |
Entonces eso es lo que me está diciendo. Me está diciendo que baje por ese árbol. Solo necesitaba la altura y los cuantiles y eso nos lo identificará. |
| |
Bueno. Los siguientes dos argumentos nos dicen algo sobre esto ... este elemento que estamos probando, que se puso rojo. Nos dice ... el tercero dice lo que es, es un cuadro de columna numérica, lo vimos en las propiedades. |
| |
Y el segundo argumento nos dice el título |
| |
de ese número col box. Este está en blanco. Este no tiene título y está bien. Podemos ... todavía podemos usar esta información para obtener esos datos, por lo que a veces verá un título aquí, a veces no. |
| |
Bien, ahora que tenemos esto, tomaremos esa información y la usaremos |
| |
para extraer la mediana. |
| |
Aquí está el código que lo hace. Comienza aquí en la línea 23 y pasa por la línea 29. |
| |
Volvemos a abrir la tabla de datos, |
| |
nombrar la distribución, realizar la distribución continua. |
| |
Notará que no tenemos nada de ese envío y envío para informar, eso es porque no necesitamos ponerlo rojo en nuestro script de producción. |
| |
Así que sí, realice el análisis de distribución, nombre la plataforma. |
| |
Esto es importante, tienes que ... estás accediendo a la capa del informe. Lo está extrayendo con esta línea, por lo que está creando rdist, este objeto de informe. |
| |
Y luego, esta es la línea donde ocurre la magia. Aquí es donde estamos agarrando eso |
| |
ese valor mediano, asignándolo a la variable JSL, mdn, y para este, lo vamos a escribir en el registro. Así que les voy a contar un poco más sobre esto, pero primero vamos a ejecutarlo una vez, para que vean lo que hace. |
| |
Voy a ejecutar la línea 23, vaya, hagámoslo de esta manera. Ejecutemos la línea ... las líneas 23 a la 29. |
| |
Realizó la distribución. No es rojo y extrajimos la mediana, ahora está almacenada en mdn, puede ver que el valor de esa variable es 63. |
| |
la mediana es 63. Perfecto. |
| |
Bien. |
| |
Así que aquí está esa línea donde estamos extrayendo el |
| |
el valor mediano, ese número 63 del informe. |
| |
Veamos eso. Voy a llamar a esto aquí para que podamos |
| |
refiérase a esto, como nosotros, como lo hacemos. |
| |
Así que aquí está esa línea. Está nuevamente organizado, de modo que podamos ver cada elemento por separado. |
| |
63, el valor mediano del informe. |
| |
Así es como llegamos a eso. |
| |
Esto se llama subíndice ... subscriptinig. Cuando vea los corchetes en el código JSL, significa que está subíndice un objeto. Ese objeto es un contenedor de algún tipo, ya sea cajas de presentación, |
| |
a menudo una lista. También puede subíndice listas de esta manera. Entonces, lo que estamos haciendo es, sí, estamos extrayendo elementos anidados en este objeto de informe. |
| |
Lo primero que vamos a hacer es el cuadro de contorno de altura. Recuerda eso, y luego de ahí vamos a la caja de cuantiles, lo recuerdas. |
| |
Y ahora estamos en el lugar correcto. Solo tenemos que agarrar lo que queremos, lo que queremos es el recuadro de columna numérica, correcto, y porque no tenía |
| |
un título que podríamos usar (que estaba aquí arriba, sin título), en su lugar nos referimos a él por número. Es el primer cuadro de columna numérica en ese cuadro de contorno de cuantiles. |
| |
Así que puedes mirar esto y decirte a ti mismo, bueno, espera un minuto, aquí hay números. Eso es también una caja de números, ¿no? No, en realidad no lo es. Es un cuadro de columna de cadena, y recuerde, puede marcar todas esas cosas si lo desea. Eso es, nuevamente, de las propiedades. |
| |
Y si hago clic aquí, |
| |
cuadro de columna de número, cuadro de columna de cadena, cuadro de columna de cadena. ¿Los ves por aquí? Cadena ... número de cadena, por lo que es el primer cuadro de columna numérica. |
| |
Y eso va a tomar todos estos números. |
| |
Bien, lo último que tenemos que hacer es este subíndice. Subíndice de esta manera dice, consígame el sexto elemento ... 1, 2, 3, 4, 5, 6. Esa es la mediana; es 63. Y cuando ejecutamos esta línea, subíndice el informe; toma esa mediana, para que podamos reutilizarla más tarde. |
| |
Así que hay una forma de obtener algo de un informe. Tengo otro ejemplo que compartiré en los materiales de presentación que tendrán |
| |
un elemento que tiene un título y puede verlo, puede usarlo como modelo para hacer su propio trabajo, si se encuentra en esa situación. |
| |
Muy bien, lo último que vamos a discutir es cómo obtener información de su usuario, la persona que está ejecutando el script. |
| |
Y permítales elegir qué archivo van a analizar o incluso qué columna de la tabla de datos van a analizar. Entonces este es quizás el más común |
| |
cosa que los guionistas principiantes quieren hacer. Ya sabes, configuré mi guión para hacer algo en una columna y quiero dar algo a otras personas de mi organización. |
| |
para que lo hagan ellos mismos con diferentes datos, ¿verdad? Entonces, si usted ... si generaliza sus scripts de esta manera para permitir que sus usuarios elijan un archivo o una columna, o ambos, |
| |
está generalizando su guión y está aumentando enormemente su valor. Se lo vas a dar a otras personas de tu organización. Pueden replicar su trabajo y hacerlo rápidamente sin pasar por todos los clics. |
| |
De acuerdo, en esta sección, es menos un estudio de caso y más una lista de lavandería. Vamos ... Voy a mostrarte tres métodos que puedes permitir a tus usuarios elegir archivos y dos métodos que puedes usar para permitirles elegir columnas. |
| |
Y comenzaremos con los métodos para elegir archivos. Como de costumbre, comenzaremos haciendo algo en el registro y luego copiando eso. Esto es ... así es como se ve cuando abre Big Class, solo tiene esto en el registro, abre Big Class. |
| |
dt. Estoy usando dt en este caso, así que cuando abro Big Class, |
| |
ahora tiene ... dt está apuntando a Big Class, de acuerdo. Y luego continuaría con mi guión de producción, ¿no? |
| |
Aquí está la cuestión, para permitir que su usuario elija qué archivo quiere, todo lo que tenemos que hacer es encontrar una manera de dejar que dt apunte a otra cosa. |
| |
Escriba el resto de su secuencia de comandos, use dt y luego, al principio, puede cambiar esto. dt ya no solo apunta a Big Class; va a apuntar a otra cosa. |
| |
Muy bien, y eso es otra cosa que determina el usuario, |
| |
la persona que ejecuta el guión. Bien, esto es lo más fácil que puede hacer, creo, es que puede ... puede usar esta línea en lugar de abrir una tabla de datos. Si usa esto al comienzo de su secuencia de comandos para asignar dt, |
| |
lo que eso significa es que JMP ejecutará este script y le dará ese dt |
| |
nombre a cualquier tabla de datos que esté al frente. |
| |
Entonces, desde la perspectiva del usuario, lo que hacen es abrir una tabla de datos, voy a abrir sc20 aquí y hacer sc20 |
| |
mi tabla de datos actual. ¿Ves eso aquí arriba? Que lo que aparece en esta ventana es la tabla de datos actual. |
| |
Entonces, si su usuario abre una tabla de datos y luego ejecuta el script y luego encuentra esta línea, dt ahora apuntará a sc20. |
| |
Entonces ese es un método bastante poderoso. El problema con esto es ... es que requiere que su usuario sepa exactamente qué hacer. Deben saber que primero deben abrir el archivo de datos y luego ejecutar el script. |
| |
Podemos hacer algo un poco más sólido. Podemos mostrarles un selector de archivos cuando ejecuten el script, para que puedan navegar a través de la estructura de su directorio y encontrar el archivo correcto para abrir. |
| |
Resulta que esto es muy sencillo de hacer. Lo que hace es simplemente deshacerse de todas las cosas aquí, deshacerse de la referencia a Big Class y simplemente decir abrir sin ningún argumento. |
| |
Y cuando JSL intenta ... cuando JMP intenta interpretar esta línea, dice, está bien, el usuario quiere abrir algo, pero no tengo qué ... ni idea de qué. Mostrémosles un selector de archivos para que puedan decidir. |
| |
Así que ... ejecutemos esto. dt = abierto. |
| |
Ejecute el script. Aquí está su selector de archivos genérico y desde mi escritorio, voy a abrir Iris. |
| |
Iris está abierto y, por supuesto, tiene el nombre dt. |
| |
todos los archivos JMP, todos los archivos, a la derecha. Podría estar mostrando muchas cosas aquí. |
| |
Entonces, si necesita más control, vaya, si necesita más control sobre |
| |
las elecciones que va a hacer su usuario, en lugar de usar open, usaremos algo llamado pick file. |
| |
Seleccionar archivo es un comando que tiene un par de opciones diferentes. Solo estoy usando tres de ellos. |
| |
Repasemos este ejemplo. Entonces, los primeros tres argumentos para el archivo de selección son un título que verá en la ventana del selector, |
| |
un directorio donde se iniciará el selector, y un filtro que le indica qué archivos puede abrir desde ese selector, ¿verdad? Así que ejecutemos esto ... esta línea, esta sección de código, el comando pick file, guardando el resultado en PF. |
| |
Ejecuta eso. |
| |
Bien, tenga en cuenta que ese es el argumento de aquí, seleccione el archivo de Excel. Eso es lo que vemos aquí en el título de la ventana. |
| |
La carpeta, la ruta en el segundo argumento, ahí es donde comienza. |
| |
Y el tercer bit, el filtro de archivos que dice, oye, solo muestra al usuario los archivos de Excel para abrir, eso está aquí. No se me permite cambiar los archivos de Excel. Estoy restringido a archivos de Excel. |
| |
Digamos sándwiches y haga clic en abrir. |
| |
Bueno, espera un minuto, ¿por qué no se abrió? |
| |
Bueno, vamos a comprobarlo. PF es igual al archivo de selección. ¿Qué es PF? Ah, PF es el camino hacia lo que queremos abrir. Aún no hemos emitido el comando de apertura. Elegir archivo no abre un archivo, solo elige un archivo. |
| |
Entonces, para cerrar el círculo, esto es lo que tenemos que hacer. Cree nuestra referencia de tabla abriendo el |
| |
Variable PF, que apunta al archivo que queremos, el archivo de Excel que queremos. |
| |
Ahí está. Eso abre la tabla de datos de sándwiches, y ahora tengo mi dt y estoy listo para continuar con mi script, como quería. |
| |
Permítanme hacer una pausa aquí para mostrarles algo importante. Elija archivo, si encuentra algo como esto y no conoce todos los argumentos y quiere aprender más, un par de cosas. Primero que nada, obtienes un poco |
| |
hover help, una pequeña ventana emergente que tiene información sobre la sintaxis. Aquí tienes una mejor opción. Haga clic derecho sobre él en la ventana del script, |
| |
y puede buscarlo en el índice de secuencias de comandos. El índice de secuencias de comandos es una herramienta muy importante para cualquier programador JSL, y |
| |
tiene el comando que estás mirando hacia arriba. Tiene la lista de argumentos, algún texto explicativo y, lo que es más importante, tiene un par de ejemplos que puede revisar y ver qué hace. Entonces, si ejecuto este ejemplo aquí, me dará un archivo de selección. |
| |
Bueno, me envió a algún lugar al que no quiero ir. |
| |
Vamos a cerrarlo. |
| |
Bien y luego podemos experimentar y tomar este código, robar este código y usarlo en nuestro ... en nuestro script si queremos. |
| |
De acuerdo, ese es el índice de secuencias de comandos. También está disponible en el menú de ayuda. Menú de secuencias de comandos ... mira cosas ahí arriba. |
| |
tabla de datos actual, un abierto desnudo o un archivo de selección. También hay otras formas, pero esas son tres buenas para empezar. |
| |
Ahora hablemos de permitir que sus usuarios elijan en qué columna quieren operar. |
| |
Aquí estoy ... Tengo algo copiado del registro. Abrí una tabla de datos llamada precios. e hice un gráfico que mostraba el precio de las manzanas a lo largo del tiempo. |
| |
No voy a mostrarles la parte de apuntar y hacer clic, solo voy a ejecutar el script. Creo que ya sabe cómo extraer el script del registro mejorado, así que veamos qué hace el script. Abre los precios y ahí está mi gráfico, manzanas versus fecha, precio de las manzanas a lo largo del tiempo. |
| |
Así que mira esta tabla de datos, precios, sí, hay manzanas, pero también tengo a todos estos tipos, ¿no? Entonces, ¿qué pasa si quiero que mi usuario me diga qué gráfico quiere ver, qué columna quiere ver graficada? |
| |
De eso se trata esta sección, dejar ... dejar que los usuarios elijan. |
| |
Bueno. |
| |
Entonces discutiremos dos métodos. Aquí está el primero. |
| |
Está operando en columnas que el usuario ha seleccionado. |
| |
Y ya hemos visto esto antes, vimos esta sintaxis antes, creo, en nuestro segundo estudio de caso. Sí, así es como hacemos una lista |
| |
que contiene las columnas seleccionadas en la tabla de datos. Permítanme volver a esa tabla de datos. |
| |
Voy a seleccionar, tal vez tres columnas y |
| |
corramos |
| |
esta. De hecho, creo que debería ejecutar dt. Ejecutemos ambos. |
| |
pollo, café y huevos. |
| |
Está bien. |
| |
Entonces. |
| |
¿En cuál quiero operarme? Bueno, ya sabes cómo operar, cómo iterar sobre una lista usando un bucle, pero no lo estamos haciendo. Solo voy a usar un atajo. Voy a decir mira |
| |
si mi usuario seleccionó más de uno, simplemente grafique el primero para ellos. Entonces, mi usuario ha seleccionado pollo, café y huevos antes de ejecutar el script. Solo quiero darles el gráfico del pollo. |
| |
Bien, esa es la siguiente línea aquí. Ahí está nuestro subíndice. Estamos suscribiendo la lista CNames para obtener el primer elemento. |
| |
Así que ejecutaremos esto. |
| |
Ahora tengo esa bonita variable, mi col, |
| |
que tiene el primer elemento de la lista, pollo, la referencia de la columna con dos puntos. |
| |
Y ahora podemos ejecutar nuestro generador de gráficos. Ahora podemos seguir con nuestra vida, la única diferencia es que hemos sustituido donde estaban las manzanas aquí arriba, |
| |
que ahora es mi col. Ese es el único cambio que hemos hecho y, al ejecutar esto, obtendremos un gráfico del precio del pollo. |
| |
Bueno. |
| |
De acuerdo, esa es una forma, pero nuevamente, como hablamos anteriormente, esto requiere que el usuario sepa lo que tiene que hacer. Esto requiere... |
| |
El método requiere que el usuario sepa que tiene que abrir la tabla de datos, seleccionar esto y luego ejecutar el script, y eso es un poco complicado. Entonces |
| |
en cambio, es un poco más robusto mostrar un diálogo de selección de columna al usuario en tiempo de ejecución. Así es como se ve. La sintaxis es un poco compleja. No voy a entrar en todos los detalles, hablando de eso a un alto nivel. Abrimos la tabla de datos como antes. |
| |
Estamos usando este comando llamado diálogo de columna |
| |
para mostrar un selector ... selector de columnas al usuario. |
| |
Nuevamente, tiene muchos argumentos. Solo estoy usando un par. Lo que estoy haciendo es decir, oye, dame un botón que diga elegir producto, y el usuario puede elegir una columna como máximo y tiene que elegir al menos una. |
| |
Entonces aquí, ejecutemos este script comenzando en la línea 60. |
| |
Precio de apertura, aquí está mi diálogo y mira qué diálogo tan rico tengo para muy poco código. Esa es la virtud de este diálogo de columna que estamos usando. Así que voy a tomar café como mi selección y hacer clic en Aceptar. |
| |
Bueno. Volviendo al guión, acabamos de ejecutar esta línea. |
| |
Y es el resultado de nuestra elección se almacena en dlg. Echemos un vistazo a eso. |
| |
Está bien, eso es un poco complicado. Dice que dlg es una lista, vea las llaves, y tengo algunas llaves anidadas, por lo que es como listas anidadas. |
| |
Aquí está el subíndice que lo lleva allí. No voy a dedicar mucho tiempo a explicar esto, pero puedes copiar este código si ... si necesitas hacer esto. Entonces, para pasar del diálogo a obtener solo la parte que dice café, una columna de referencia al café allí, |
| |
aquí está el subíndice para hacer mi col, así que ejecute esta línea. |
| |
Y ahora, mi columna contiene solo esa referencia a la columna de café, y esto es idéntico a antes. Ejecutamos el generador de gráficos usando |
| |
my col, sustituyéndolo por manzanas y así obtenemos café o cualquier otra cosa que el usuario haya elegido. |
| |
Está bien, eso es todo lo que quería compartir contigo. Voy a cerrar con un pequeño consejo para cualquiera que esté comenzando de esta manera con la programación JSL. |
| |
El consejo es, ya sabes, dejar que JMP corrija tu código, tanto como sea posible. Y para eso es el registro mejorado, robar ese código del registro. Esa es la mayor parte de tu guión, |
| |
y luego solo tienes que escribir el tejido conectivo, las partes que mantienen las cosas juntas y las convierte en un guión de producción utilizable. También puedes robar ese código. Lo vas a robar del índice de secuencias de comandos, ciertamente puedes robarlo de esta presentación. |
| |
Todos los materiales están con esta presentación y también puede robar del libro de cocina JSL en la comunidad de usuarios de JMP, un recurso fantástico que tiene muchas tareas JSL comunes y le brinda el código que necesita para lograr esas cosas. |
| |
Y nuevamente, voy a enfatizar, realmente no se preocupe demasiado por la sintaxis. Es más fácil tomar el código y sustituir lo que necesita. No vas a romper nada y aprenderás las sutilezas de esta sintaxis con más experiencia. |
| |
Muchas gracias por su atención. |