Zugriff auf die Anzahl der Zeilen / Spalten und Notizen der .jmp-Datei, ohne die Datei zu öffnenAuf diese Informationen kann zumindest unter Windows über die JMP Open-Datei zugegriffen werden:

Ich frage mich, ob es möglich ist, über Skripte auf diese zuzugreifen, ohne JMP datatable zu öffnen ( Öffnen Sie die Datendateioptionen )?
Auf Spaltennamen kann mit zugegriffen werden
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp", "Column Names Only");
DatentabelleSkriptingBetreff: Zugriff auf die Anzahl der Zeilen und Spalten der .jmp-Datei und Notizen, ohne die Datei zu öffnenHallo @jthi ,
Ich weiß nicht, wie ich diese Informationen aus dem Dialogfeld zum Öffnen des Fensters in JMP abrufen kann, aber Sie könnten Folgendes tun:
Names Default to Here(1);
dt=open("$SAMPLE_DATA/Big Class.jmp", Invisible);
Show(Nrows(dt));
Show(NCols(dt));
Close(dt);Im Protokollfenster oder im eingebetteten Protokoll des Skriptfensters sollte Folgendes zurückgegeben werden:
N Zeilen (dt) = 40;
N Cols (dt) = 5;
Das "Unsichtbare" im Befehl "Öffnen" lässt die Datentabelle nicht nach vorne rücken und verbirgt sie im Hintergrund. Sie können sogar den Befehl Show Properties (dt) ausführen und eine viel umfangreichere Liste mit Informationen zur Datentabelle abrufen.
Ich weiß, dass es nicht genau das ist, was Sie wollen, aber es kann den Job machen, denke ich.
DS
Betreff: Zugriff auf die Anzahl der Zeilen und Spalten der .jmp-Datei und Notizen, ohne die Datei zu öffnenIch würde vorschlagen, "Privat" anstelle von "Unsichtbar" anzugeben. JMP arbeitet nicht so hart, da die Anzeigeobjekte nicht erstellt werden müssen.Betreff: Zugriff auf die Anzahl der Zeilen und Spalten der .jmp-Datei und Notizen, ohne die Datei zu öffnenDie Art und Weise, wie JMP es im Menü "Open Data File" anzeigt, ist viel schneller (möglicherweise ...). Ich habe einige Tabellen, die ziemlich breit sind, 60 Spalten und sehr hoch, ~ 15 Millionen Zeilen. Das Öffnen ist ziemlich langsam. Ich kann die Spaltenanzahl erhalten, indem ich sie nur als Spaltennamen öffne, und möglicherweise die Zeilenanzahl, indem ich die Datentabelle nur als einzelne Spalte, aber alle Zeilen öffne, aber ich denke, dies wird immer noch langsamer sein. Natürlich könnte es möglich sein, dass JMP so etwas hinter den Kulissen macht?
Ich könnte vielleicht so etwas implementieren:
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);Da derzeit der Discovery Summit stattfindet, nehme ich vielleicht an einer der Meet-The-Developer-Sitzungen teil und frage dies auch dort.
Betreff: Zugriff auf die Anzahl der Zeilen und Spalten der .jmp-Datei und Notizen, ohne die Datei zu öffnenIch habe heute an der Meet the Developers-Sitzung im Discovery Summit teilgenommen, um danach zu fragen. Es scheint, dass eine Lösung wie die, die ich zuvor veröffentlicht habe (Spaltennamen abrufen, N Elemente () für die Spaltenanzahl, offen mit einer Spalte als privat datierbar und N Zeilen () für die Zeilenanzahl), derzeit der schnellste Weg ist, dies zu tun. Sie haben eine Notiz gemacht, so dass es möglicherweise in Zukunft möglich sein wird, ohne auch nur private Datentabellen zu öffnen, oder JMP wird Funktionen bereitstellen, um dies zu tun.
Unten ist das Skript im Funktionsformat. Sie schlugen vor, Close für das dt_temp hinzuzufügen. Dieses Skript benötigt möglicherweise Wait (0). hier und da, aber da es ohne sie funktioniert hat, habe ich keine hinzugefügt.
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"));Betreff: Zugriff auf die Anzahl der Zeilen und Spalten der .jmp-Datei und Notizen, ohne die Datei zu öffnenVielen Dank, dass Sie einen der Vorteile der Teilnahme hervorgehoben haben Entdeckungsgipfel und treffen Sie die Entwickler / Fragen Sie die Experten.
Als Ergebnis Ihrer Konversation und dieses Beitrags in JMP 17 fügen wir eine JSL-Option hinzu, um die Anzahl der Zeilen und Spalten in einer Datentabelle sowie die Namen der Spalten und den Inhalt der Notes-Eigenschaft, falls vorhanden, abzurufen . Bravo!