NewSQLQuery()에서 데이터 테이블 참조 가져오기 << 기본 이름을 Here(1)로 지정하여 배경 실행;백그라운드에서 실행하면 데이터 테이블 참조를 가져오는 데 문제가 있습니다.이 문제를 해결하는 방법을 아는 사람이 있나요?
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: NewSQLQuery() <<에서 데이터 테이블 참조 가져오기 << 기본 이름을 Here(1)로 사용하여 배경 실행;한 가지 옵션은 하위 쿼리에 새 네임스페이스를 사용하는 것입니다.
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 );
편집: 다음은 비슷한 예에 대한 링크입니다.
https://community.jmp.com/t5/JMP-Scripts/Run-queries-in-Background-wait-for-them-to-complete-and/ta-p/274591
Re: NewSQLQuery() <<에서 데이터 테이블 참조 가져오기 << 기본 이름을 Here(1)로 사용하여 배경 실행;이에 대한 소식이 있나요? 나는 똑같은 문제에 직면하고 있습니다!답변: JMP® 13의 일반적인 데이터 테이블 문제 해결: 요약을 대체하고 새로운 JMP 쿼리 빌더로 조인할 수 있습니까?지원하기 위해 버그를 넣었습니다.<
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;
)
);
답변: JMP® 13의 일반적인 데이터 테이블 문제 해결: 요약을 대체하고 새로운 JMP 쿼리 빌더로 조인할 수 있습니까?내 테스트에서는 여기에 기본 이름이 지정됩니다(1) - 그런 차이인 것 같아요.그만큼 온런완료() 기능이 동일하게 실행되지 않습니다. 여기 네임스페이스를 원본 스크립트로 사용합니다.결과를 보관하기 위해 자체 네임스페이스를 만드는 경우 쿼리가 완료된 후 변수에 액세스할 수 있어야 합니다.
답변: JMP® 13의 일반적인 데이터 테이블 문제 해결: 요약을 대체하고 새로운 JMP 쿼리 빌더로 조인할 수 있습니까?내가 이렇게 해도.
query_complete = 0;
query << Run Background(
OnRunComplete(
query_complete = 1;
dt = queryResult;
show(dt); //shows correctly for either one
)
);
On Run Complete가 나에게 영향을 미치지 않는 것 같습니다.부분적으로 실행한 다음 query_complete 값을 확인하면 Run Complete 스크립트가 실행된 후에도 여전히 0입니다.
답변: JMP® 13의 일반적인 데이터 테이블 문제 해결: 요약을 대체하고 새로운 JMP 쿼리 빌더로 조인할 수 있습니까?wait(1)을 추가해도 두 번째 show(dt)가 작동하지 않습니다.그것이 문제이다.백그라운드에서 실행되는 SQL 쿼리에서 데이터 테이블 참조를 얻을 수 있는 방법이 없습니다.
답변: JMP® 13의 일반적인 데이터 테이블 문제 해결: 요약을 대체하고 새로운 JMP 쿼리 빌더로 조인할 수 있습니까?이해가 안 될 수도 있지만 <
<