从 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 查询生成器替换摘要和连接吗?也许我不明白,但我认为这说明了为什么您需要 <
如果您在 <