mysql partition by date and id

At the moment I’m partitioning my table daily by

PARTITION BY RANGE COLUMNS(date) 

On a daily basis I load data into that table, I have billions of rows in that table. I was thinking on switch to exchange partition for better performance. However the data is getting from multiple sources at different times. I do however can do exchange partition if I could do partition the table by (date, sourceId).

Is that possible? Do I have to use sub-partitions or is there other ways to solve it?