I've build a similar system for transaction aggregate at MoMo.
So Flink job process streaming event to calculate daily feature and write data to Hbase (rowkey = user_id#yyyymmdd, qualifier_column = feature_name, ex: total_daily_transaction)
Then I develop another aggregate service when want to get total_weekly_transaction, total_monthly_transaction, so it's only read a few rows in HBase.
This help to reduce cost, because I don't want FLink job have process a large datastream (months/year). This will lead to many issue with Flink state/memory like Pedro Mazala mentioned above.