Comment exécuter une requête au survol de la souris, en utilisant les données du point de données sous-jacent?Salut,
Je voudrais lancer une requête de base de données lors d'un survol de la souris.
Dans mon cas, j'ai plusieurs millions d'images, mais je ne souhaite en voir que très peu, une à la fois.
J'ai simulé un cas en utilisant les données des ensembles de données Big Class et Big Class Families.
Voici le scénario:
De ' Grande classe «Je trace le poids en fonction de la taille.
Par intérêt, je veux voir à quoi ressemble JAMES.
J'ai une photo de lui dans ' Familles de grande classe J'ai donc pensé que je pourrais jeter un coup d'œil en exécutant une requête lorsque je passe la souris sur le marqueur de JAMES sur le diagramme de dispersion GB.
J'ai essayé de profiter de la fonctionnalité Hover Label / Paste Graphlet. À partir du script ci-dessous, vous pouvez voir que la requête peut être facilement exécutée mais malheureusement, j'ai dû coder en dur "JAMES" dans la requête.
Ce dont j'ai besoin est que le nom "JAMES" soit placé dans une variable au survol de la souris et utilisé plus tard dans le SQL. De cette façon, je pouvais regarder l'image de n'importe quelle personne simplement en passant ma souris sur le (s) point (s) d'intérêt.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp" );
Graph Builder(
Variables( X( :height ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
dt = Open( "$Sample_Data/Big Class Families.jmp" );
//ImageFor = "JAMES";
ImQ = Query(
Table( dt, "t1" ),
"SELECT name, picture From t1 WHERE name = \!"JAMES\!" "
);
)
)}
)
)
);L'application finale est pour l'examen des plaquettes semi-conductrices, où après avoir fait une plaquette basée sur les emplacements des défauts, la requête retournait à la base de données et tirait l'image pour le (s) défaut (s) d'intérêt. Lorsque le nombre de défauts est parfois assez important, il n'est pas pratique de charger toutes les images dans la table de données à des fins de révision.
Merci,
Philippe
GraphiqueScriptingRe: Comment exécuter une requête au survol de la souris, en utilisant les données du point de données sous-jacent?salut @jpol ,
C'est un exemple vraiment cool, et vous en avez 99%.
La variable que vous recherchez est dans le contexte local:
ImageFor = local:_name;
Les extensions JSL du graphlet sont exécutées à l'intérieur d'un bloc local que nous appelons Hover Label Execution Context, ou HLEC en abrégé. Il contient des variables avec des données et des métadonnées (comme dans les noms de colonnes) extraites de la définition du graphique et de l'élément visuel sous-jacent. Vous pouvez trouver la documentation des variables HLEC ici.
Dans le fragment de code ci-dessus, j'ai profité du fait que le contenu des colonnes étiquetées est disponible dans le HLEC par nom (avec un préfixe "_") mais vous auriez pu également obtenir le contenu de n'importe quelle colonne de la table sous-jacente en utilisant une référence d'index directe, comme ceci:
ImageFor = Column(local:_dataTable, "name")[local:_firstRow];
Il est important d'utiliser la commande Column () ici pour vous assurer que vous obtenez la valeur de la table associée au graphique, et non celle que vous avez ouverte pour obtenir l'image.
Veuillez consulter les scripts ci-joints qui implémentent votre conception, puis faites-le évoluer pour afficher l'image sur les vignettes et n'ouvrez la table secondaire qu'en cliquant.
Vous pouvez également consulter ces discussions de la communauté qui concernent des scénarios similaires:
* https://community.jmp.com/t5/Discussions/Hover-graphlet-from-another-data-table/mp/296005
* https://community.jmp.com/t5/Discussions/Hover-label/td-p/287358
Sur l'échange de fichiers communautaires, Visionneuse d'étiquettes et Lecteur Wiki , sont des exemples de personnalisations avancées de graphlet qui montrent comment afficher respectivement plusieurs images et images externes.
Dernier point mais non le moindre, une prise sans vergogne pour ma prochaine présentation Discovery sur les graphlets et sa "plomberie" sous-jacente.
https://community.jmp.com/t5/Discovery-Summit-Americas-2020/From-Details-on-Demand-to-Wandering-Workflows-Getting-to-know/ta-p/281539
À votre santé,
Nascif
Re: Comment exécuter une requête au survol de la souris, en utilisant les données du point de données sous-jacent?Salut Nascif,
Merci pour votre réponse rapide et votre excellente solution. C'est exactement la fonctionnalité que je recherchais.
Je vais essayer de créer un exemple de l'application finale et de le partager avec vous.
Sláinte,
Philippe
Re: Comment exécuter une requête au survol de la souris, en utilisant les données du point de données sous-jacent?Excellent!
Dans l'attente.Re: Comment exécuter une requête au survol de la souris, en utilisant les données du point de données sous-jacent?Salut,
Toutes mes excuses pour le retard à vous répondre avec la démonstration promise.
Dans le lien vidéo ci-dessous, vous verrez l'application en cours d'utilisation.
Lien: https://www.loom.com/share/73150b6a45654d789a6d040bb661cddf
De la vidéo:
À l'aide de JMP, les données de défaut sont collectées à partir de la base de données de l'outil d'inspection.
JMP résume ensuite le nombre de défauts par lot / tranche et leur affiche un graphique linéaire.
S'il y a une tranche d'intérêt, je passe simplement la souris sur le marqueur de nombre de défauts et une disposition de défaut de tranche est dessinée à l'aide des données collectées précédemment.
Après avoir sélectionné une plaquette d'intérêt, je peux ensuite survoler un marqueur de défaut, sur la carte de plaquette, qui exécutera une requête SQL sur la base de données d'images et affichera l'image de défaut.
De cette manière, il n'est pas nécessaire de stocker un grand nombre d'images de défauts dans la table de données. Rappelez-vous et examinez les quelques images qui vous intéressent.
Merci pour votre soutien dans la création de scripts.
- Philippe
PS Je présenterai cette application dans le groupe d'utilisateurs Nordic JMP le 9 octobre:)
Re: Comment exécuter une requête au passage de la souris, en utilisant les données du point de données sous-jacent?Vous venez de faire ma journée, bon monsieur.
C'est vraiment génial!
Merci,
Nascif