, so dass ich eine Streaming-Aufgabe mit Flink DataStream simulieren und ich möchte eine SQL-Abfrage für jedes Fenster ausführen.Flink DataStream - führen Sie SQL-Abfrage in einem Fenster, tun Sie Orderby
Lasst uns sagen, dass dies die Abfrage
SELECT name, age, sum(days), avg(salary)
FROM employees
WHERE age > 25
GROUP BY name, age
ORDER BY name, age
ist eine harte Zeit, ich habe es zu Flink zu übersetzen. Aus meinem Verständnis, um den Durchschnitt zu berechnen, muss ich es manuell mit .apply()
und WindowFunction
tun. Aber wie berechne ich dann die Summe? Auch manuell in derselben WindowFunction?
Ich frage mich auch, ob es möglich ist, Ordnung im ganzen Fenster zu machen?
Unten ist der Pseudocode von dem, was ich bisher dachte. Jede Hilfe wäre willkommen! Vielen Dank!
employeesStream
.filter(new FilterFunction() ....) \\ where clause
.keyby(nameIndex, ageIndex) \\ group by??
.timeWindow(Time.seconds(10), Time.seconds(1))
.apply(new WindowFunction() ....) \\ calculate average (and sum?)
// order by??
überprüfte ich die Table API aber es scheint nicht viel Operationen unterstützt für das Streaming werden, z orderBy.