Recherche de colonnes et de lignes consécutivesBonjour,
Ci-joint le tableau de données de 2 PARTIES, à savoir PART-02 et PART-03. Chaque partie possède ses propres colonnes et lignes (ColX, RowY). Je souhaite utiliser JSL pour identifier la PART qui a des colonnes ou des lignes consécutives apparaissant plus de 4. Ici, PART-02 est celle qui a des lignes apparaissant plus de 4 fois de suite. Je veux que ma sortie soit juste un tableau avec PART ID et le résultat comme ci-dessous.


Automatisation et scriptsRe : Recherche de colonnes et de lignes consécutivesVoici le JSL que j'ai trouvé et qui crée la nouvelle table et la remplit comme vous l'avez spécifié
Names Default To Here( 1 );
dt = Current Data Table();
dtResults = dt <<
summary(
group( :LotLabel, :WaferLabel ),
output table( "Results" ),
Link to Original Data Table( 0 )
);
dtResults << delete columns( :N Rows );
dtResults << New Column( "Results",
character,
set each value( "FAIL" )
);
For Each Row(
dt,
If( Row() >= 4,
If(
Col Moving Average(
:ColX,
weighting = 1,
before = -3,
after = 0,
:LotLabel,
:WaferLabel
) == :ColX |
Col Moving Average(
:RowY,
weighting = 1,
before = -3,
after = 0,
:LotLabel,
:WaferLabel
) == :RowY,
dtResults:Results[dtResults << get rows where(
dtResults:LotLabel == dt:LotLabel &
dtResults:WaferLabel == dt:WaferLabel
)] = "PASS"
)
)
);

Re : Recherche de colonnes et de lignes consécutivesSalut Jim, dans l'ensemble de données précédent, pour PART-01, 02 devrait être réussi. Désolé pour la désinformation. Vous trouverez ci-joint un ensemble de données plus vaste comprenant PART-01,02,03,17. La partie 01,02,03 devrait être réussie et seule la partie 17 devrait échouer. Cela devrait être comme ci-dessous, mais votre script indique que PART02,03 échoue également.

Re : Recherche de colonnes et de lignes consécutivesOui, vous devez changer le 4 en 7 et le -3 en -6.
Le facteur de pondération offre la possibilité de définir le poids de chacune des valeurs comme moyenne. La valeur 1 indique qu'il faut utiliser une pondération égale pour chaque valeur.
Avant = définit le nombre de lignes avant la ligne actuelle à utiliser dans le calcul de la moyenne mobile.
After = définit le nombre de lignes après la ligne actuelle à utiliser dans le calcul de la moyenne mobile.
Enfin, veuillez utiliser l'icône JSL en haut de l'aperçu lorsque vous entrez JSL dans la discussion. Cela aide vraiment les lecteurs à lire et à interpréter le code.
J'ai modifié votre dernière réponse et déplacé votre JSL répertorié dans une zone d'affichage JSL
Re : Recherche de colonnes et de lignes consécutivesSalut Jim, dans l'ensemble de données précédent, pour PART-01, 02 devrait être réussi. Désolé pour la désinformation. Vous trouverez ci-joint un ensemble de données plus vaste comprenant PART-01,02,03,17. La partie 01,02,03 devrait être réussie et seule la partie 17 devrait échouer. Cela devrait être comme ci-dessous, mais votre script indique que PART02,03 échoue également.

Re : Recherche de colonnes et de lignes consécutives- L'utilisation de la moyenne mobile de col comme vérification n'a pas fonctionné, je l'ai donc modifiée pour utiliser un écart type sur les 7 lignes.
- La méthode que j'utilisais pour trouver la ligne dans la table de données dtResults ne fonctionnait pas. J'ai dû passer à une boucle For() pour pouvoir obtenir la précision requise.
- J'avais la logique à l'envers..... Réussir si je trouvais les valeurs d'affilée, plutôt que d'échouer lorsque cela se produisait.
Names Default To Here( 1 );
dt = Current Data Table();
dtResults = dt << summary(
group( :LotLabel, :WaferLabel ),
output table( "Results" ),
Link to Original Data Table( 0 )
);
dtResults << delete columns( :N Rows );
dtResults << New Column( "Results",
character,
set each value( "PASS" )
);
For( i = 1, i <= N Rows( dt ), i++,
If( i >= 7,
If(
Std Dev( dt:ColX[i - 6 :: i] ) == 0 |
Std Dev( dt:RowY[i - 6 :: i] ) == 0,
dtResults:Results[dtResults <<
get rows where(
dtResults:LotLabel == dt:LotLabel[i] & dtResults
:WaferLabel == dt:WaferLabel[i]
)] = "FAIL"
)
)
);
Vous devez étudier le code, ne vous contentez pas de le couper et de le coller dans votre script. Vous devez en être suffisamment informé pour pouvoir déboguer les futurs problèmes et générer les correctifs.
Re : Recherche de colonnes et de lignes consécutivesMerci, Jim. Après quelques ajustements, cela a fonctionné pour moi.