So rufen Sie einen aggregierten Wert (Mittelwert/Max usw.) basierend auf einer gruppierten Spalte in der Formel oder in der For-Schleife aufHallo zusammen,
Ich versuche herauszufinden, wie oft der Alarm ausgelöst wurde. Ich habe eine Spalte "Anzahl des Vorkommens" basierend auf einfacher Logik erstellt - Wenn Daten in Reihe () > Reihe () + 1, Trigger zurückgesetzt. Aber ich bekomme viele Fehlalarme, wie auf dem Bild zu sehen ist. Das neue Login, das ich implementieren möchte -
Wenn (
(Row() - Row()+1) >= Abs(Max(Data))/10, Trigger zurücksetzen, ansonsten so leben wie es ist
)
So ähnlich.
Ich bin in der Lage, dies auf eine Art Protokoll zu tun, z. B. eine Zusammenfassungstabelle zu erstellen und dann eine Spalte aus der Zusammenfassungstabelle hinzuzufügen und dann jeden Wert mit einer neuen Spalte zu vergleichen. Es funktioniert gut, aber mein Skript wird langsam.
Gibt es eine bessere Möglichkeit, es in der Formel oder in der For-Schleife zu implementieren?
Irgendeine Hilfe.
Danke.

SkriptingBetreff: So rufen Sie einen aggregierten Wert (Mittelwert/Max usw.) basierend auf einer gruppierten Spalte in der Formel oder in der For-Schleife abSie können die Funktion Col Max() verwenden, um den maximalen Wert innerhalb von Gruppen zu erhalten, und Lag(), um zwischen den Zeilen in der Spalte zu vergleichen.
Könnten Sie eine Datentabelle mit "richtigen" Ergebnissen bereitstellen, um das Verständnis der Logik hinter Alarmen zu erleichtern? Oder möchten Sie einfach nur überprüfen, ob der aktuelle Datenwert größer ist als der vorherige Wert innerhalb der Gruppe (ID und Teilmenge)?
Betreff: So rufen Sie einen aggregierten Wert (Mittelwert/Max usw.) basierend auf einer gruppierten Spalte in der Formel oder in der For-Schleife abHallo @jthi
Ich habe eine Spalte hinzugefügt - "Anzahl des Auftretens - korrigiert".Welches zeigt die richtigen (gewünschten) Ergebnisse.

Betreff: So rufen Sie einen aggregierten Wert (Mittelwert/Max usw.) basierend auf einer gruppierten Spalte in der Formel oder in der For-Schleife abSie können 10% Max direkt mit der Formel berechnen:
Col Max(:Data, :ID, :"Sub-set"n)*0.1
Ich bin mir immer noch nicht sicher, wie die Vorkommen gezählt werden sollen, da es anscheinend nie zurückgesetzt wird, sondern sich möglicherweise um 1 Wert zurückbewegt. Um Werte in Datenspalten zu überprüfen, die nach "aktuelle Zeile" liegen, können Sie Lag(:Data, - 1) verwenden

Die Regel, die Sie haben, würde in etwa wie folgt aussehen:
If(:Data - Lag(:Data, -1) >= Abs(Col Max(:Data, :ID, :"Sub-set"n)) / 10,
1,
0
)
Betreff: So rufen Sie einen aggregierten Wert (Mittelwert/Max usw.) basierend auf einer gruppierten Spalte in der Formel oder in der For-Schleife abEs funktioniert nicht. Irgendwie bin ich nicht in der Lage - "Col Max(:Data , Group by{ID, Sub-set})" so etwas zu implementieren.
Ich kann den Wert aus der Übersichtstabelle in die Spaltenformel der Haupttabelle aufrufen, es ist besser als meine ursprüngliche Lösung.
Danke.
Betreff: So rufen Sie einen aggregierten Wert (Mittelwert/Max usw.) basierend auf einer gruppierten Spalte in der Formel oder in der For-Schleife abIch habe eine Formel gefunden, die zu funktionieren scheint.........

Es liegt eine Diskrepanz mit Ihrer Häufigkeit vor – korrigiert.In Zeile 32, glaube ich, ergibt .13 - 08 .05, was größer als .034 ist, was die Häufigkeit erhöhen sollte.

Ihre Implementierung eines zusätzlichen Vorkommens wird auch erst in der Zeile angewendet, nachdem es erkannt wurde.Daher muss die Verwendung Ihrer Formel ein wenig Tricks enthalten, um die Änderung erst zu übernehmen, wenn die nächste Zeile verarbeitet wurde.Unten ist meine Formel, die ich für die Spalte "Jims Berechnung" verwendet habe
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;