在不打开文件的情况下访问.jmp文件的行/列计数和注释至少可以在Windows上通过JMP Open文件访问此信息:

想知道是否可以通过脚本访问这些文件而无需打开JMP数据表(打开数据文件选项)?
列名可以通过以下方式访问
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp", "Column Names Only");
数据表脚本编写回复:在不打开文件的情况下访问.jmp文件的行/列数和注释你好@jthi ,
我不知道如何从JMP的打开的窗口对话框中获取该信息,但是您可以执行以下操作:
Names Default to Here(1);
dt=open("$SAMPLE_DATA/Big Class.jmp", Invisible);
Show(Nrows(dt));
Show(NCols(dt));
Close(dt);它应该在“日志”窗口或“脚本”窗口的嵌入式日志中返回以下内容:
N行(dt)= 40;
N Cols(dt)= 5;
open命令中的“ Invisible”不会使数据表显示在最前面,而是将其隐藏在后台。 您甚至可以执行Show Properties(dt)命令,并在数据表上获取更详尽的信息列表。
我知道这并不是您想要的,但我认为它可以胜任。
DS
回复:在不打开文件的情况下访问.jmp文件的行/列数和注释我建议指定“私有”而不是“不可见”。 由于不必创建显示对象,因此它不会使JMP如此困难。回复:在不打开文件的情况下访问.jmp文件的行/列数和注释JMP在“打开数据文件”菜单中显示它的方式更快(也许...)。 我有一些桌子很宽,有60列,非常高,约有1500万行。 打开这些文件相当慢。 我可以通过仅将其作为列名打开来获取列数,并且可以通过仅将datatable仅作为单列而打开所有行来获取行数,但是我认为这仍然会更慢。 当然,JMP可能在幕后做了类似的事情吗?
我也许可以实现这样的事情:
Names Default To Here(1);
dtPath = "$SAMPLE_DATA/Probe.jmp";
//dtPath = "$SAMPLE_DATA/Alcohol.jmp"; //table with notes
colNames = Open(dtPath, "Column Names Only");
colCount = N Items(colNames);
dt_temp = Open(dtPath, Select Columns([1]), Private);
notesTableVar = dt_temp << Get Table Variable("Notes");
rowCount = N Rows(dt_temp);
dt_temp = Empty();
Show(colCount, rowCount, notesTableVar);
//Show(colNames);因为发现峰会正在进行中,所以也许我跳入了开发人员见面会的其中一个会议,并在那里也提出了这个问题。
回复:在不打开文件的情况下访问.jmp文件的行/列数和注释我今天在发现峰会上参加了“与开发人员见面”会议,并对此进行了询问。 看来,像我之前发布的解决方案(获取列名称,N Items()用于列计数,打开数据表并将一列作为私有以及N Rows()用于行计数)的解决方案是目前最快的解决方案。 他们记下了笔记,因此也许将来甚至不打开私有数据表就可以成为可能,否则JMP将提供执行此操作的功能。
以下是函数格式的脚本。 他们建议为dt_temp添加Close。 该脚本可能需要Wait(0);在这里和那里,但是由于没有它们,它确实起作用了,所以我没有添加任何东西。
Names Default To Here(1);
//https://community.jmp.com/t5/Discussions/Accessing-jmp-file-row-col-count-and-notes-without-opening-file/td-p/366316
//Function to get column count, rowcount, table notes and column names to associative array
getTableInfo = function({path_to_table}, {Default Local},
//Check that file exists
If(!File Exists(path_to_table),
return(Associative Array({"error"}, {"File not found"}));
);
//Initialize associative array
retVal = Associative Array(
{"name", "rowCount", "columnCount", "notes", "columnNames"},
{"", 0, 0, "", {}}
);
//Open datatable as columns only list
colNames = Open(path_to_table, "Column Names Only");
//Check that table has atleast one column
If(N Items(colNames) > 0,
retVal["columnNames"] = colNames;
retVal["columnCount"] = N Items(colNames);
dt_temp = Open(path_to_table, Select Columns([1]), Private);
retVal["name"] = dt_temp << get name();
retVal["rowCount"] = N Rows(dt_temp);
);
//Get notes from "Notes" table variable
retVal["notes"] = dt_temp << Get Table Variable("Notes");
Close(dt_temp, no save);
return(retVal);
);
//Examples with tables from $SAMPLE_DATA
aa_probe = getTableInfo("$SAMPLE_DATA/Probe.jmp");
Show(aa_probe["name"],aa_probe["rowCount"], aa_probe["columnCount"], aa_probe["notes"]);
Show(getTableInfo("$SAMPLE_DATA/Alcohol.jmp"));
Show(getTableInfo("$SAMPLE_DATA/Alcohol.jmpmissing"));