無需打開文件即可訪問 .jmp 文件行/列計數和註釋至少可以在 Windows 上通過 JMP Open 文件訪問此信息:

想知道是否可以通過腳本訪問這些而不打開 JMP 數據表(打開數據文件選項)?
列名可以通過以下方式訪問
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp", "Column Names Only");
數據存取大規模定制回复:在不打開文件的情況下訪問 .jmp 文件行/列計數和註釋感謝您強調參加的好處之一探索峰會並與開發人員會面/詢問專家。
根據您的對話和 JMP 17 中的這篇文章,我們將添加一個 JSL 選項來獲取數據表中的行數和列數,以及列的名稱和 Notes 屬性的內容(如果存在) 。 太棒了!
回复:在不打開文件的情況下訪問 .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"));回复:在不打開文件的情況下訪問 .jmp 文件行/列計數和註釋JMP 在“打開數據文件”菜單中顯示它的方式要快得多(也許......)。 我有一些表非常寬,有 60 列,而且非常高,大約有 1500 萬行。 打開這些相當慢。 我可以通過僅將其作為列名稱打開來獲取列計數,也可以通過僅將數據表作為單列但所有行打開來獲取行計數,但我認為這仍然會更慢。 當然,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 文件行/列計數和註釋我建議指定“私人”而不是“不可見”。 它不會使 JMP 工作困難,因為它不必創建顯示對象。回复:在不打開文件的情況下訪問 .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 列(dt) = 5;
打開命令中的“不可見”不會使數據表出現在前面,而是將其隱藏在後台。 您甚至可以執行 Show Properties(dt) 命令並獲取有關數據表的更廣泛的信息列表。
我知道這並不完全是您想要的,但我認為它可以完成這項工作。
DS