¿Cómo ejecutar una consulta al pasar el mouse usando datos del punto de datos subyacente?Hola,
Me gustaría ejecutar una consulta de base de datos en un mouseover.
En mi caso tengo muchos millones de imágenes pero solo me interesa ver muy pocas, una a la vez.
He simulado un caso utilizando datos de conjuntos de datos de Big Class y Big Class Families.
Aquí está el escenario:
De ' clase grande ' Trazo el peso contra la altura.
Como cuestión de interés, quiero ver cómo es JAMES.
Tengo una foto de él en ' Familias de clase grande ' así que pensé que podría echar un vistazo ejecutando una consulta cuando paso el mouse sobre el marcador de JAMES en el gráfico de dispersión de GB.
He intentado aprovechar la funcionalidad Hover Label / Paste Graphlet. En la secuencia de comandos a continuación, puede ver que la consulta se puede realizar fácilmente, pero desafortunadamente tuve que codificar "JAMES" en la consulta.
Lo que necesito es que el nombre "JAMES" se coloque en una variable al pasar el mouse y luego se use en el SQL. De esa manera, podía mirar la imagen de cualquier persona con solo pasar el mouse sobre los puntos de interés.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp" );
Graph Builder(
Variables( X( :height ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
dt = Open( "$Sample_Data/Big Class Families.jmp" );
//ImageFor = "JAMES";
ImQ = Query(
Table( dt, "t1" ),
"SELECT name, picture From t1 WHERE name = \!"JAMES\!" "
);
)
)}
)
)
);La aplicación final es para la revisión de obleas de semiconductores, donde después de hacer un mapa de obleas basado en ubicaciones de defectos, la consulta regresaría a la base de datos y extraería la imagen de los defectos de interés. Cuando el número de defectos es ocasionalmente bastante grande, no es práctico cargar todas las imágenes en la tabla de datos para fines de revisión.
Gracias,
Felipe
Acceso a los datosLa personalización en masaRe: ¿Cómo ejecutar una consulta al pasar el mouse usando datos del punto de datos subyacente?Me acaba de alegrar el día, buen señor.
¡Esto es realmente increíble!
Gracias,
Nascif
Re: ¿Cómo ejecutar una consulta al pasar el mouse usando datos del punto de datos subyacente?Hola,
Disculpe la demora en responderle con la demostración prometida.
En el enlace de video a continuación, verá la aplicación en uso.
Enlace: https://www.loom.com/share/73150b6a45654d789a6d040bb661cddf
Del vídeo:
Utilizando JMP, los datos de defectos se recopilan de la base de datos de la herramienta de inspección.
Luego, JMP resume los recuentos de defectos por lote/oblea y los muestra en un gráfico de líneas.
Si hay una oblea de interés, simplemente coloco el cursor sobre el marcador de recuento de defectos y se dibuja un diseño de defecto de oblea utilizando los datos recopilados previamente.
Después de seleccionar una oblea de interés, puedo desplazarme sobre un marcador de defecto, en el mapa de oblea, que ejecutará una consulta SQL en la base de datos de imágenes y mostrará la imagen del defecto.
De esta forma, no hay necesidad de almacenar un gran número de imágenes de defectos en la tabla de datos. Solo recuerde y revise las pocas imágenes de interés.
Gracias por su apoyo en las secuencias de comandos.
- Felipe
PDPresentaré esta aplicación en el Nordic JMP User Group el 9 de octubre 
Re: ¿Cómo ejecutar una consulta al pasar el mouse usando datos del punto de datos subyacente?¡Excelente!
Estoy deseando que llegue.Re: ¿Cómo ejecutar una consulta al pasar el mouse usando datos del punto de datos subyacente?Hola Nascif,
Gracias por su pronta respuesta y gran solución. Esta es exactamente la funcionalidad que estaba buscando.
Intentaré construir un ejemplo de la aplicación final y compartirlo con ustedes.
Sláinte,
Felipe
Re: ¿Cómo ejecutar una consulta al pasar el mouse usando datos del punto de datos subyacente?Hola @jpol ,
Este es un ejemplo realmente genial, y obtuviste un 99% allí.
La variable que está buscando está en el contexto local:
ImageFor = local:_name;
Las extensiones de Graphlet JSL se ejecutan dentro de un bloque local que llamamos Hover Label Execution Context, o HLEC para abreviar. Contiene variables con datos y metadatos (como en nombres de columnas) extraídos de la definición del gráfico y el elemento visual subyacente. Puede encontrar la documentación de las variables HLEC aquí.
En el fragmento de código anterior, aproveché el hecho de que el contenido de las columnas etiquetadas está disponible en la HLEC por nombre (con un prefijo "_") pero también podría haber obtenido el contenido de cualquier columna en la tabla subyacente usando una referencia de índice directo, así:
ImageFor = Column(local:_dataTable, "name")[local:_firstRow];
Es importante usar el comando Column() aquí para asegurarse de obtener el valor de la tabla asociada con el gráfico, y no de la que abrió para obtener la imagen.
Consulte las secuencias de comandos adjuntas que implementan su diseño y luego evolucione para mostrar la imagen en las miniaturas y solo abra la tabla secundaria al hacer clic.
También es posible que desee consultar estas discusiones de la comunidad que tratan sobre escenarios similares:
* https://community.jmp.com/t5/Discussions/Hover-graphlet-from-another-data-table/mp/296005
* https://community.jmp.com/t5/Discusiones/Hover-label/td-p/287358
En el intercambio de archivos de la comunidad, Visor de etiquetas y Lector de wikis , son ejemplos de personalizaciones avanzadas de graphlet que muestran cómo mostrar múltiples imágenes e imágenes externas, respectivamente.
Por último, pero no menos importante, un complemento desvergonzado para mi próxima Presentación Discovery sobre Graphlets y su "plomería" subyacente.
https://community.jmp.com/t5/Discovery-Summit-Americas-2020/From-Details-on-Demand-to-Wandering-Workflows-Getting-to-know/ta-p/281539
Salud,
Nascif