Je veux faire un dépistage des valeurs aberrantes en listant les extraterrestres de ma classe.
Premier essai: Filtre de données locales
J'ai été assez choqué par tous les extraterrestres de Big Class !
... mais ensuite j'ai remarqué que le filtre de données était simplement ignoré (car le jour 1, il n'y avait pas d'extraterrestres dans la classe).
Cela semble lié à Filtre de données : comment spécifier les limites :
Si une valeur est simplement utilisée dans le filtre de données mais pas dans la table de données, elle est supprimée du fichier de données.
Ce comportement interfère avec un autre comportement de Jmp : si la dernière valeur de filtre est désélectionnée, tous les lignes sont sélectionnées (au lieu d'aucune).
Donc, avec le comportement actuel des filtres de données, cette approche ne fonctionne pas 
Ensuite, j'ai utilisé un Où() clause pour restreindre le rapport tabulé.
Malheureusement, si un jour il n'y a pas d'aliens dans la classe, la clause Where produit un message d'erreur - au lieu de restreindre l'ensemble de données à 0 lignes :
This Where-clause for data table 'Big Class' resulted in no rows: :alien == 1
De plus, la sélection de lignes pour le rapport semble être statique.
Après que XX soit devenu non extraterrestre - il est toujours répertorié dans le rapport :

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "alien", nominal, set each value( 0 ) );
myDashboard = Function( {myTitle,withWhereClause},
New Window( myTitle,
Eval(
Substitute(
Expr(
Tabulate(
Show Control Panel( 0 ),
Add Table(
Row Table( Grouping Columns( :sex, :age, :name ) )
),
,
__selectAliens__
)
),
Expr( __selectAliens__ ),
If( withWhereClause,
Expr( Where( :alien == 1 ) ),
Expr(Local Data Filter( Close Outline( 1 ), Add Filter( columns( :alien ) ), Where( :alien == 1 )) )
)
)
)
)
);
myDashboard("select aliens via Data Filter", 0 ); // 1st approach: Data Filter --> so many alienas ?!?! no, Data filter was ignored
myDashboard("select aliens via Where()", 1 ); // Where CLause + no matching row --> error message instead of a report
dt << add rows( {name = "XX", alien = 1, sex = "M", age = 200} );
wait(2);
myDashboard("select aliens via Where()", 1 ); // Where CLause + matching row --> dashboard is created, but ...
// XX gets human -> Dashboard stays the same :(
dt[41, {"alien"}] = 0;