Ich versuche, das letzte Ereignis von einem time_length_batch zu bekommen, aber ich bin ratlos WRT, wie man das macht.Letztes Ereignis von einem Esper-Fenster, das Zeit und Länge hat
Zum Beispiel ... gibt es ein Inventory Event und möchte die neuesten Updates von jedem verfügbaren Produkt erhalten. Die folgende Abfrage liefert vor allem, was benötigt wird:
SELECT product, inventory FROM
InventoryEvents.std:groupwin(name).win:time_length_batch(1 min, 2);
außer dass innerhalb des Fensters ich jedes Ereignis in der letzten Minute oder 2 Veranstaltungen. Ich interessiere mich nur für das letzte Ereignis für dieses Fenster. (Verwenden Sie 2, um die Ergebnisse einfach zu testen.)
Als Ergebnis muss ich im UpdateListener das letzte Ereignis aus dem Array ausgeben. Aber da ich diese Ereignisse nicht benötige und am liebsten zu einem Abonnenten wechseln würde, suche ich nach dem letzten Event. Darüber hinaus sind Abonnenten viel mehr performant so statt dessen:
public static class EveryListener implements UpdateListener {
public void update(EventBean[] newData, EventBean[] oldData) {
out.println("* Window received: " + " " +
newData.length + " " + newData[newData.length - 1].getUnderlying());
}
}
Gerade
public void update(String product, int inventory) {
out.println("** Explicit event received: " + " " + product + " " + inventory);
}
aber die Ergebnisse sind ...
* Window received: 2 {product=A, inventory=-10}
** Explicit event received: A 20
** Explicit event received: A -10
ich versucht habe
SELECT product, inventory FROM
InventoryEvents.std:groupwin(name).win:time_length_batch(1 min, 1000)
.std:win:lastevent();
aber das gibt nicht die erwartete ted Ergebnisse.
Wie bekomme ich nur das letzte Ereignis eines gruppierten Fensters?