开放数据表的层级结构如何获取所有已打开数据表的层次结构?
子集
- 堆叠式/分体式桌子
- 汇总表
类似主菜单或窗口列表中的树状结构?
自动化和脚本编写回复:开放数据表的层级结构在我最后采用的方法中,我使用了@jthi的技巧来解析增强后的日志:
与增强日志对话
但或许还有更巧妙的方法,那就是破解窗口列表视图?

很遗憾:

……而且窗口列表没有列在getWindowList() 函数中。
回复:开放数据表的层级结构或者在 Get Window List() 函数中指定数据表?
Names Default To Here( 1 );
open_tables = Get Window List( Type( "Data Tables" ) ) << Get Window Title;
回复:开放数据表的层级结构或者
Names Default To Here( 1 );
open_tables = Get Data Table List();
回复:开放数据表的层级结构我知道这两个功能,但我不知道它们可以用来获取开放数据表的层次结构。
从返回的列表中,如何找出哪个表是另一个数据表的子集或汇总表?
回复:开放数据表的层级结构即将推出的新版助手在显示窗口时也遇到了同样的问题。目前只能查看名称并解析“-”。
回复:开放数据表的层级结构遗憾的是,从窗口名称无法判断这些表是关联的还是独立的。
我已向 JMP 支持部门提交了问题:TS -00278736
建议:将这个想法提交到愿望清单中。
已完成: GetOpenTableDependencyGraph() 和其他
回复:开放数据表的层级结构对于报表来说,操作起来稍微简单一些,可以使用“获取数据表”功能(比较麻烦的是获取平台引用)。以下是一些简化示例。
get_reference_table_window = Function({reportwindow}, {Default Local},
table = Empty();
tablelist = Get Data Table List() << get name;
window_title = reportwindow << Get Window Title;
table = Empty(); // one should definitely match...
For Each({tablename}, tablelist,
If(Starts With(window_title, tablename),
table = Datatable(tablename);
break;
);
);
return(table);
);
get_reference_table_helpkey = Function({reportwindow}, {Default Local},
table = Empty();
// look for OutlineBoxes with helpKey xml attribute
obs = reportwindow << XPath("//OutlineBox[@helpKey]"); // can run out of depth, could also loop over outlineboxes
objs = obs << Get Scriptable Object;
For Each({obj}, objs,
If(Is Empty(obj),
continue();
);
sobj = obj << Get Scriptable Object;
If(!Is Empty(sobj),
table = sobj << Get Data Table;
);
);
return(table);
);
对于数据表来说,情况会变得更加复杂,对于非链接表,只能依赖表名和源表脚本。对于链接表,您可以尝试一些更复杂的策略。