| Conférencier |
Transcription |
| Georg Raming (Siltronic AG) |
Bonjour tout le monde. |
| |
Aujourd’hui, je souhaite parler de stratégies et d’exemples d’acquisition de données à partir de sources distribuées et complexes. |
| |
Je m'appelle Georg Raming et je travaille chez Siltronic sur le développement de procédés de fabrication de monocristaux. J'ai une certaine expérience en évaluation statistique et en procédés. |
| |
et des données produits et de la formation statistique. Je suis également responsable du logiciel JMP chez Siltronic et des activités de formation pour quelques centaines d'utilisateurs. |
| |
Siltronic est l'un des principaux fabricants mondiaux de plaquettes de silicium hyper pures hautement spécialisées. |
| |
Quelques conseils techniques. Dans cette présentation, je travaille avec des tables de données plutôt qu'avec des bases de données, mais les concepts présentés ici sont initialement utilisés pour obtenir des données à partir de bases de données relationnelles via une connexion ODBC. |
| |
Et le générateur de requêtes JMP fonctionne de manière similaire pour les tables de données JMP et pour les tables de base de données. |
| |
Quel est l'objectif de la présentation d'aujourd'hui ? Il s'agit d'établir des méthodes simples et efficaces pour transférer des données d'une base de données vers votre JMP ou une table JMP. |
| |
Parlons d’abord des éléments constitutifs. |
| |
Il peut donc s’agir d’une table de données JMP. |
| |
Si vous avez généré une table de données à partir d'une requête de base de données, elle pourrait ressembler à ceci. J'ai donc utilisé la célèbre table d'exemple de JMP, Big Class, et j'ai interrogé les données via JMP Query Builder. J'ai supprimé tout le script fourni avec la table. |
| |
Et vous trouverez |
| |
pour cette table de données si vous l'interrogez via JMP Query Builder, plusieurs scripts et variables de table. |
| |
À l'intérieur de cette variable, vous pouvez voir le code SQL. La définition de la table de données est donc tirée de la table ou de la base de données. |
| |
Et vous avez ces scripts, un script source qui simplement |
| |
Il obtient une autre copie de la table de données d'origine, comme ceci. Vous pouvez voir ici que les scripts d'origine sont également présents, mais il s'agit également de scripts provenant du générateur de requêtes JMP. |
| |
Il existe également un script de modification de requête qui vous permet de modifier cette requête sur la table de données JMP et de l'exécuter également. |
| |
Il y a une requête de mise à jour depuis la base de données. Donc, si vous modifiez les données de votre table, |
| |
ou s'il y a de nouvelles données dans le tableau de données, vous pouvez simplement mettre à jour les données en appuyant sur ce bouton. |
| |
Comme ça. Ici aussi, les scripts proviennent de la table d'échantillons. |
| |
Ok, donc le prochain élément de construction est JMP Query Builder. |
| |
Donc, une fois que vous avez une ou plusieurs tables dans la base de données, vous souhaitez effectuer une requête comme ici, j'ai pris Big Class et Big Class Families de la table d'exemple JMP |
| |
répertoire et utilisez le générateur de requêtes JMP comme |
| |
ici sur les tables. JMP Query Builder. |
| |
JMP voit ces tables ouvertes |
| |
Il y en a aussi une dans le champ principal. Je peux ajouter une table secondaire comme celle-ci, et JMP crée alors automatiquement une jointure entre les deux tables. Voici comment elles sont jointes. Vous pouvez modifier cette jointure. |
| |
comme ça. |
| |
Vous verrez les détails ici. |
| |
Et ensuite vous pouvez continuer à construire la requête |
| |
comme ça. Vous avez les deux tables ici disponibles. |
| |
Ici, vous pouvez également modifier à nouveau la jointure |
| |
Et peut-être que vous voulez tout ajouter |
| |
colonnes, |
| |
comme ça. |
| |
Et peut-être que vous voulez mettre un filtre, |
| |
comme ça. |
| |
Et exécutez la requête. Puis vous recommencez |
| |
obtenir ce tableau de résultats avec les scripts du |
| |
exemples de tableaux dont nous n'avons pas besoin ici. |
| |
Je les supprime. Voici les scripts et les variables créés par JMP Query Builder. |
| |
comme je l'ai déjà utilisé. Et encore une fois, ici vous pouvez |
| |
Modifiez cette requête. Le script de la requête est enregistré dans cette table de résultats, comme nous l'avons défini précédemment. |
| |
Voici donc comment fonctionne le générateur de requêtes JMP. |
| |
Et comme mentionné précédemment, cela fonctionne de la même manière sur les tables de base de données que sur les tables d'exemple JMP. |
| |
Le prochain bâtiment... J'ai également mis ici quelques scripts et vous pouvez toujours passer du générateur de requêtes visuelles |
| |
à un SQL personnalisé |
| |
Requête. Ça marche ici. Un autre menu triangulaire rouge. |
| |
Convertissez en SQL personnalisé et ce que vous avez défini ici visuellement, |
| |
vous pouvez définir ici dans une requête SQL texte. |
| |
Vous pouvez l'exécuter. |
| |
Et lorsque vous regardez ici cette requête ou appuyez sur le bouton Modifier la requête, |
| |
Vous verrez la requête textuelle. Ce n'est donc qu'une seule façon de procéder. |
| |
conversion d'une requête visuelle en requête SQL personnalisée. |
| |
Alors laisse-moi juste ranger |
| |
quelques tables. D'accord. |
| |
L'étape suivante consiste à récupérer les données de la base de données et vous avez besoin d'une connexion ODBC à ces sources de données. |
| |
Généralement, les sources de données et les pilotes ODBC sont configurés par votre service informatique. Sous Windows, vous trouverez |
| |
ces connexions sous l'administrateur de la source de données ODBC. |
| |
N'oubliez pas que le nombre de bits des sources de la base de données doit être compatible avec JMP. Dans ce cas, j'utilise une application JMP 64 bits et j'ai donc besoin de pilotes 64 bits. |
| |
Et les sources d'utilisateurs, vous pouvez les configurer vous-même. |
| |
Les DSN système sont configurés par l'administrateur, ainsi que les pilotes pour différents types de bases de données. |
| |
En cas de dépannage, vous pouvez utiliser cet onglet pour le traçage |
| |
où la requête est allée et quel peut être le problème. |
| |
Un conseil de ma part serait de vérifier si la connexion fonctionne correctement à partir de ces sources de données. Ainsi, si vous cliquez sur « Configurer » et que vous êtes administrateur de la source de données, vous pourrez entendre « tester la connexion » pour une source donnée après avoir fourni vos identifiants. |
| |
Et si tout va bien, le système vous le dit |
| |
la connexion a réussi. |
| |
Ce n’est pas à cause de Windows que la requête ne fonctionne pas. |
| |
Vous trouverez d'autres détails dans le manuel JMP, dans la documentation. Par exemple, le chapitre 3 « Utilisation de JMP » est disponible ici. |
| |
Menu d'aide |
| |
et la bibliothèque de documentation JMP. Vous y trouverez une documentation complète sur l'utilisation de tous ces outils. |
| |
Il existe donc trois façons d'écrire ces requêtes SQL dans les scripts et le langage JSL. La première consiste à créer une nouvelle requête SQL, comme nous l'avons déjà fait. Elle se trouve ici, dans le menu JMP, sous « Table », puis « Générateur de requêtes JMP pour les tables JMP ». |
| |
Ou pour la base de données, vous pouvez la trouver ici sous Générateur de requêtes de base de données. |
| |
La commande « Nouvelle requête SQL » est la plus puissante de toutes. Elle génère un nouvel objet de requête, que vous pouvez enregistrer sous forme de fichier de requête JMP. Elle génère directement une table de données et fournit très bien l'origine des données, comme nous l'avons vu précédemment avec le script de modification et de mise à jour de la source. |
| |
Une autre commande JSL permettant d'interroger des données depuis une base de données est la commande « open database ». Vous trouverez également la documentation de toutes ces commandes dans l'index des scripts. Par exemple, ici : |
| |
si je tape |
| |
ouvrir |
| |
base de données, |
| |
vous pouvez trouver ici comment cela fonctionne pour toutes les commandes. |
| |
Et une troisième façon de se connecter à la base de données et de poser des requêtes est la connexion à la base de données. |
| |
Cela nécessite trois étapes. La première consiste à créer une connexion à la base de données. La seconde consiste à y insérer une ou plusieurs requêtes. Enfin, il faut fermer la connexion. |
| |
Et enfin, si vous avez écrit de bons scripts. |
| |
Vous devriez le rendre accessible à vous-même, ou peut-être à vos collègues, et il existe au moins deux façons de le faire. La première consiste à l'intégrer à un module complémentaire pour pouvoir le partager facilement avec d'autres personnes. L'autre possibilité est de l'intégrer à un menu personnalisé, comme je l'ai fait ici. |
| |
Et vous pouvez le trouver |
| |
Dans le menu, puis ici comme ceci. Deux modules complémentaires sont installés sur mon système. |
| |
Et voici mon témoignage personnel |
| |
menu personnalisé. |
| |
Bon, maintenant que nous avons terminé les éléments de base, passons aux exemples. |
| |
Et le premier exemple consiste à utiliser un script de table pour enregistrer la disposition de la table et la requête. |
| |
Cela pourrait ressembler à ceci. Si vous avez un tableau de données fourni |
| |
à partir de la base de données et vous y mettez également des scripts pour un joli graphique, |
| |
Vous pourriez vouloir l'utiliser tous les jours. Et il y a une belle possibilité ici. |
| |
pour dire, copier le script de table sans données. |
| |
Et vous pouvez ensuite utiliser ce script. |
| |
J'aimerais créer un nouveau script. Désolé. |
| |
Et collez-le dans la fenêtre de script. |
| |
Et voici cette nouvelle table en appuyant simplement sur le bouton Exécuter le script. |
| |
Et il est livré avec ???, sans données. Vous pouvez enregistrer ce script, par exemple, dans votre menu et récupérer les données, qui peuvent être très volumineuses. Il vous suffit d'appuyer sur le bouton « Mettre à jour depuis la base de données » pour que la table soit remplie avec toutes les données, provenant de la base de données ou d'ailleurs. |
| |
C'est donc une belle possibilité |
| |
pour simplement utiliser le script |
| |
pour obtenir les données de la base de données. |
| |
Le deuxième exemple |
| |
consiste à utiliser une requête à l'intérieur d'une table. |
| |
Voici comment procéder : si vous disposez d'une table de données et que vous souhaitez interroger des données supplémentaires, en fonction du contenu de votre table actuelle. |
| |
Alors je vais le montrer. |
| |
Je supprime quelques lignes. |
| |
Et avec ces trois noms, je veux aller dans une autre table pour récupérer des données. |
| |
Et c'est fait par ce script. |
| |
Et ici, vous pouvez voir à partir de ce tableau, j'ai obtenu les noms et j'ai fait une requête |
| |
pour interroger les données d'une autre table à partir de grandes familles de classes. |
| |
Et comment ça marche ? |
| |
Vous pouvez le trouver dans ce script. |
| |
C'est assez court. Ici, les noms sont tirés de la première requête de table définie, comme ici. |
| |
Les noms sont substitués dans la requête. |
| |
Et ici la question est posée à la table des grandes familles de classe. |
| |
Ok, je dois aussi fermer cette table. |
| |
Il s'agit d'un script de requête personnalisé avec interface utilisateur graphique. Par exemple, si vous avez une table de données volumineuse dans votre base de données et que vous en avez souvent besoin de petites quantités, |
| |
Vous pouvez bien sûr extraire toutes les données, mais il est peut-être plus flexible et efficace d'obtenir des données bien filtrées. Voici donc le fonctionnement. |
| |
Un tableau pour filtrer les données et un tableau contenant toutes les colonnes du tableau Big Data. Ici, nous pouvons filtrer graphiquement. Prenons par exemple les données « Femme » et « Âge ». J'ai donc utilisé seulement deux colonnes pour filtrer. |
| |
comme ça, 12 et 13 ans. |
| |
Et je peux vouloir avoir toutes les colonnes ou supprimer juste une colonne. |
| |
Je l'interroge |
| |
et obtenir le résultat correct avec ces restrictions. Comme vous pouvez le voir ici, dans le script source ou dans le SQL, |
| |
les restrictions sont ici |
| |
à partir de l'interface utilisateur graphique définie. |
| |
Et comment fait-il |
| |
Le script fonctionne ? C'est un peu |
| |
C'est plus complexe, bien sûr. Il y a donc la requête de filtrage. |
| |
La requête des colonnes. |
| |
Voici un script, une fonction qui convertit le |
| |
conditions de filtrage de données dans une condition SQL. |
| |
Il s'agit de la partie GUI, interface utilisateur graphique. |
| |
Et ici, enfin, les résultats de l'interface utilisateur graphique sont évalués et placés dans ce script personnalisé. |
| |
L'exemple suivant est une requête en deux étapes. Supposons que vous deviez d'abord interroger des identifiants de lots. |
| |
Et pour prendre ces identifiants dans une autre requête, peut-être vers une autre table de données pour obtenir des données supplémentaires, |
| |
Vous pouvez procéder ainsi. J'ai donc utilisé la table de données Big Class comme filtre. J'ai donc filtré uniquement les données masculines. |
| |
et |
| |
élève âgé de 13 ans ou moins. |
| |
Et j'ai pris ces noms pour interroger les familles de grandes classes, toutes les lignes, comme vous pouvez le voir ici. |
| |
Et |
| |
les deux tables sont connectées via une jointure virtuelle, comme vous pouvez le voir ici. |
| |
Donc |
| |
Cette table renvoie, par son nom, à l'autre table de la table de filtrage. Je peux l'utiliser |
| |
les colonnes du tableau de filtrage ici dans ce tableau comme si elles étaient |
| |
dans ce tableau. |
| |
C'est donc une bonne façon d'avoir plusieurs tables et d'utiliser le contenu d'une seule table. |
| |
Et le dernier exemple est |
| |
Comment exécuter deux ou plusieurs requêtes en arrière-plan et en parallèle. Je n'ai donc pas d'exemple ici. Ce sujet est abordé dans la communauté JMP. Si cela vous intéresse, vous pouvez y jeter un œil. |
| |
J'ai donc maintenant terminé mes exemples et les scripts du journal et du matériel de présentation sont disponibles en ligne. |
| |
Merci à la communauté pour ces discussions enrichissantes, et merci aux développeurs de JMP pour la conception et la maintenance de ce formidable logiciel. Enfin, merci pour votre attention. |