Question sur les références du tableau (de Russel)
Cette question a été posée dans le fil de discussion sur " Re : Session pratique du 1er trimestre 2022 - Débutants" - et j'aimerais que d'autres personnes se joignent également à la discussion, alors je l'ai mise sur le forum de discussion.
Question sur les références de table que vous avez montrées aujourd'hui : si vous traitez plusieurs tables séquentiellement dans le cadre d'un script, parcourez-vous les références de table à l'infini (dt1, dt2, dt3,...) ou existe-t-il une solution plus intelligente ?
Contexte : je manipule fréquemment des tables (joindre, concaténer, diviser, etc.) et j'ai parfois plusieurs tables que j'ouvre, traite et ferme séquentiellement avant de passer à la table suivante dans le même script jusqu'à ce que j'aie la table finale que je veux. .
Re: Question sur les références du tableau (de Russel)@Georg merci!
Re: Question sur les références du tableau (de Russel)Salut @Ressel , il ne contient pas d'informations sur la création/écriture du SQL, mais davantage sur le déploiement de requêtes dans JMP au moyen d'une requête SQL ou de différentes manières. Donc, ma manière habituelle est d'utiliser un outil différent pour écrire ce SQL simple (comme "sélectionner le nom de big_class où âge> 15") et de déployer simplement ce script dans JMP. Mais vous verrez plusieurs exemples à quoi cela peut ressembler.
Re: Question sur les références du tableau (de Russel)Bonjour, oui, de nombreux paramètres ont été modifiés même si je ne me souviens plus exactement lesquels. Je veux dire, c'était entre les mains du support technique SAS, de notre support informatique et du mien. Beaucoup de temps a été consacré à essayer de résoudre ce problème. Cela n’a guère aidé. (Et j'ai récemment commencé à acquérir une légère maîtrise des données.)
De plus, je n'ai aucun problème à obtenir les données en les chargeant via un script et en manipulant la table, même si cela semble vraiment inefficace, étant donné que je charge à chaque fois 100 000 lignes, en supprime la majorité et répète une étape similaire avec la table suivante. . J'imagine que le générateur de requêtes ferait probablement le même travail, mais sur une interface différente ? Pour le moment, j'ai accès aux données dont j'ai besoin, mais ; en fonction de la charge de travail ; Je pourrais envisager d'importer du SQL brut dans JMP. (Je ne savais pas que c'était possible.)
Le lien ci-dessous contient des informations sur la création de SQL à utiliser avec/dans JMP ?
Merci!
Re: Question sur les références du tableau (de Russel)BTW, vous voudrez peut-être jeter un œil à cette présentation, il s'agit d'obtenir des données à partir d'une base de données avec JMP :
https://community.jmp.com/t5/Discovery-Summit-Europe-2021/Strategies-and-Examples-for-Data-Acquisition-From-Distributed/ta-p/349225
Re: Question sur les références du tableau (de Russel)Avez-vous essayé de modifier les paramètres dans les préférences de Query Builder ? Cela peut changer beaucoup de choses, par défaut beaucoup de données sont transférées à chaque modification (tous les niveaux de la base de données, les aperçus, etc.).
De plus, une fois que vous avez effectué la requête via l'interface graphique, vous pouvez la convertir en SQL personnalisé pour créer du SQL simple. Cela sera ensuite traité uniquement dans la base de données et est beaucoup plus rapide.
Ma méthode la plus connue consiste toujours à effectuer des tâches lourdes sur la base de données, mais cela dépend toujours de l'environnement. Il existe d'autres outils qui vous permettent de définir la requête sur la base de données, que vous pouvez utiliser dans JMP (par exemple SQL Query Builder, selon le fournisseur de votre base de données).
Vous pouvez également demander à votre service informatique (par exemple, l'administrateur de base de données) de vous aider avec certaines requêtes qui sont nécessaires régulièrement et d'importer le code SQL brut dans JMP.
Obtenir les données de la base de données dans le bon format est crucial, et cela vaut enfin la peine d'examiner l'ensemble du processus.
Re: Question sur les références du tableau (de Russel)J'ai déjà essayé d'utiliser le générateur de requêtes. Il était incroyablement lent et plantait constamment. J'ai donc contacté le support technique SAS, mais ils n'ont pas pu résoudre le problème. En conséquence, je me suis contenté de gérer des tables individuelles dans un script, ce qui ; étant donné les performances lamentables du générateur de requêtes ; est beaucoup plus pratique et efficace. Il se peut que cela soit dû au fait que les tables que je charge contiennent plus de 100 000 lignes - c'était au moins la conclusion du support technique. Hélas, je n'ai pratiquement nulle part ailleurs vers qui me tourner que ces tables « massives ».
De plus, je pense que je dois de toute urgence me familiariser avec le débogage. Bien que j'arrive à « disputer » quelques lignes de code utiles, je ne considère pas l'architecture, l'esthétique ou ; en réalité; comment créer un script pouvant être débogué. Malheureusement, c'est encore un concept étranger pour moi.
Re: Question sur les références du tableau (de Russel)Il y a aussi la possibilité de faire la manipulation des tables dans la base de données (définition de requête par exemple par Query Builder ou en SQL natif). Ceci est avantageux pour les grands ensembles de données, car vous évitez le trafic et imposez une lourde charge au serveur. Ensuite, vous devez également gérer moins de tables dans JMP.
Re: Question sur les références du tableau (de Russel)Les noms descriptifs/de référence vous aideront (ou quelqu'un d'autre qui devra modifier votre code) à un moment donné. Cela facilite également l'impression de débogage lorsque vous pouvez utiliser Show(dt_batchid_loc); par exemple pour voir le nom des tables créées.
Il peut également être utile d'utiliser Output table ("nom de la table") lors de la création de tables. Cela vous aidera si vous (quand vous) devez déboguer le code. Si vous ne le faites pas (j'ai tendance à sauter cela et cela vient me hanter de temps en temps), il est beaucoup plus facile de voir quelle table est ouverte à partir d'un nom comme "BatchID_with_Loc" par rapport à "Résumé 3041 sans titre par QC , Loc" ou quelque chose comme ça.
Re: Question sur les références du tableau (de Russel)Merci pour les réponses. Un peu plus sur le contexte avec lequel je travaille.
Je charge les tables de notre implémentation Google Cloud Platform via ODBC. Ces tableaux sont régulièrement mis à jour avec les données récentes de fabrication. Par exemple, la première table que je charge (je la référence comme dt ) comporte des ID de lot, des noms de paramètres pour différents paramètres de contrôle qualité, des résultats de mesure et des unités de mesure dans des colonnes séparées. Je l'ai divisé par nom de paramètre QC (et référence la sortie comme dt2 , fermeture dt ). Ensuite, par exemple, je charge une autre table qui fait référence aux ID de lot avec les sites de fabrication (que je référence comme dt3 ). Après cela, je pourrai rejoindre dt2 avec dt3 , créant dt4 et ainsi de suite, jusqu'à ce que j'aie un tableau contenant toutes les informations dont je pense avoir besoin avant de procéder à une analyse. Dans certains scripts, je traite près de 10 tables, toutes référencées comme dt(n) . C'est ce que permet mon niveau de compétence actuel.
J'ai un plan à moyen terme pour utiliser un tel script pour les graphiques de contrôle. Pour le moment, j'évalue uniquement visuellement les tendances et j'envoie des captures d'écran ou des graphiques exportés en HTML aux différentes parties prenantes.
Ce que je retiens de cette conversation, c'est d'utiliser des références de tableaux plus descriptives. C'est aussi ce qu'on appelle des poignées ?
Re: Question sur les références du tableau (de Russel)je suis d'accord avec @martindemel , cela dépend de l'endroit où se trouvent les fichiers, de l'ordre dans lequel vous les traitez et de ce que vous voulez en faire. JSL possède de nombreuses fonctions intégrées en dehors du journal amélioré qui peuvent vous aider. Par exemple, Fichiers dans le répertoire vous donne une liste de tous les fichiers d'un répertoire. Choisir un fichier vous permet de sélectionner de manière interactive un ou plusieurs fichiers dans un répertoire. Même si le journal amélioré capture bien les opérations interactives, vous souhaitez toujours remplacer les références de nom de table codées en dur par des références de variables aux tables. @martindemel en a montré une partie en utilisant dt = Ouvert(... Dans la plupart des cas, une opération JSL qui ouvre un fichier renverra un handle vers la table de données créée. Les descripteurs de table de données sont également créés lorsque vous envoyez un message à une table avec une opération du les tables menu. Par exemple, si vous créez un sous-ensemble, la syntaxe
subsetDT = dt << Subset(...
vous permettra de capturer la référence à la table nouvellement créée. Les autres opérations de table fonctionnent de la même manière.
Re: Question sur les références du tableau (de Russel)Salut @Ressel ,
cela dépend vraiment de ce que vous voulez faire finalement. Si vous avez, disons, 100 tables de données que vous souhaitez traiter de la même manière et fermer par la suite, une boucle (pour ouvrir, traiter, fermer chaque table) ferait-elle mieux le travail que d'ouvrir les 100 tables puis de les traiter une après L'autre. L'une des raisons est que vous ne créez pas autant de descripteurs de fenêtres, ce qui pourrait provoquer un autre problème du côté du système.
En général, je serais un peu plus descriptif dans le nom de la variable de table, donc je comprends mieux de quoi il s'agit, si cela a du sens. "dt" est principalement destiné au sale hack 
Vous pouvez également obtenir toutes les tables de données ouvertes, puis les parcourir en utilisant
Get Data Table List();
Ce serait probablement une décision judicieuse.
Que pensent les autres de cela ?