J'identifierais les lignes associées aux alarmes déclenchées. Le gestionnaire appelé lors du déclenchement des alarmes reçoit les informations sur les points, notamment qc_sample (et qc_firstRow qc_lastRow). Cela devrait être parfait s'il n'y a qu'un seul graphique. L'échantillon identifie la ligne du tableau si nous avons des mesures individuelles. Malheureusement, j'ai une colonne BY qui se divise en plusieurs graphiques. Dans ce cas, qc_sample fait référence à l'échantillon de chaque graphique, ce qui rend difficile la récupération des lignes correspondantes dans le tableau. Existe-t-il un moyen simple de les obtenir ?
Oui, il semble que le script d'alarme semble être un instrument brutal dans la mesure où il n'y a aucun moyen évident (pour moi...) de relier les valeurs de « qc_sample » aux niveaux de la variable « By », et donc à la ligne appropriée dans le tableau de données.
Mais, en fonction de ce qui se passe dans votre script, vous pourrez peut-être utiliser « Process Screening » pour obtenir ce dont vous avez besoin. Le script ci-dessous devrait vous aider à démarrer : exécutez-le et inspectez le journal et les deux tableaux « détaillés » qu'il crée.
NamesDefaultToHere(1);
// Make some data
dt = NewTable("Alarms",
NewColumn("By", Numeric, Nominal, Formula(RandomInteger(1,2))),
NewColumn("Data", Numeric, Continuous, Formula(RandomNormal(0,1)))
);
dt << addRows(1000);
// Use process screening invisibly to get the details of all alarms (one table for each level of the 'By' variable)
ps = dt << Process Screening( Y(Column(dt, "Data")), By(Column(dt, "By")), Invisible );
dtList = ps << saveDetailsTable;
Report(ps[1]) << closeWindow;
// Control chart with alarm script
cc = dt << Control Chart(
Chart Col( :Data, Individual Measurement, Moving Range ),
By( :By ),
Alarm Script(
Write(
"Out of Control for test ",
qc_test,
" in column ",
qc_col,
" in sample ",
qc_sample,
"\!N"
)
)
);
// Turn on Test 1
cc << Test 1(1);