Comment interroger une grande table de données en fonction d'un niveau de colonne et renvoyer les colonnes dont le nom contient ce niveau ?Nous souhaitons créer une application de surveillance de la qualité à déployer sur des dizaines d'installations de production (éventuellement publier sur JMP Live).
Pour chaque installation, nous disposons d'une table de données très longue et large (appelons-la dtBigBoy, <1 000 colonnes, 10 000 à 100 000 lignes) actualisée à partir d'un historique de données de processus, non interrogeable directement (nous récupérons toutes les données entre les horodatages de début et de fin et les concaténons à la table existante). L'une des colonnes : Grade contient le nom du produit en cours de fabrication (pour cette ligne). Le nom de la colonne est le suivant : Grade.Property.#. Il y a au moins une colonne Grade.Property.# par Grade. L'un des cas d'utilisation est celui où l'utilisateur s'intéresse à un grade spécifique (par exemple, ABCD001) et souhaite consulter toutes les données relatives aux propriétés.
- Quelle est la méthode la plus efficace ? Utiliser un filtre de données local sur dtBigBoy et utiliser des cartes de contrôle, etc. ?
OU sélectionnez uniquement les lignes où :Grade == Chosen.Grade et les noms de colonnes contiennent Chosen.Grade et créez un sous-ensemble ?
- Comment créer une boîte de dialogue de sélection qui lit la colonne « Grade » et présente les niveaux sous forme de choix ? Le choix de l'utilisateur est enregistré dans la variable « Chosen.Grade ».
- Comment sélectionner les colonnes dont le nom contient Chosen.Grade ?
- Est-il plus efficace de faire 1 à 3 OU d'utiliser JMP Table Query pour obtenir les lignes et les colonnes dont nous avons besoin à partir de dtBigBoy ?
Merci d'avance depuis Kuala Lumpur, Malaisie, ville humide et torride !
Automatisation et scriptsAccès aux donnéesRe : Comment interroger une grande table de données en fonction d'un niveau de colonne et renvoyer les colonnes dont le nom contient ce niveau ?Je ne suis pas sûr, mais je pense que le filtre de données local sera similaire à un sous-ensemble lié ; la table filtrée dépend de la table restant ouverte. 1e3 lignes * 1e5 colonnes * 8 octets/nombre représente moins de 1 Go et devrait tenir dans une mémoire de 16 Go ou plus. Les sous-ensembles liés ne devraient pas augmenter significativement la mémoire requise.
Vous pouvez essayer la plateforme de synthèse interactive pour obtenir un tableau récapitulatif de la colonne des notes. Vous pouvez y obtenir le script.
Vous pouvez écrire le script de la plateforme du sous-ensemble de la même manière. Vous écrivez une boucle pour choisir les colonnes du sous-ensemble.
Je pense qu'il est peu probable que quiconque connaisse la réponse à la dernière question sans avoir essayé les deux. Je pense que l'une ou l'autre pourrait suffire.
Re : Comment interroger une grande table de données en fonction d'un niveau de colonne et renvoyer les colonnes dont le nom contient ce niveau ?Selon le type de graphique dont vous disposez, cela ne devrait pas représenter trop de données. Tracez-vous les 1 000 colonnes simultanément ? L'utilisateur serait-il capable de traiter autant de données d'un coup ? Je commencerais par un filtre de données local (utilisez le filtre conditionnel si vous le souhaitez), puis j'utiliserais un script si nécessaire (cela ne fonctionnera probablement pas dans JMP Live). Changer de colonne est probablement la partie la plus difficile si vous ne pouvez pas vous fier uniquement aux sélecteurs de colonnes. Fournir des exemples de données simples avec quelques explications supplémentaires pourrait être utile.
Lorsque je devais gérer plus de 4 millions de lignes, j'utilisais des scripts avec filtre de données local. Ce n'était pas vraiment dû à la lenteur de l'affichage, mais plutôt à la complexité de la mise à jour du filtre : si une modification est apportée, la mise à jour est immédiate et je ne peux pas forcer la mise à jour uniquement pour des modifications spécifiques. J'ai donc utilisé le tableau récapitulatif avec le filtre de données local et la fonction de modification, puis j'ai mis à jour les données affichées en conséquence. Vous pouvez également utiliser un filtre entièrement personnalisé avec des listes déroulantes et des sous-ensembles liés.
Re : Comment interroger une grande table de données en fonction d'un niveau de colonne et renvoyer les colonnes dont le nom contient ce niveau ?Craige : Merci pour les informations sur la mémoire et les suggestions ! Nous allons les tester.
Re : Comment interroger une grande table de données en fonction d'un niveau de colonne et renvoyer les colonnes dont le nom contient ce niveau ?Jarmo :
Merci pour les suggestions.
Non, nous ne traçons pas toutes les colonnes simultanément. Nous souhaitons créer un graphique IMR par Grade/Propriété. Chaque Grade et chaque Propriété ayant des spécifications différentes, il faut diviser le dt par Grade/Propriété. Cela produit de nombreuses colonnes éparses. Voir l'extrait ci-dessous pour une seule propriété pour 12 Grades. Le Générateur de cartes de contrôle n'apprécie pas les lignes vides.
Snippet of datatableSnippet of datatableExtrait de la table de données
Re : Comment interroger une grande table de données en fonction d'un niveau de colonne et renvoyer les colonnes dont le nom contient ce niveau ?La situation a peut-être changé depuis 2021, mais cet article aborde certaines options concernant les valeurs manquantes dans le générateur de graphiques de contrôle . Comment dessiner des graphiques de contrôle qui ignorent les données manquantes ? (et bien sûr, via des scripts, il existe de nombreuses options différentes).
Modifier : Méthodes de qualité et de processus > Générateur de cartes de contrôle > Échantillons exclus et masqués dans le Générateur de cartes de contrôle