Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The max/min aggregate function fupports DECIMAL, TINYINT, SMALLINT, INTEGER, BIGINT, FLOAT, DOUBLE, INTERVAL(INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND), DATE, TIME, TIMESTAMP, TIMESTAMP_LTZ data types.

The count/replacelast_ifnon_notnull_nullvalue/replace last_value aggregate functions support all data types.

The concatenate listagg aggregate function supports VARCHAR, STRING  data types.

The bool_and/bool_or aggregate function supports BOOLEAN data type.


Default value of these aggregate functions

sum: default value of corresponding data type

count: 0

max/min/last_non_null_value/last_value: NULL

listagg: ""

bool_and: true

bool_or: false


Changelog support

In most cases, the modification to Table Store is INSERT changes. However, Table Store can also be converted into retract stream which may include retract messages (UPDATE/DELETE changes).

Aforementioned aggregate functions all support INSERT changes. In this FLIP, we plan to make partial aggregate functions support UPDATE and DELETE changes.

Aggregate functions supporting for UPDATE changes: sum, count.

Aggregate functions supporting for DELETE changes: sum, count.

It needs more design to make other aggregate functions support UPDATE/DELETE changes.


Future work
An advanced way of introducing pre-aggregated merge into Flink Table Store is using materialized view to get pre-aggregated merge result from a source table. Then a stream job is started to synchronize data, consume source data, and write incrementally . This data synchronization job has no state. More information is described in JIRA.

...