Sounds like you need a Sendlog.
If region is already available for use in the email, e.g. for personalization, then all you need to do is log it at the time of send. Write into a data extension that can be interpreted in the context of the existing out of the box logging, i.e. the data views.
a) either build a data extension of type "based on a template" and use SendLogging, but I am not sure how far you will get with the customizations suggested below.
b) or you insert an InsertData Call into your email. In this case, make sure you track all the things that make a send event unique in your DE. (subscriberkey, listid, batchid, jobid).
see here: What exactly the "BatchID" is in tracking Data Views?
This DE will be filled after processing of the actual email sendout. You can match it with open, click, bounce etc. table and thus can deduce e.g. "click by region" using SQL.
The primary keys in your DE would be:
Assuming you have an AMPScript variable @region defined somewhere in your email,
this could go into your email.
%%[/* Message Logging */]%%
IF _messagecontext == "SEND" and jobid > 0 then