從 NewSQLQuery() 取得資料表參考 << Run Back with Names Default to 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>
回覆:從 NewSQLQuery() 取得資料表參考 << 執行後台,名稱預設為此處(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
回覆:從 NewSQLQuery() 取得資料表參考 << 執行後台,名稱預設為此處(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) ——看來這就是差別。這OnRunComplete()函數沒有在同一個中運行這裡命名空間作為原始腳本。如果您建立自己的命名空間來儲存結果,則您應該能夠在查詢完成後存取變數。
回覆:使用 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 的值,即使運行完整腳本後它仍然為 0。
回覆:使用 JMP® 13 解決常見資料表問題:我們可以使用新的 JMP 查詢產生器取代摘要和連接嗎?新增 wait(1) 不會使第二個 show(dt) 工作。那就是問題所在。我無法找到從背景執行的 SQL 查詢取得資料表引用的方法。
回覆:使用 JMP® 13 解決常見資料表問題:我們可以使用新的 JMP 查詢產生器取代摘要和連接嗎?也許我不明白,但我認為這說明了為什麼您需要 <
如果您在 <