Consulta demasiado lenta para scriptHe usado Query Builder para escribir varias consultas. Luego coloqué estos guiones espalda con espalda. A continuación, quiero trabajar con las nuevas tablas de datos formadas a partir de las consultas.
Mi problema es que una de las consultas tarda> 10 segundos en ejecutarse, y el JSL que sigue a las consultas intenta trabajar con la tabla "a formar" (que no está allí cuando el script llega a esa parte del código) . Obviamente, esto provoca un error y cierra el script.
Intenté usar el comando "Ejecutar fondo", pero eso parece terminar el script por completo.
¿Alguna idea de cómo puedo ejecutar las consultas y forzar una ESPERA hasta que todas las consultas hayan devuelto sus tablas antes de ejecutar el resto del script (que actúa en esas tablas)?
Gracias,
Martín
Re: Consulta muy lenta para scriptLo siento, llegué tarde a esto: la sugerencia de Brian de usar Ejecutar en primer plano on the query en JSL es la forma de garantizar que una consulta finalice antes de que se ejecute la siguiente línea de JSL. No hay necesidad de volver a escribir!
eric
Re: Consulta muy lenta para scriptEn realidad, incluso mejor es usar Run Foreground.Lo siento por no hacerlo correctamente, de inmediato, pero algo como:
Consulta1 = Nueva Consulta SQL (
Conexión (...
) ,
ordenar por ( ) ,
PostQueryScript (...
)
) ;
Consulta1 << Ejecutar en primer plano;
Deberia trabajar.
Brian
Re: Consulta muy lenta para scriptHola martin,
También puede intentar desactivar las operaciones en segundo plano para las consultas.Esto funcionó para mí.Puede ir a "Preferencias->Generador de consultas->ODBC->Ejecutar consultas en segundo plano cuando sea posible" y desmarcar eso, o en el script puede hacer algo como:
Configuración del generador de consultas (Consulta en segundo plano (0))
En la parte superior de su guión.
Brian Corcorán
Desarrollo JMP
Re: Consulta muy lenta para scriptMuchas gracias pmroz!!!! Esto requiere un poco de reescritura, ¡pero funciona de maravilla!
Re: Consulta muy lenta para scriptProbaré eso y te dejaré saber cómo resulta.
Gracias
Re: Consulta muy lenta para scriptsospecho que el consulta << Ejecutar vuelve inmediatamente. No estoy seguro de cómo podrías sincronizar esto.
yo suelo ejecutar SQL en cambio, y eso parece esperar hasta que se complete antes de avanzar en el guión. Por ejemplo, si tuviera 4 sentencias SQL para ejecutar:
dbc = create database connection(<CONNECTION-STRING>);
dt1 = execute sql(dbc, sql1);
dt2 = execute sql(dbc, sql2);
dt3 = execute sql(dbc, sql3);
dt4 = execute sql(dbc, sql4);
close database connection(dbc);</CONNECTION-STRING>
Re: Consulta muy lenta para scriptSí. Wait(0) en realidad no hace lo que sugieres. Las consultas en realidad regresan en un orden aleatorio, según (lo que parece ser) su tamaño y complejidad. Tengo 7 consultas y es la 4ta la que lleva mucho tiempo. He intentado poner esa consulta primero en el script, pero las otras se ejecutan tan rápido que esta aún no se ha completado cuando se ejecuta el código restante en el script.
Aquí hay parte del código que estoy usando, con gran parte eliminado para proteger la fuente. Pero, da la estructura general. Eliminé las consultas 4-7 y las últimas 4 declaraciones de unión al final por brevedad.
Consulta1 = Nueva Consulta SQL (
Conexión (...
) ,
ordenar por ( ) ,
PostQueryScript (...
)
) ;
Consulta1 << Correr ;
Esperar ( 0 ) ;
Consulta2 = Nueva Consulta SQL (
Conexión (...
) ,
ordenar por ( ) ,
PostQueryScript (...
)
) ;
Consulta2 << Correr ;
Esperar ( 0 ) ;
Consulta3 = Nueva Consulta SQL (
Conexión (...
) ,
ordenar por ( ) ,
PostQueryScript (...
)
) ;
Consulta3 << Correr ;
Esperar ( 0 ) ;
//Unir tablas
Tabla12 = Tabla de datos ( "01" ) << Unirse (
Con ( Tabla de datos ( "02" ) ) ,
Fusionar columnas con el mismo nombre,
Bandera de partido ( 0 ) ,
Por columnas coincidentes (
:
) ,
Soltar múltiplos ( 0 , 0 ) ,
Incluir no coincidencias ( 0 , 0 ) ,
Conservar el orden de la mesa principal ( 1 ) ,
Tabla de salida ( "12" )
) ;
Tabla123 = Tabla de datos ( "12" ) << Unirse (
Con ( Tabla de datos ( "03" ) ) ,
Fusionar columnas con el mismo nombre,
Bandera de partido ( 0 ) ,
Por columnas coincidentes (
:
) ,
Soltar múltiplos ( 0 , 0 ) ,
Incluir no coincidencias ( 0 , 0 ) ,
Conservar el orden de la mesa principal ( 1 ) ,
Tabla de salida ( "123" )
) ;
Re: Consulta muy lenta para script¿Puso una espera (0); comando después de cada recuperación? Eso debería obligar a JMP a esperar a que se completen los comandos anteriores.