Here's a slightly bastardized query I wrote for our people. Change the Start_date and End date variables to limit the timeframe in question.
BU_Trans stores the KB doc transactions. Skeletons contains the KB article details. ca_contact is the user info.
I have not done a deep dive into BU_Trans to see what other info is available but you can definitely start with this and then expand from there as you dig into the data. The below will show all people who have accessed any KB article between 9-20-17 and 9-24-17 (since I'm doing < end) and also list how long they had it open.
DECLARE @start_date datetime
DECLARE @end_date datetime
DECLARE @start_date_int int
DECLARE @end_date_int int
Set @start_date = '2017-09-20'
Set @end_date = '2017-09-25'
Set @end_date = @end_date + 1
Set @start_date_int = dbo.LocalDateToSDTime(@start_date,-5,1)
Set @end_date_int = dbo.LocalDateToSDTime(@end_date,-5,1)
Select ca_contact.userid, ca_contact.first_name, ca_contact.last_name, BU_Trans.id, user_id, dbo.SDTimetoLocalDate(bu_date,-5,1) "Transaction Date", kd_duration, skeletons.id "KB Doc ID", skeletons.title "KB Title"
from BU_Trans With(NoLock)
inner join skeletons With(NoLock) On BU_Trans.doc_id = skeletons.id
inner join ca_contact on bu_trans.user_id = ca_contact.contact_uuid
Where bu_date > @start_date_int and bu_date < @end_date_int