Script de actualización de tabla de datos en tiempo real de JMP (desde el Generador de consultas)Esta es una pregunta sobre los scripts de actualización de tablas de datos en vivo de JMP. Específicamente, aquellos que son scripts de origen que se generan al usar Query Builder para conectarse a una base de datos en JMP con scripts posteriores a la consulta .
@LuizaFabreti y yo hemos estado probando algunos ejemplos y no está claro qué se ejecuta en PostQueryScript en JMP Live y qué no (qué se ignora).
En ambos casos, el PostQueryScript agrega una nueva columna de fórmula que concatena dos columnas (ID del fármaco y Descripción) para crear una nueva columna.
¿Alguien ha visto esto antes? ¿Alguna sugerencia?
@dieterpisot
@Alex_Lippincott
Re: Script de actualización de tabla de datos en tiempo real de JMP (desde el Generador de consultas)Que yo sepa, JMP Live no trata el PostQueryScript de forma diferente a como lo hace JMP. ¿Has probado a ejecutar el script de actualización en JMP? ¿Funciona allí?
Re: Script de actualización de tabla de datos en tiempo real de JMP (desde el Generador de consultas)Además, el segundo y el tercer script están generando errores como este:
Name Unresolved: New Formula Column in access or evaluation of 'New Formula Column' , New Formula Column(
Operation( Category( "Character" ), "Concatenate with Space" ),
Columns( :Drug ID, :Description )
) /*###*/
at line 1
Data Table( "Stability_Data_Stacked 2" )
Re: Script de actualización de tabla de datos en tiempo real de JMP (desde el Generador de consultas)Mi experiencia es similar. A veces funciona y a veces no. La función `NewColumn()` funciona, pero para algo más complejo recomiendo hacerlo fuera de la consulta en JSL. No estoy seguro de qué se supone que debe ser compatible, pero los scripts posteriores a la consulta no me parecen muy útiles.
Re: Script de actualización de tabla de datos en tiempo real de JMP (desde el Generador de consultas)No he realizado ninguna prueba, pero a veces conviene comprobar si las columnas que se crean y se desean usar posteriormente ya están creadas antes de que el intérprete termine de ejecutar el resto del script. Esto suele ocurrir al hacer referencia a nombres de tablas, nombres de columnas creadas y otras operaciones como la búsqueda y selección de filas.
Una llamada a wait() o wait(2) podría ayudar a comprobar si esta es la causa del error. Si es así, quizás convenga modificar la estructura del código, mantener el comando wait() en el script si el rendimiento no disminuye, considerar enfoques alternativos, etc.
Las manipulaciones de tablas en un script posterior a la consulta son algo difíciles; es recomendable gestionar los datos de la tabla en el script de actualización tan pronto como se haya creado la tabla, y no en la propia operación de obtención de datos.
Re: Script de actualización de tabla de datos en tiempo real de JMP (desde el Generador de consultas)Adjunto los archivos .jmpquery correspondientes. Ambos funcionan en JMP.
Tenemos un documento de Discovery para Baltimore donde voy a hacer la sugerencia de Alex: mover cosas fuera del script Post-Query antes de publicar en JMP Live O empezar desde cero al crear el script de actualización de datos (en lugar de depender de Source Script).
Re: Script de actualización de tabla de datos en tiempo real de JMP (desde el Generador de consultas)Tengo problemas para publicar el segundo archivo .jmpquery, pero con gusto te lo envío por correo electrónico si quieres probarlo.
La única diferencia es el script posterior a la consulta (en JMP Live, la columna se crea pero no se mueve):
// Nueva columna: Identificación del fármaco, Descripción
Tabla de datos ( "Stability_Data_Stacked" ) << Nueva columna ( "ID del fármaco, Descripción",
Personaje,
"Nominal",
Fórmula( Carácter( :ID del fármaco ) || " " || :Descripción )
) << Mover columnas seleccionadas( {:"ID del fármaco, Descripción"n}, después( :Descripción ) ) <<
Ejecutar fórmulas;
Re: Script de actualización de tabla de datos en tiempo real de JMP (desde el Generador de consultas)Creo que la suposición de Martin es bastante acertada. Se trata de algún tipo de problema de sincronización. Podría ser que PostQueryScript se ejecute de forma asíncrona y la consulta SQL regrese al script antes de que finalice la consulta posterior. La sesión de JMP Live no sabe que tiene que esperar y devuelve la tabla antes de que termine la consulta posterior. Añadir una función wait() para permitir que la consulta posterior finalice probablemente sea una buena solución.