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

Ich frage mich, ob es möglich ist, über Skripte auf diese zuzugreifen, ohne die JMP-Datentabelle 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");
DatenzugriffMassenanpassungBetreff: Auf die Zeilen-/Spaltenanzahl und Notizen einer JMP-Datei zugreifen, 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 werden wir in JMP 17 eine JSL-Option hinzufügen, um die Anzahl der Zeilen und Spalten in einer Datentabelle zusammen mit den Namen der Spalten und dem Inhalt der Notes-Eigenschaft (falls vorhanden) abzurufen . Bravo!
Betreff: Auf die Zeilen-/Spaltenanzahl und Notizen einer JMP-Datei zugreifen, ohne die Datei zu öffnenIch habe heute beim Discovery Summit an der Meet the Developers-Sitzung teilgenommen, um nachzufragen. Es scheint, dass eine Lösung wie die, die ich zuvor gepostet habe (Spaltennamen abrufen, N Items() für die Spaltenanzahl, Datentabelle mit einer Spalte als privat öffnen und N Rows() für die Zeilenanzahl) derzeit der schnellste Weg ist, dies zu tun. Sie haben dies zur Kenntnis genommen, sodass es in Zukunft möglicherweise möglich sein wird, nicht einmal private Datentabellen zu öffnen, oder JMP wird dafür Funktionen bereitstellen.
Unten finden Sie das Skript im Funktionsformat. Sie schlugen vor, Close für dt_temp hinzuzufügen. Dieses Skript benötigt möglicherweise Wait(0); hier und da, aber da es auch ohne funktionierte, 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: Auf die Zeilen-/Spaltenanzahl und Notizen einer JMP-Datei zugreifen, ohne die Datei zu öffnenDie Art und Weise, wie JMP es im Menü „Datendatei öffnen“ anzeigt, ist viel schneller (vielleicht ...). Ich habe einige Tabellen, die ziemlich breit sind, 60 Spalten, und sehr hoch, etwa 15 Millionen Zeilen. Das Öffnen geht ziemlich langsam. Ich kann die Spaltenanzahl ermitteln, indem ich sie nur als Spaltennamen öffne, und möglicherweise die Zeilenanzahl, indem ich die Datentabelle nur als einzelne Spalte, aber als alle Zeilen öffne, aber ich denke, das wird immer noch langsamer sein. Natürlich könnte es sein, dass JMP so etwas hinter den Kulissen macht?
Ich könnte vielleicht so etwas umsetzen:
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 gerade der Discovery Summit stattfindet, nehme ich vielleicht an einer der Meet-The-Developer-Sitzungen teil und frage dies auch dort.
Betreff: Auf die Zeilen-/Spaltenanzahl und Notizen einer JMP-Datei zugreifen, ohne die Datei zu öffnenIch würde vorschlagen, „Privat“ statt „Unsichtbar“ anzugeben. Dadurch ist JMP weniger arbeitsintensiv, da die Anzeigeobjekte nicht erstellt werden müssen.Betreff: Auf die Zeilen-/Spaltenanzahl und Notizen einer JMP-Datei zugreifen, ohne die Datei zu öffnenHallo @jthi ,
Ich weiß nicht, wie ich diese Informationen aus dem Dialog zum Öffnen des Fensters in JMP erhalten kann, aber Sie könnten so etwas 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 „Unsichtbar“ im Befehl „Öffnen“ führt nicht dazu, dass die Datentabelle in den Vordergrund rückt, sondern versteckt sie gewissermaßen im Hintergrund. Sie könnten sogar den Befehl „Show Properties“ (dt) ausführen und eine viel umfangreichere Liste von Informationen zur Datentabelle erhalten.
Ich weiß, dass es nicht genau das ist, was Sie wollen, aber ich denke, es kann den Zweck erfüllen.
DS