Have a look at the query plan cache, you can collect the column usage and match that with the credentials used to login.
I worked as a DBA and we rejected connections using a login trigger that did not have an application name and ITIL catalogue number in the connection string. When you have that you can map usage to application. This likely doesn't help you now but it could make sense to implement going foreward. Just start sending emails to the product owners and the application name is easily added as it's a non-breaking application change.
Have a look at the sample that you could use in your servers
You can collect and Aggregate this from a SP_WHO2 type of query that you trigger periodically or use a server scoped trigger. Please note that you can get quite a bit of information from the user using user_name(), suser_sname() and HOST_NAME() and the above mentioned APP_NAME() to get the name of the application connecting, this is free text specified in the connection string
To get the whole permission path (good for finding duplicate authorisations of a given user) use
declare @user sysname =suser_sname()
EXEC xp_logininfo @user,'all';
You can also provide a user name using the 'domain\login' format.