Accéder au nombre de lignes/cols du fichier .jmp et aux notes sans ouvrir le fichierCes informations sont accessibles via le fichier JMP Open au moins sous Windows :

Vous vous demandez s'il est possible d'y accéder via des scripts sans ouvrir la table de données JMP ( Options d'ouverture de fichier de données ) ?
Les noms de colonne sont accessibles avec
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp", "Column Names Only");
Tableau de donnéesScriptRe : Accéder au nombre de lignes/cols du fichier .jmp et aux notes sans ouvrir le fichierMerci d'avoir souligné l'un des avantages de la participation Sommet Découverte et Rencontrez les développeurs/Demandez aux experts.
À la suite de votre conversation et de ce message dans JMP 17, nous ajouterons une option JSL pour obtenir le nombre de lignes et de colonnes dans une table de données, ainsi que les noms des colonnes et le contenu de la propriété Notes si elle existe . Bravo!
Re : Accéder au nombre de lignes/cols du fichier .jmp et aux notes sans ouvrir le fichierJ'ai assisté à la session Meet the Developers aujourd'hui lors du Discovery Summit pour poser des questions à ce sujet. Il semble qu'une solution comme celle que j'ai publiée précédemment (obtenir les noms de colonnes, N éléments() ceux pour le nombre de colonnes, ouvrir la table de données avec une colonne comme privée et N lignes() pour le nombre de lignes) est actuellement le moyen le plus rapide de le faire. Ils ont pris note alors peut-être qu'à l'avenir, ce sera possible sans ouvrir même des tables de données privées ou JMP fournira des fonctionnalités pour le faire.
Vous trouverez ci-dessous le script au format de fonction. Ils ont suggéré d'ajouter Close pour le dt_temp. Ce script peut nécessiter Wait(0); ici et là, mais comme cela fonctionnait sans eux, je n'en ai pas ajouté.
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"));Re : Accéder au nombre de lignes/cols du fichier .jmp et aux notes sans ouvrir le fichierLa façon dont JMP l'affiche dans le menu Ouvrir un fichier de données est beaucoup plus rapide (peut-être...). J'ai des tables assez larges, 60 colonnes, et très hautes, ~ 15 millions de lignes. L'ouverture de ceux-ci est assez lente. Je peux obtenir le nombre de colonnes en l'ouvrant uniquement en tant que noms de colonnes et peut-être le nombre de lignes en ouvrant datatable uniquement en tant que colonne unique mais toutes les lignes, mais je pense que cela sera encore plus lent. Bien sûr, il est possible que JMP fasse quelque chose comme ça dans les coulisses ?
Je pourrais peut-être implémenter quelque chose comme ceci:
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);Étant donné que le Discovery Summit se déroule actuellement, peut-être que je participe à l'une des sessions Meet-The-Developer et que je pose également cette question là-bas.
Re : Accéder au nombre de lignes/cols du fichier .jmp et aux notes sans ouvrir le fichierJe suggérerais de spécifier "Privé" plutôt que "Invisible". Cela ne rend pas JMP aussi difficile, car il n'a pas à créer les objets d'affichage.Re : Accéder au nombre de lignes/cols du fichier .jmp et aux notes sans ouvrir le fichierSalut @jthi ,
Je ne sais pas comment obtenir ces informations à partir de la boîte de dialogue de la fenêtre ouverte dans JMP, mais vous pouvez faire quelque chose comme ceci :
Names Default to Here(1);
dt=open("$SAMPLE_DATA/Big Class.jmp", Invisible);
Show(Nrows(dt));
Show(NCols(dt));
Close(dt);Il doit renvoyer ce qui suit dans la fenêtre Journal ou le journal intégré de la fenêtre de script :
N lignes(dt) = 40 ;
NCols(dt) = 5 ;
Le "Invisible" dans la commande d'ouverture ne fera pas apparaître la table de données au premier plan et la cachera en quelque sorte en arrière-plan. Vous pouvez même exécuter une commande Afficher les propriétés (dt) et obtenir une liste d'informations beaucoup plus complète sur la table de données.
Je sais que ce n'est pas exactement ce que vous voulez, mais ça peut faire l'affaire, je pense.
DS