Comment rappeler une valeur agrégée (moyenne/Max etc.) basée sur une colonne groupée dans Formula ou dans For-LoopSalut tout le monde,
J'essaie de connaître le nombre de fois où l'alarme s'est déclenchée. J'ai créé une colonne "Nombre d'occurrences" basée sur une logique simple -- Si Données dans la ligne () > Ligne ()+1, le déclencheur est réinitialisé. Mais je reçois beaucoup de fausses alertes, comme le montre l'image. La nouvelle connexion que je veux implémenter -
Si (
(Row() - Row()+1) >= Abs(Max(Data))/10, réinitialiser le déclencheur, sinon le vivre tel quel
)
Quelque chose comme ca.
Je suis capable de le faire de manière un peu journalisée, comme créer un tableau récapitulatif, puis ajouter une colonne à partir du tableau récapitulatif, puis comparer chaque valeur avec une nouvelle colonne. Cela fonctionne bien mais rend mon script lent.
Existe-t-il un meilleur moyen de l'implémenter dans une formule ou dans une boucle For ?
De l'aide.
Merci.

ScriptRe: Comment rappeler une valeur agrégée (moyenne/Max etc.) basée sur une colonne groupée dans Formula ou dans For-LoopVous pouvez utiliser la fonction Col Max() pour obtenir la valeur maximale au sein des groupes et Lag() pour comparer les lignes de la colonne.
Pourriez-vous fournir une table de données avec des résultats « corrects » pour faciliter un peu la compréhension de la logique derrière les alarmes ? Ou voulez-vous simplement vérifier si la valeur actuelle des données est supérieure à la valeur précédente au sein du groupe (ID et sous-ensemble) ?
Re: Comment rappeler une valeur agrégée (moyenne/Max etc.) basée sur une colonne groupée dans Formula ou dans For-Loopsalut @jthi
J'ai ajouté une colonne - "No. of Occurrence - Corrigé".Ce qui montre les résultats corrects (souhaités).

Re: Comment rappeler une valeur agrégée (moyenne/Max etc.) basée sur une colonne groupée dans Formula ou dans For-LoopVous pouvez calculer 10% Max directement avec la formule :
Col Max(:Data, :ID, :"Sub-set"n)*0.1
Je ne sais toujours pas comment les occurrences doivent être comptées, car il semble ne jamais se réinitialiser, mais peut reculer d'une valeur. Pour vérifier les valeurs des colonnes de données qui se trouvent après la "ligne actuelle", vous pouvez utiliser Lag(:Data, - 1)

La règle que vous avez ressemblerait à ceci sous la forme d'une formule :
If(:Data - Lag(:Data, -1) >= Abs(Col Max(:Data, :ID, :"Sub-set"n)) / 10,
1,
0
)
Re: Comment rappeler une valeur agrégée (moyenne/Max etc.) basée sur une colonne groupée dans Formula ou dans For-LoopÇa ne marche pas. D'une manière ou d'une autre, je ne suis pas en mesure d'implémenter - "Col Max(:Data , Group by{ID, Sub-set})" quelque chose comme ça.
Je suis capable d'appeler la valeur du tableau récapitulatif à la formule de colonne du tableau principal, c'est mieux que ma solution d'origine.
Merci.
Re: Comment rappeler une valeur agrégée (moyenne/Max etc.) basée sur une colonne groupée dans Formula ou dans For-LoopJ'ai trouvé une formule qui semble fonctionner .......

Il y a un écart avec votre nombre d'occurrences - corrigé.Sur la ligne 32, je pense que 0,13 - 08 donne 0,05, ce qui est supérieur à 0,034, ce qui devrait augmenter le nombre d'occurrences.

Votre implémentation d'une occurrence supplémentaire n'est pas non plus appliquée jusqu'à la ligne après sa découverte.Par conséquent, l'utilisation de votre formule doit comporter une petite ruse, pour ne pas appliquer la modification tant que la ligne suivante n'est pas traitée.Vous trouverez ci-dessous ma formule que j'ai utilisée pour la colonne "Calcul de Jim"
If( Row() == 1 | :ID != Lag( :ID ) | :"Sub-set"n != Lag( :"Sub-set"n ),
hold = :Number of Occurance;
applyRow = 0;
);
If( :Data - Lag( :Data, -1 ) >= Abs( Col Max( :Data, :ID, :"Sub-set"n ) ) / 10,
applyRow = Row() + 1
);
If( Row() == applyRow,
applyRow = 0;
hold = hold + 1;
);
hold;