Comment filtrer un ensemble de données à l'aide d'un ensemble de données distinct avec des milliers d'ID (sous-requête, script)J'ai un "GROS" ensemble de données contenant plusieurs millions de lignes. Chaque ligne possède un champ IDENT spécifique. IDENT peut apparaître plusieurs fois. J'ai un autre ensemble de données plus petit, "SMALL", qui ne contient que des centaines de milliers de lignes. Chaque ligne possède également un champ IDENT spécifique.
Maintenant, je veux juste conserver toutes les lignes de BIG, qui ont le même IDENT dans SMALL. En d'autres termes : Comment filtrer BIG en utilisant le champ IDENT de SMALL. En utilisant SAS SQL, ce serait simple, par exemple
proc sql ;
créer une table FILTRÉE
comme sélectionnez * parmi BIG
où IDENT dans (sélectionnez IDENT parmi SMALL) ;
quitter ;
Puis-je faire quelque chose comme ça dans JMP ?
cordialement
Débutant
Re : Comment filtrer un ensemble de données à l'aide d'un ensemble de données distinct avec des milliers d'ID (sous-requête, script)dans le script JSL, cela ressemble à ceci :
data table ("Big") << join (with(data table("Small")),
by matching columns (::ID=:ID),
drop mutiples (0,0),
include nonmatches(0,0),
preserve main table order(1)) ;
Attention aux éventuelles petites fautes de frappe...
Re : Comment filtrer un ensemble de données à l'aide d'un ensemble de données distinct avec des milliers d'ID (sous-requête, script)Si vous exécutez la jointure de manière interactive, vous pouvez ensuite accéder à la table de données qui vient d'être créée, faire un clic droit sur l'élément "Source", à côté du triangle vert dans le panneau de table sur le bord gauche de la table de données, et sélectionner " Modifier".Il vous montrera le JSL qui a été utilisé pour créer la table de données jointe.
Re : Comment filtrer un ensemble de données à l'aide d'un ensemble de données distinct avec des milliers d'ID (sous-requête, script)J'apprécie vos efforts mais j'étais intéressé par une réponse scriptée, pas par une explication interactive.
Re : Comment filtrer un ensemble de données à l'aide d'un ensemble de données distinct avec des milliers d'ID (sous-requête, script)Cher Newbie2Jumpie,
cela est possible de plusieurs manières. Cela dépend si vous souhaitez créer un nouveau tableau ou si vous souhaitez simplement filtrer. Commençons par créer une nouvelle table (vérifiez si vous disposez de suffisamment de RAM) :
- Ouvrez les deux tables dans JMP
- Dans le menu du tableau, vous avez "Rejoindre" où vous pouvez créer une base de données comme rejoindre selon vos besoins, comme ceci par exemple

3. Appuyez sur ok et vous obtiendrez une nouvelle table raccourcie et pourrez fermer les deux autres tables.
Une chose similaire que vous pouvez réaliser avec le menu Tables -> JMP Query Builder, mais vous y avez encore plus d'options comme dans un générateur de requêtes de base de données et vous obtenez en plus du script source un script de mise à jour et d'autres options que vous pouvez utiliser pour modifier les options de requête. (Ci-joint un exemple pour illustrer cela (Big Class.jmp, ID_Table.jmp, SQLQuery1.jmp)
L'autre option vous permet de filtrer à la volée : utiliser des tables liées/référencées, également appelées jointures virtuelles. Là, vous avez besoin dans la table référencée d'une colonne avec le même nom que dans la grande table pour l'identifiant, et d'une autre colonne avec le même contenu que la colonne ID de la petite table (donc en fait deux fois la même colonne ID, juste avec des noms différents . (Veuillez jeter un œil au deuxième exemple. Dans le petit tableau, vous spécifiez la colonne ID avec le même nom que dans le grand tableau comme Link ID (clic droit sur la colonne et Link ID). Dans le grand tableau, vous faites un clic droit sur la colonne ID et sélectionnez Référence du lien et comme référence vous choisissez le petit tableau. Vous obtenez désormais toutes les colonnes de la petite table également visualisées dans la grande table sous forme de colonnes masquées. Vous pouvez maintenant filtrer cette deuxième colonne ID qui ne contient que des entrées comme dans le petit tableau. Cela exclura toutes les autres et ne prendra donc en compte que les lignes qui sont intéressantes, mais répertoriées dans un tableau différent.