Activer et désactiver les tables de données privéesPour garder bon nombre de mes scripts propres, j'utilise beaucoup "privé". Cependant, si je dépanne un script, le fait d'avoir des tables privées me gêne et je dois commenter et, espérons-le, me rappeler de décommenter lorsque j'apporte des modifications pour voir si les modifications fonctionnent.
Existe-t-il un moyen, ou JMP dispose-t-il déjà d'un moyen global d'activer ou de désactiver les tables privées ? Dans ma tête, je pourrais prendre le temps de faire des doublons de mon code avec et sans le privé et de le lier à une variable de test, mais cela ne semble pas être la meilleure réponse.
Je ne savais pas s'il y avait des idées là-bas sur la façon de le faire. Merci!
Automatisation et scriptRe : Activer et désactiver les tables de données privéesC'est excellent, Vince ! C'est similaire à ce que j'ai fini par faire, mais c'est beaucoup plus élégant en permettant à la vue de données d'aller dans les deux sens.
Re : Activer et désactiver les tables de données privéesConvenu @Craige_Hales et @txnelson sur ces points.@Ressel , la principale raison pour laquelle j'opte généralement pour les tables privées est lorsque j'ai un script qui modifie/met à jour/etc de nombreuses tables. S'ils sont laissés seuls, ils peuvent être très flashy sur l'écran devant un utilisateur lorsque les fenêtres apparaissent, disparaissent, etc. S'ils sont invisibles, l'utilisateur peut voir beaucoup d'activité dans la liste des fenêtres qui peut également être une distraction.
J'opte la plupart du temps pour des tables privées car elles permettent l'interface la plus propre pour l'utilisateur, seules les étapes visuelles nécessaires étant visuelles. Selon le nombre de tables et l'ordinateur des utilisateurs, les avantages de la RAM sont également un gain de vitesse globale.
Re : Activer et désactiver les tables de données privéesJim a raison ; une table privée n'a pas de structure de fenêtre de système d'exploitation créée, tandis qu'une table invisible a une fenêtre qui n'est pas affichée. Il peut y avoir une petite économie de CPU et de mémoire qui peut s'additionner s'il y a des centaines ou des milliers de tables.
La seule fois où j'ai utilisé le privé, c'est quand j'ai écrit FileSnapper et voulait que l'application s'exécute silencieusement sans perturber l'environnement JSL pour tout autre JSL qui s'exécute. Vous ne pouvez généralement pas détecter la table de données privées. Il a un nom de colonne qui s'impose un peu.
Re : Activer et désactiver les tables de données privéesNathan, est-ce vraiment utile ?
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
privateTable = Function({bool,dt},{default local},
table_name = dt << Get Name;
If(!bool & !(dt << HasDataView), // no table but you want one
print("making "||table_name||" public");
dt << New Data View;
Return(dt);
, // elif
bool & dt << HasDataView, // you have a table but want it private
print("making "||table_name||" private");
dt_sub = dt << Subset( All rows, Selected columns only( 0 ), "private" );
close(dt, no save);
dt_sub << Set Name(table_name);
return(dt_sub);
, // else just return what's given
print("passthrough");
return(dt);
)
);
dt = privateTable(1, dt); // should make it private
wait(2);
dt = privateTable(1, dt); // should do nothing
wait(2);
dt = privateTable(0, dt); // should do make it visible
wait(2);
dt = privateTable(1, dt); // should do make it private again
Re : Activer et désactiver les tables de données privéesÉconomiser de la RAM est l'avantage.Une table privée ne crée aucun objet visible.Tous ces objets devraient être mappés en mémoire s'ils sont visibles.
Re : Activer et désactiver les tables de données privéesQuels sont précisément les avantages d'utiliser des tables privées ? Économiser de la mémoire ?
Re : Activer et désactiver les tables de données privéesOui! C'est définitivement sur mon radar. J'ai une bibliothèque de fonctions/utilitaires que je garde beaucoup de ces choses sous la main (et que je distribue), et le passage à l'aspect de la fonction personnalisée est un plan à long terme pour la plupart des fonctions les plus dynamiques.
Re : Activer et désactiver les tables de données privéesSi vous avez souvent besoin de cette fonction, vous pourriez bénéficier de la création d'une fonction personnalisée Créer des fonctions, des transformations et des formats personnalisés (jmp.com) .De cette façon, vous pouvez également voir la fonction personnalisée directement à partir de l'index de script.
Re : Activer et désactiver les tables de données privéesMerci tout le monde! J'ai fini par faire ce qui suit qui, bien que pas idéal, devrait plutôt bien fonctionner. J'ai créé une fonction et j'ai une variable en haut de mon script pour activer/désactiver le privé
seePrivateTables = 1;
unprivatizeTable = Function({bool,tableName},{default local},
If(bool == 1,
tableName << New Data View;
Return(tableName)
,
Return(tableName)
)
);
// ... various code
dt1 = dt << Summary(.... , private);
dt1 = unprivatizeTable(seePrivateTables, dt1);Tant que je me souviens d'appeler cette fonction lorsque je crée de nouvelles tables, je devrais pouvoir activer et désactiver les tables privées en masse.
Re : Activer et désactiver les tables de données privéesLes tableaux visibles et invisibles sont suivis par JMP. Vous pouvez les surveiller dans la fenêtre d'accueil, par exemple. Les tables privées ne sont suivies que par le code qui les crée. Si vous ne parvenez pas à fermer une table privée avant d'écraser la variable JSL contenant son handle, la table est toujours en mémoire mais inaccessible. Il sera fermé à la fin de JMP. (Window->CloseAllDataTables ne trouve pas les tables privées et ne les ferme pas.)
Je suis également à peu près sûr que JMP ne propose pas de moyen de rendre une table visible ou invisible privée. Vous pouvez transformer une table privée en une table invisible, si vous avez la poignée, comme ceci :
dtA = Open( "$SAMPLE_DATA/Big Class.jmp", private );
// getting the data box makes it invisible
b = dtA << New Data Box();
// then show window makes it visible
dtA << Show Window;
Malheureusement, le mot clé invisible est un mot-clé et ne peut pas être passé en tant que variable, du moins à open(). Pas sûr du sous-ensemble, etc. Le mieux que vous puissiez faire est probablement d'ajouter un appel à une fonction utilisateur qui fait quelque chose comme ci-dessus après chaque point où vous créez ou ouvrez une table.
Re : Activer et désactiver les tables de données privéesVous pourrez peut-être rendre la table privée visible en utilisant << Nouvelle vue de données. Je ne sais pas à 100 % ce que cela fait dans ce contexte, mais cela semble rendre les tables privées visibles et je l'ai utilisé pour le débogage :
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp", private);
wait(2);
dt << New Data View;
aucune idée de comment le rendre à nouveau privé, mais << Show Window(0); le rendra au moins invisible.
Re : Activer et désactiver les tables de données privéesJe ne suis pas au courant de pouvoir activer et désactiver Private, car cela nécessiterait la construction à la volée de tous les objets d'affichage en mémoire.Cependant, vous pouvez utiliser le message Afficher la fenêtre pour afficher/masquer les tables de données normales ou invisibles.
data table("Daily Blood Pressure")<<SHOW window=""></SHOW>