Obteniendo una referencia de tabla de datos de NewSQLQuery() << Ejecutar en segundo plano con nombres predeterminados aquí(1);Tengo problemas para obtener la referencia de la tabla de datos si la ejecuto en segundo plano.¿Alguien sabe cómo solucionar esto?
names default to here(1);
sql_query = New SQL Query(
Connection(
"ODBC:DSN=Test Source;DATABASE=Test;"
),
QueryName( "Thingy" ),
Select(
blah
),
From(
other blah
)
);
sql_query << Run Background(
OnRunComplete(
dt = queryResult;
dt = data table(queryResult<<GET name=""></GET>
Re: Obtener una referencia de tabla de datos desde NewSQLQuery() << Ejecutar en segundo plano con nombres predeterminados aquí(1);Una opción es utilizar un nuevo espacio de nombres para la subconsulta:
names default to here(1);
// Namespace to share data between background query and this script
ns = new namespace( "subquery" );
// The background query will set to 1 when the background query is complete
ns:isdone = 0;
sql_query = New SQL Query(
Connection( "ODBC:DSN=Test Source;DATABASE=Test;" ),
QueryName( "Thingy" ),
Select( blah ),
From( other blah )
);
sql_query << Run Background(
OnRunComplete(
ns = namespace( "subquery" );
ns:result = queryResult;
ns:dt = data table ( queryResult << Get Name );
ns:isdone = 1;
)
);
//every second check if the query is done (timeout after 10 seconds)
i=0;
while( ( i < 10 ) & ( ns:isdone == 0 ) ,
i++;
if( ns:isdone == 1, show( ns:dt ), show( "Query not done yet." ); wait( 1 ); );
);
//now you can reference the data table
show( ns:dt );
Editar: aquí hay un enlace a un ejemplo similar:
https://community.jmp.com/t5/JMP-Scripts/Run-queries-in-background-wait-for-them-to-complete-and/ta-p/274591
Re: Obtener una referencia de tabla de datos desde NewSQLQuery() << Ejecutar en segundo plano con nombres predeterminados aquí(1);Alguna noticia sobre esto. ¡Me encuentro con el mismo problema!Re: Resolver problemas comunes de tablas de datos con JMP® 13: ¿Podemos reemplazar el resumen y unirnos con el nuevo JMP Query Builder?Puse un error para soportar.Me parece que <
query_complete = 0;
dt_list = {};
dt_array = associative array();
str = "A";
ns = new namespace("Test");
query << Run Background(
OnRunComplete(
try(show(query_complete)); //this won't show, but if you run it twice it will show as 1
try(show(dt_list));
try(show(dt_array));
try(show(str));
try(show(ns));
try(show(namespace("Test")));
query_complete = 1;
)
);
Re: Resolver problemas comunes de tablas de datos con JMP® 13: ¿Podemos reemplazar el resumen y unirnos con el nuevo JMP Query Builder?En mi prueba no agregué el Nombres predeterminados aquí (1) -Parece que esa es la diferencia.El Al ejecutarse completo() La función no se ejecuta en el mismo Aquí espacio de nombres como el script original.Si crea su propio espacio de nombres para contener los resultados, debería poder acceder a las variables una vez completada la consulta.
Re: Resolver problemas comunes de tablas de datos con JMP® 13: ¿Podemos reemplazar el resumen y unirnos con el nuevo JMP Query Builder?Incluso si hago esto.
query_complete = 0;
query << Run Background(
OnRunComplete(
query_complete = 1;
dt = queryResult;
show(dt); //shows correctly for either one
)
);
Parece que On Run Complete no me afecta.Si lo ejecuto por partes, verifico el valor de query_complete, sigue siendo 0 incluso después de ejecutar el script Ejecutar completo.
Re: Resolver problemas comunes de tablas de datos con JMP® 13: ¿Podemos reemplazar el resumen y unirnos con el nuevo JMP Query Builder?Agregar wait(1) no hace que el segundo show(dt) funcione.Ese es el problema.No hay forma de encontrar una referencia a una tabla de datos a partir de una consulta SQL ejecutada en segundo plano.
Re: Resolver problemas comunes de tablas de datos con JMP® 13: ¿Podemos reemplazar el resumen y unirnos con el nuevo JMP Query Builder?Tal vez no lo entiendo, pero creo que esto muestra por qué necesita el script <
Si agrega un Wait(1) entre la llamada <