Acceder al recuento de filas / columnas de archivos .jmp y notas sin abrir el archivoSe puede acceder a esta información a través del archivo JMP Open al menos en Windows:

Me pregunto si es posible acceder a estos a través de secuencias de comandos sin abrir la tabla de datos JMP ( Abrir opciones de archivo de datos )?
Se puede acceder a los nombres de las columnas con
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp", "Column Names Only");
Tabla de datosScriptingRe: Accediendo a .jmp file row / col count y notes sin abrir el archivoHola @jthi ,
No sé cómo obtener esa información del diálogo de ventana abierta en JMP, pero podría hacer algo como esto:
Names Default to Here(1);
dt=open("$SAMPLE_DATA/Big Class.jmp", Invisible);
Show(Nrows(dt));
Show(NCols(dt));
Close(dt);Debería devolver lo siguiente en la ventana Registro o en el registro incrustado de la ventana Scripting:
N filas (dt) = 40;
N Cols (dt) = 5;
El "Invisible" en el comando de apertura no hará que la tabla de datos aparezca al frente y de alguna manera la oculte en segundo plano. Incluso podría ejecutar un comando Mostrar propiedades (dt) y obtener una lista de información mucho más extensa en la tabla de datos.
Sé que no es exactamente lo que quieres, pero creo que puede hacer el trabajo.
DS
Re: Accediendo a .jmp file row / col count y notes sin abrir el archivoSugeriría especificar "Privado" en lugar de "Invisible". No hace que JMP trabaje tan duro, ya que no tiene que crear los objetos de visualización.Re: Accediendo a .jmp file row / col count y notes sin abrir el archivoLa forma en que JMP lo muestra en el menú Abrir archivo de datos es mucho más rápida (tal vez ...). Tengo algunas tablas que son bastante anchas, 60 columnas y muy altas, ~ 15 millones de filas. Abrirlos es bastante lento. Puedo obtener el recuento de columnas abriéndolo solo como nombres de columna y tal vez el recuento de filas abriendo la tabla de datos solo como una sola columna pero todas las filas, pero creo que esto seguirá siendo más lento. Por supuesto, ¿podría ser posible que JMP esté haciendo algo como esto detrás de escena?
Quizás podría implementar algo como esto:
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);Debido a que Discovery Summit está en curso, tal vez me sume a una de las sesiones de Meet-The-Developer y pregunte esto también allí.
Re: Accediendo al archivo .jmp, recuento de filas / columnas y notas sin abrir el archivoAsistí a la sesión de Meet the Developers hoy en Discovery Summit para preguntar sobre esto. Parece que una solución como la que publiqué anteriormente (obtener nombres de columna, N elementos () para el recuento de columnas, abrir la tabla de datos con una columna como privada y N filas () para el recuento de filas) es actualmente la forma más rápida de hacer esto. Tomaron una nota, por lo que tal vez en el futuro sea posible sin abrir ni siquiera tablas de datos privadas o JMP proporcionará funcionalidades para hacer esto.
A continuación se muestra el script en formato de función. Sugirieron agregar Close para dt_temp. Este script puede necesitar Wait (0); aquí y allá, pero como funcionó sin ellos, no he agregado ninguno.
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"));