Vocero
|
Transcripción
|
| jordán hiller |
Hola a todos. Soy Jordan Hiller y esta charla es ¡Roba este código! Tres actualizaciones para scripts obtenidos 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 Steal this Book, que es un gran título. No estoy seguro de que sea un gran plan de negocios nombrar tu libro así, 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 apuntes y hagas clic y hagas tu 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 agarrarlo y reutilizarlo. |
| |
Y eso es aproximadamente el 90% de su guión de producción. Vas a agarrar eso y reutilizarlo para que puedas |
| |
automatice tareas comunes y hágalo con un 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% restante que debe escribir usted mismo, y ese es nuestro objetivo para esta charla. Vamos a hablar sobre parte de ese tejido conectivo que mantiene unidos los guiones de producción. |
| |
Así que en esta charla, me voy a centrar contigo, ya sabes, no tanto en el meollo de la sintaxis, |
| |
mucho más sobre 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 viene a medida que adquiere experiencia. |
| |
Así que vamos a hablar sobre tres casos de estudio sobre 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 |
| |
quiero hacer algo es 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 enviándoles 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, simplemente 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 de 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, 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ú. |
| |
Entonces, 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 |
| |
manejar. Es un enlace que puedo usar en el código más adelante, 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 he modificado. Y ya sabes, antes aquí desde el registro que es un comando de distribución desnudo. no tiene... |
| |
no está apuntando 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 pasa a 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, así que lo ejecutaremos de esta manera. |
| |
bctable, y luego las flechas dobles y luego los comandos de distribución. Eso es lo que hemos agregado, bctable con las flechas dobles. |
| |
Y esta es la sintaxis para enviar un mensaje. Así que estamos enviando el mensaje de distribución a la derecha a la tabla de datos, por la que se llama bctable, a la izquierda. Y puede ver que eso es Big Class cuando paso el mouse 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 los iguales, está bien. Entonces, eh... leamos esto de derecha a izquierda. Vamos a tomar ese mensaje de distribución y enviarlo a bctable. |
| |
Y el resultado de todo eso, que es la plataforma, lo vamos a guardar en esta variable que llamo distplat. |
| |
Vamos a ejecutar 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í vamos a traer eso... |
| |
llevemos ese informe de distribución donde lo puedan ver. |
| |
Y vamos a tomar ese objeto distplat, ese es el... esa es la plataforma de distribución. |
| |
Mira, pasa el cursor sobre él y ejecutemos esta línea. Encienda el gráfico de quintiles normal en la plataforma de distribución. Ahí está. |
| |
Bueno. |
| |
El último paso es tomar la plataforma, tomar 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 plataforma y ahora obtenemos un objeto de informe. |
| |
Y necesitamos 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, necesitará esto, ¿de acuerdo? Este objeto rdistplat. Así que ejecútalo 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 un cuadro de visualización, y más adelante hablaremos sobre cómo puede usarlo para acceder a los números aquí en el informe. |
| |
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 el comando for each. Entonces |
| |
esta es una necesidad muy común, a veces es algo simple que debe hacer, como cambiar el formato o el tipo de modelado de una columna. |
| |
Puede ser muy complejo como |
| |
tomando una... tomando una transformación de la columna y ejecutando un gráfico de control y haciendo algo con ese gráfico de control. Entonces sí, escala; esta técnica escala. |
| |
Así es como vamos a lograr esto en el código JSL. Señalaremos 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 luego ese es el esqueleto de nuestro guión. Y vamos a modificarlo para recorrer todas las columnas en las que queremos realizar esa acción. |
| |
El método que vamos a usar para bucles, para iterar, es para cada uno, y eso 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. |
| |
bueno voy a empezar |
| |
en JMP, permítanme comenzar en 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, señalemos y hagamos clic en lo que queremos hacer. Voy a abrir una tabla de datos llamada sc20. |
| |
Esta tabla de datos está disponible 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 alrededor de 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 muestremos los dos primeros lugares decimales de los datos. |
| |
Esa es una simple operación 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 arreglar el decimal con dos lugares. |
| |
OK, y ahora hicimos eso para NPN1, tenemos otras 19 columnas para las que también nos gustaría hacer eso. |
| |
Entonces, examinemos el registro mejorado. |
| |
Y esto es todo, este es el código que necesitamos para lograr cambiar el formato de una columna, NPN1, a la derecha. 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 primeras dos líneas aquí... tres líneas, este es el código del registro. Muy bien, lo primero que haremos es abrir la tabla de datos. |
| |
Y es posible que haya notado que he editado un poco, eliminé mi nombre de ruta larga, 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. Eso es como una ruta de archivo local a este mismo directorio en el que se encuentra actualmente. |
| |
De todos modos, desde el registro estamos abriendo la tabla de datos, y luego estamos aquí, aplicando ese cambio de formato, decimal fijo 10 caracteres dos decimales. |
| |
La tabla... la referencia de 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 de nuevo directamente desde el registro. |
| |
JMP está utilizando 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 negocio antes de los dos puntos, lo cambié a dt. |
| |
Así que aquí está el mismo código, solo que... solo lo corrigieron 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 algo bastante fácil de |
| |
cambie todas las otras 19 columnas, a la derecha. Ahí... aquí está NPN1, y luego puedo copiar esa línea y cambiar a todos y escribirla 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, ¿verdad? Entonces eso se vuelve más fácil de mantener si nosotros... si solo escribimos esto una vez, en lugar de escribirlo 19 veces, 20 veces. |
| |
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 solo a una lista genérica. Estoy hablando de una lista JSL, estoy hablando de una estructura de datos particular que usas cuando estás programando en JSL. |
| |
Una lista es solo un par de objetos contenidos en un contenedor y así es como la usamos. Así que 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 paso el cursor sobre la variable CNames. Cuando ve esas variables curvas... esas llaves, sabe que está tratando 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 vamos a usar para este ejemplo, en última instancia. Esto 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, cree una nueva lista. |
| |
Así que vamos a ejecutar este. |
| |
Y ahora, si paso el cursor sobre CNames, verá que eso es lo que queremos. Esa es la lista de los 20 que queremos operar. |
| |
De acuerdo, y la última forma en que puede hacer esto es, puede 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 aquí está la forma antigua de hacerlo. Utiliza el comando for en JMP. Eso es lo que haría antes de JMP 16 y lo pongo aquí, para su referencia en caso de que todavía esté en JMP 15. Pero, |
| |
ya sabes, es un poco complicado y prohibitivo 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, vamos a mirarlo y ver qué está haciendo. Está tomando tres argumentos, los argumentos están separados por comas, los tomaremos 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 la lista; tu eliges lo que quieres |
| |
Correcto, esto es solo una palabra, un nombre de variable, tú lo eliges. 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. ¿Qué lista? Esta lista, está bien. Así que 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 contener los valores de las cosas en la lista. |
| |
Está entre llaves, así que asegúrese de usarlo si reutiliza este código. |
| |
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, |
| |
obteniendo una lista de nombres de columna y luego repitiéndola... repitiendo esa acción para las 20 columnas continuas. Para ejecutar todo el asunto, ya ves lo que parece. |
| |
Y ahí está. Ahora cada una de estas columnas |
| |
tiene dos lugares decimales que se muestran en el formato. |
| |
Bien, 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 adjuntar 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. Vamos a ejecutar 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 informe.pdf, que tiene todos esos gráficos de control, la página uno y sus saltos de página para separarlos. Así que página uno, página dos, página tres. |
| |
Así que puedes ver este ejemplo también en tu propio tiempo. Está incluido en los materiales de presentación. |
| |
Bien, y esa es nuestra primera técnica de la que estamos hablando. Borremos el registro para nuestra siguiente técnica. |
| |
Vale, 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 P. |
| |
Así que ese es nuestro trabajo, y la parte complicada de esto es que los informes tienen una estructura jerárquica altamente anidada, y puede ser un poco complicado viajar por esa jerarquía, viajar 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 agarrar, |
| |
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 vamos a pasar por eso juntos. |
| |
De vuelta en JMP de nuevo. |
| |
Voy a abrir Big Class, el bueno de Big Class y ejecutaremos 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 voy a poner eso en una variable JSL para poder reutilizarla más tarde, y ya sabes escribir con ella o hacer algunos cálculos o algo así . |
| |
Aquí está el truco para saber cómo... abordar ese número 63. |
| |
Cambia el color o, ya sabes, la fuente o lo que sea de esta cosa que quiero agarrar. Entonces, cómo hacer eso si nunca has visto esto, vale la pena saberlo. |
| |
Hay un botón en la barra de herramientas para propiedades, creo que es un botón nuevo en JMP 16. |
| |
Entonces, si activa las propiedades para este informe. |
| |
Podemos viajar por este árbol y encontrar lo que necesitamos. Así que mira esto. |
| |
cuadro de columna de número, 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, les dije que solo vamos a tomar esta cosa, y voy a cambiar el 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 script 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... el mismo código del registro mejorado. Lo copié aquí y lo formateé un poco, para que podamos hablar más sobre lo que necesitamos. |
| |
Entonces, la razón principal 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 realmente nos vamos a centrar aquí en los cuatro argumentos a despachar. Necesitamos los primeros tres, el cuarto argumento es cambiar el color, eso no es realmente lo que nos interesa. Estamos interesados en abordar el cuadro de visualizació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 delineados |
| |
aquí. Así que echemos un vistazo a ese informe. Nuevamente, estoy seguro de que ha notado en JMP que en un informe tiene estos niveles de anidamiento, correcto, y 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 cuantiles de cuadro de contorno, y dentro de esos cuantiles uno es el material que necesito extraer. |
| |
Así que eso es lo que me está diciendo. Me está diciendo que camine por ese árbol. Solo necesitaba la altura y los cuantiles y eso nos identificará. |
| |
Bien. Los siguientes dos argumentos nos dicen algo acerca de este... este elemento que estamos probando, que nos pusimos rojo. Nos dice... el tercero dice lo que es, es un cuadro de número col, eso lo vimos en las propiedades. |
| |
Y el segundo argumento nos dice el título |
| |
de ese número col cuadro. 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, vamos a tomar esa información y la vamos a usar. |
| |
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. |
| |
Estamos abriendo la tabla de datos de nuevo, |
| |
nombrando la distribución, realizando la distribución continua. |
| |
Notará que no tenemos nada de ese despacho y envío para informar, eso es porque no necesitamos cambiarlo a 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 de 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 por completo, para que vean lo que hace. |
| |
Voy a ejecutar la línea 23, ups, hagámoslo de esta manera. Recorramos la línea... líneas 23 a 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. |
| |
Está bien. |
| |
Así que aquí está esa línea donde estamos extrayendo el |
| |
el valor mediano, ese número 63 del informe. |
| |
Veamos eso. Solo voy a llamar a esto aquí para que podamos |
| |
referirse a esto, como nosotros, como lo hacemos. |
| |
Así que aquí está esa línea. Está nuevamente organizado, para que podamos ver cada elemento por separado. |
| |
63, el valor medio del informe. |
| |
Así es como llegamos a eso. |
| |
Esto se llama subíndice...subscriptinig. Cuando vea los corchetes en el código JSL, eso significa que está subíndice a un objeto. Ese objeto es un contenedor de algún tipo, ya sea cuadros de presentación, |
| |
a menudo una lista. También puede suscribir 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. Lo recuerdas, y luego de ahí bajamos al cuadro de cuantiles, lo recuerdas. |
| |
Y ahora estamos en el lugar correcto. Solo tenemos que agarrar lo que queremos, lo que queremos es el cuadro de número col, correcto, y porque no tenía |
| |
un título que podríamos usar (eso estaba aquí arriba, sin título), en cambio, nos referimos a él por número. Es el primer cuadro de columna de número en ese cuadro de contorno de cuantiles. |
| |
Así que podrías mirar esto y decirte a ti mismo, bueno, espera un minuto, hay números aquí. Ese es un cuadro de número de columna también, ¿no es así? No, en realidad no lo es. Es un cuadro de col de cuerdas, y recuerda, puedes revisar todas esas cosas si quieres. Eso es, de nuevo, 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 de número. |
| |
Y eso va a agarrar todos estos números. |
| |
Bien, lo último que tenemos que hacer es este subíndice. Subíndice de esta manera dice, consígueme el sexto elemento... 1, 2, 3, 4, 5, 6. Esa es la mediana; son 63 Y cuando ejecutamos esta línea, eso 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 puedes verlo, puedes usarlo como modelo para hacer tu propio trabajo, si te encuentras con esa situación. |
| |
Muy bien, lo último que vamos a discutir es cómo obtener información de su usuario, la persona que ejecuta el script. |
| |
Y permítales elegir qué archivo van a analizar o incluso qué columna de la tabla de datos van a analizar. Así que este es quizás el más común. |
| |
cosa que los guionistas principiantes quieren hacer. Sabes, configuré mi script para hacer algo en una columna y quiero dar algo a otras personas en mi organización. |
| |
dejar que lo hagan ellos mismos con diferentes datos, ¿verdad? Entonces, si... 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 considerablemente su valor. Vas a dárselo a otras personas en tu organización. Pueden replicar su trabajo y hacerlo rápidamente sin pasar por todos los clics. |
| |
Bien, entonces en esta sección, es menos un estudio de caso y más una lista de lavandería. Vamos... Voy a mostrarle tres métodos que puede permitir que sus usuarios elijan archivos y dos métodos que puede 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 copiándolo. Esto es... así es como se ve cuando abres Big Class, solo obtienes 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, está bien. Y luego continuaría con mi guión de producción, ¿verdad? |
| |
Aquí está la cosa, 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 script. 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 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. |
| |
Así que ese es un método bastante poderoso. El problema es que requiere que el 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 robusto. Podemos mostrarles un selector de archivos cuando ejecutan el script, para que puedan navegar a través de su estructura de directorios y encontrar el archivo correcto para abrir. |
| |
Resulta que esto es muy simple de hacer. Lo que haces es simplemente deshacerte de todas las cosas aquí, deshacerte de la referencia a Big Class, y simplemente dices abierto 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 sé qué... ni idea de qué. Vamos a mostrarles un selector de archivos para que puedan decidir. |
| |
Así que... vamos a ejecutar 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 su usuario va a hacer, en lugar de abrir, usaremos algo llamado elegir archivo. |
| |
Seleccionar archivo es un comando que tiene un par de opciones diferentes. Sólo estoy usando tres de ellos. |
| |
Vayamos a través de este ejemplo. Entonces, los primeros tres argumentos para seleccionar el archivo son un título que verá en la ventana del selector, |
| |
un directorio donde comenzará el selector, y un filtro que le indica qué archivos puede abrir desde ese selector, a la derecha. Así que vamos a ejecutar esto... esta línea, esta esta sección de código, el comando de selección de archivo, guardando el resultado en PF. |
| |
Ejecuta eso. |
| |
De acuerdo, tenga en cuenta que ese es el argumento aquí, seleccione el archivo de Excel. Eso es lo que vemos aquí arriba 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í abajo. No tengo permitido cambiar los archivos de Excel. Estoy restringido a archivos de Excel. |
| |
Así que digamos sándwiches y haga clic en abrir. |
| |
Bueno, espera un minuto, ¿por qué no se abrió? |
| |
Bueno, vamos a comprobar. PF es igual al archivo de selección. ¿Qué es PF? Ah, PF es el camino hacia lo que queremos abrir. Todavía no hemos emitido el comando de apertura. Seleccionar archivo no abre un archivo, simplemente selecciona un archivo. |
| |
Entonces, para cerrar el círculo, esto es lo que tenemos que hacer. Cree nuestra tabla de referencia 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 secuencia de comandos, tal como quería. |
| |
Permítanme hacer una pausa aquí para mostrarles algo importante. Elija el archivo, si encuentra algo como esto y no conoce todos los argumentos y desea obtener más información, un par de cosas. En primer lugar, obtienes un poco |
| |
hover help, una pequeña ventana emergente que tiene información sobre la sintaxis. Aquí hay 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 de JSL, y |
| |
tiene el comando que estás buscando. 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 lo que hace. Entonces, si solo ejecuto este ejemplo aquí, me dará un archivo de selección. |
| |
Bueno, me envió a algún lugar al que no quiero ir. |
| |
Cerrémoslo. |
| |
En ese momento podemos experimentar y agarrar este código, robar este código y usarlo en nuestro... en nuestro script si queremos. |
| |
Bien, ese es el índice de secuencias de comandos. También está disponible desde el menú de ayuda. Menú de secuencias de comandos... busque cosas allí. |
| |
tabla de datos actual, una apertura desnuda 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. y le hice un gráfico que mostraba el precio de las manzanas a lo largo del tiempo. |
| |
No voy a mostrarte la parte de apuntar y hacer clic, solo voy a ejecutar el script. Creo que ya sabe cómo extraer secuencias de comandos del registro mejorado, así que veamos qué hace la secuencia de comandos. Abre los precios y ahí está mi gráfico, manzanas frente a la fecha, precio de las manzanas a lo largo del tiempo. |
| |
Mire esta tabla de datos, precios, sí, hay manzanas, pero también tengo a todos estos tipos, ¿verdad? 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, de dejar... dejar que tus usuarios elijan. |
| |
Bueno. |
| |
Así que discutiremos dos métodos. Aquí está el primero. |
| |
Está operando en columnas que el usuario ha seleccionado. |
| |
Y 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 que se seleccionan en la tabla de datos. Así que déjame volver a esa tabla de datos. |
| |
Voy a seleccionar, tal vez tres columnas y |
| |
corramos |
| |
este. En realidad, creo que debería, debería ejecutar dt. Ejecutemos ambos. |
| |
pollo, café y huevos. |
| |
Está bien. |
| |
Entonces. |
| |
¿A cuál me quiero operar? Bueno, ya sabes cómo operar, cómo iterar sobre una lista usando un bucle, pero no vamos a hacer eso. Solo voy a usar un atajo. voy a decir mira, |
| |
si mi usuario seleccionó más de uno, solo grafique el primero para ellos. Entonces, mi usuario seleccionó pollo, café y huevos antes de ejecutar el script. Solo quiero darles el gráfico del pollo. |
| |
Correcto, así que esa es la siguiente línea aquí. Ahí está nuestra suscripción. Estamos subíndice la lista CNames para obtener el primer elemento. |
| |
Así que ejecutaremos esto. |
| |
Ahora tengo esa buena variable, mi col, |
| |
que tiene el primer elemento de la lista, pollo, la referencia de 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 había manzanas aquí arriba, |
| |
ese es ahora mi col. Ese es el único cambio que hemos hecho y, al ejecutarlo, obtendremos un gráfico del precio del pollo. |
| |
Bien. |
| |
Muy bien, esa es una forma, pero nuevamente, como mencionamos 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 selector de columna al usuario en tiempo de ejecución. Esto es lo que parece. La sintaxis es un poco compleja. No voy a entrar en todos los detalles, hablando de ello a un alto nivel. Estamos abriendo la tabla de datos como antes. |
| |
Estamos usando este comando llamado diálogo de columna |
| |
para mostrar un selector... selector de columna para el usuario. |
| |
Una vez más, 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 para eso como máximo y tiene que elegir al menos una. |
| |
Así que aquí, ejecutemos este script comenzando en la línea 60. |
| |
Precio de apertura, aquí está mi diálogo y mira lo que es un diálogo rico que tengo por muy poco código. Esa es la virtud de este diálogo de columna que estamos usando. Así que voy a tener café como mi selección y haré clic en Aceptar. |
| |
Bien. Volviendo al guión, acabamos de ejecutar esta línea. |
| |
Y el resultado de nuestra elección se almacena en dlg. Echemos un vistazo a eso. |
| |
Muy bien, eso es un poco complicado. Dice que dlg es una lista, vea los corchetes, y obtuve algunos corchetes anidados, así que son como listas anidadas. |
| |
Aquí está el subíndice que te lleva allí. No voy a pasar mucho tiempo explicando esto, pero puedes copiar este código si... si necesitas hacer esto. Entonces, para obtener del diálogo solo la parte que dice café, una referencia de columna al café allí, |
| |
aquí está el subíndice para hacer mi columna, así que ejecuta esta línea. |
| |
Y ahora, mi columna contiene solo esa referencia a la columna de café, y es idéntica a la anterior. Ejecutamos el generador de gráficos usando |
| |
mi col, sustituyéndolo por manzanas y así tomamos café o lo que el usuario haya elegido. |
| |
Bien, eso es todo lo que quería compartir con ustedes. Solo 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 está el registro mejorado, robar ese código del registro. Eso es la mayor parte de su guión, |
| |
y luego solo tienes que escribir el tejido conectivo, las partes que mantienen unidas las cosas y las convierten 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 comunes de JSL y le brinda el código que necesita para lograr esas cosas. |
| |
Y de nuevo, voy a enfatizar, realmente no te preocupes demasiado por la sintaxis. Es más fácil tomar el código y sustituirlo por 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. |