Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

difference between login and logout time

i have one data where user is doing multiple login and logout in day and i have to find the total number of hours user was logged in system

sample data

      

      

NameDateLogin_DateTimeUser NameTerminalMessage Text
kcinhjsap1909.09.201509-09-201508:46:38AAMRAAl-3334Logon Successful (Type=A)
kcinhjsap1909.09.201509-09-201509:19:30AAMRAAl-3334User Logoff
kcinhjsap1909.09.201509-09-201511:42:13AAMRAAl-3334Logon Successful (Type=A)
kcinhjsap1909.09.201509-09-201512:54:25AAMRAAl-3334User Logoff
kcinhjsap1909.09.201509-09-201513:07:26AAMRAAl-3334Logon Successful (Type=A)
kcinhjsap1909.09.201509-09-201513:40:07AAMRAAl-3334User Logoff
kcinhjsap1910.09.201510-09-201509:06:00AAMRAAl-3334Logon Successful (Type=A)
kcinhjsap1910.09.201510-09-201509:40:33AAMRAAl-3334User Logoff
kcinhjsap1910.09.201510-09-201514:57:33AAMRAAl-3334Logon Successful (Type=A)
kcinhjsap1910.09.201510-09-201515:04:51AAMRAAl-3334User Logoff
kcinhjsap1911.09.201511-09-201510:20:45AAMRAAl-3334Logon Successful (Type=A)
kcinhjsap1911.09.201511-09-201510:47:52AAMRAAl-3334User Logoff
kcinhjsap1911.09.201511-09-201512:50:29AAMRAAl-3334Logon Successful (Type=A)
kcinhjsap1911.09.201511-09-201513:10:37AAMRAAl-3334User Logoff
kcinhjsap1911.09.201511-09-201515:32:42AAMRAAl-3334Logon Successful (Type=A)
kcinhjsap1911.09.201511-09-201515:54:24AAMRAAl-3334User Logoff
kcinhjsap1914.09.201514-09-201509:47:31AAMRAAl-3334Logon Successful (Type=A)
kcinhjsap1914.09.201514-09-201510:13:27AAMRAAl-3334User Logoff
kcinhjsap1914.09.201514-09-201512:19:45AAMRAAl-3334Logon Successful (Type=A)
kcinhjsap1914.09.201514-09-201512:40:53AAMRAAl-3334User Logoff
kcinhjsap1915.09.201515-09-201509:52:06AAMRAAl-3334Logon Successful (Type=A)
kcinhjsap1915.09.201515-09-201509:53:43AAMRAAl-3334User Logoff
1 Solution

Accepted Solutions
swuehl
MVP
MVP

You can start with something like

INPUT:

LOAD * INLINE [

Name Date Login_Date Time User Name Terminal Message Text

kcinhjsap19 09.09.2015 09-09-2015 08:46:38 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 09.09.2015 09-09-2015 09:19:30 AAMRAA l-3334 User Logoff

kcinhjsap19 09.09.2015 09-09-2015 11:42:13 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 09.09.2015 09-09-2015 12:54:25 AAMRAA l-3334 User Logoff

kcinhjsap19 09.09.2015 09-09-2015 13:07:26 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 09.09.2015 09-09-2015 13:40:07 AAMRAA l-3334 User Logoff

kcinhjsap19 10.09.2015 10-09-2015 09:06:00 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 10.09.2015 10-09-2015 09:40:33 AAMRAA l-3334 User Logoff

kcinhjsap19 10.09.2015 10-09-2015 14:57:33 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 10.09.2015 10-09-2015 15:04:51 AAMRAA l-3334 User Logoff

kcinhjsap19 11.09.2015 11-09-2015 10:20:45 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 11.09.2015 11-09-2015 10:47:52 AAMRAA l-3334 User Logoff

kcinhjsap19 11.09.2015 11-09-2015 12:50:29 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 11.09.2015 11-09-2015 13:10:37 AAMRAA l-3334 User Logoff

kcinhjsap19 11.09.2015 11-09-2015 15:32:42 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 11.09.2015 11-09-2015 15:54:24 AAMRAA l-3334 User Logoff

kcinhjsap19 14.09.2015 14-09-2015 09:47:31 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 14.09.2015 14-09-2015 10:13:27 AAMRAA l-3334 User Logoff

kcinhjsap19 14.09.2015 14-09-2015 12:19:45 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 14.09.2015 14-09-2015 12:40:53 AAMRAA l-3334 User Logoff

kcinhjsap19 15.09.2015 15-09-2015 09:52:06 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 15.09.2015 15-09-2015 09:53:43 AAMRAA l-3334 User Logoff

] (delimiter is '\t');

RESULT:

LOAD *,

     If([Message Text] LIKE '*Logoff' and Previous([User Name])=[User Name],

               Interval(Timestamp - Previous(Timestamp)))

                    as Duration;

LOAD *, Date+Time as Timestamp RESIDENT INPUT

ORDER BY [User Name], Date, Time;

DROP TABLE INPUT;

Then aggregate the new Duration field in your chart objects:

=Interval(Sum(Duration))

View solution in original post

4 Replies
swuehl
MVP
MVP

You can start with something like

INPUT:

LOAD * INLINE [

Name Date Login_Date Time User Name Terminal Message Text

kcinhjsap19 09.09.2015 09-09-2015 08:46:38 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 09.09.2015 09-09-2015 09:19:30 AAMRAA l-3334 User Logoff

kcinhjsap19 09.09.2015 09-09-2015 11:42:13 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 09.09.2015 09-09-2015 12:54:25 AAMRAA l-3334 User Logoff

kcinhjsap19 09.09.2015 09-09-2015 13:07:26 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 09.09.2015 09-09-2015 13:40:07 AAMRAA l-3334 User Logoff

kcinhjsap19 10.09.2015 10-09-2015 09:06:00 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 10.09.2015 10-09-2015 09:40:33 AAMRAA l-3334 User Logoff

kcinhjsap19 10.09.2015 10-09-2015 14:57:33 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 10.09.2015 10-09-2015 15:04:51 AAMRAA l-3334 User Logoff

kcinhjsap19 11.09.2015 11-09-2015 10:20:45 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 11.09.2015 11-09-2015 10:47:52 AAMRAA l-3334 User Logoff

kcinhjsap19 11.09.2015 11-09-2015 12:50:29 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 11.09.2015 11-09-2015 13:10:37 AAMRAA l-3334 User Logoff

kcinhjsap19 11.09.2015 11-09-2015 15:32:42 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 11.09.2015 11-09-2015 15:54:24 AAMRAA l-3334 User Logoff

kcinhjsap19 14.09.2015 14-09-2015 09:47:31 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 14.09.2015 14-09-2015 10:13:27 AAMRAA l-3334 User Logoff

kcinhjsap19 14.09.2015 14-09-2015 12:19:45 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 14.09.2015 14-09-2015 12:40:53 AAMRAA l-3334 User Logoff

kcinhjsap19 15.09.2015 15-09-2015 09:52:06 AAMRAA l-3334 Logon Successful (Type=A)

kcinhjsap19 15.09.2015 15-09-2015 09:53:43 AAMRAA l-3334 User Logoff

] (delimiter is '\t');

RESULT:

LOAD *,

     If([Message Text] LIKE '*Logoff' and Previous([User Name])=[User Name],

               Interval(Timestamp - Previous(Timestamp)))

                    as Duration;

LOAD *, Date+Time as Timestamp RESIDENT INPUT

ORDER BY [User Name], Date, Time;

DROP TABLE INPUT;

Then aggregate the new Duration field in your chart objects:

=Interval(Sum(Duration))

Not applicable
Author

tanks lot swuehl‌ its working i am so sorry for not been clear i have to apply

1.  If same message type are repeated consecutively then consider only 1st line and delete the rest of the line for that user coming consecutively.

this condition as well if you can tell it will be great help

Saravanan_Desingh

I just modified swuehl‌ code. Please check if it useful.

INPUT:

LOAD * INLINE [

Name, Date, Login_Date, Time, "User Name", Terminal, "Message Text"

kcinhjsap19, 09.09.2015, 09-09-2015, 08:46:38, AAMRAA, l-3334, Logon Successful (Type=A)

kcinhjsap19, 09.09.2015, 09-09-2015, 09:19:30, AAMRAA, l-3334, User Logoff

kcinhjsap19, 09.09.2015, 09-09-2015, 11:42:13, AAMRAA, l-3334, Logon Successful (Type=A)

kcinhjsap19, 09.09.2015, 09-09-2015, 12:54:25, AAMRAA, l-3334, User Logoff

kcinhjsap19, 09.09.2015, 09-09-2015, 13:07:26, AAMRAA, l-3334, Logon Successful (Type=A)

kcinhjsap19, 09.09.2015, 09-09-2015, 13:40:07, AAMRAA, l-3334, User Logoff

kcinhjsap19, 10.09.2015, 10-09-2015, 09:06:00, AAMRAA, l-3334, Logon Successful (Type=A)

kcinhjsap19, 10.09.2015, 10-09-2015, 09:40:33, AAMRAA, l-3334, User Logoff

kcinhjsap19, 10.09.2015, 10-09-2015, 14:57:33, AAMRAA, l-3334, Logon Successful (Type=A)

kcinhjsap19, 10.09.2015, 10-09-2015, 15:04:51, AAMRAA, l-3334, User Logoff

kcinhjsap19, 11.09.2015, 11-09-2015, 10:20:45, AAMRAA, l-3334, Logon Successful (Type=A)

kcinhjsap19, 11.09.2015, 11-09-2015, 10:47:52, AAMRAA, l-3334, User Logoff

kcinhjsap19, 11.09.2015, 11-09-2015, 12:50:29, AAMRAA, l-3334, Logon Successful (Type=A)

kcinhjsap19, 11.09.2015, 11-09-2015, 13:10:37, AAMRAA, l-3334, User Logoff

kcinhjsap19, 11.09.2015, 11-09-2015, 15:32:42, AAMRAA, l-3334, Logon Successful (Type=A)

kcinhjsap19, 11.09.2015, 11-09-2015, 15:54:24, AAMRAA, l-3334, User Logoff

kcinhjsap19, 14.09.2015, 14-09-2015, 09:47:31, AAMRAA, l-3334, Logon Successful (Type=A)

kcinhjsap19, 14.09.2015, 14-09-2015, 10:13:27, AAMRAA, l-3334, User Logoff

kcinhjsap19, 14.09.2015, 14-09-2015, 12:19:45, AAMRAA, l-3334, Logon Successful (Type=A)

kcinhjsap19, 14.09.2015, 14-09-2015, 12:40:53, AAMRAA, l-3334, User Logoff

kcinhjsap19, 15.09.2015, 15-09-2015, 09:52:06, AAMRAA, l-3334, Logon Successful (Type=A)

kcinhjsap19, 15.09.2015, 15-09-2015, 09:53:43, AAMRAA, l-3334, User Logoff

] (delimiter is ',');

RESULT:

//LOAD *,

//     If([Message Text] LIKE '*Logoff' and Previous([User Name])=[User Name],

//               Interval(Timestamp - Previous(Timestamp)))

//                    as Duration;

Load *,

  Interval(OutTime - InTime) As Duration;

Load

  FirstSortedValue([User Name],Time) As InUser,

  FirstSortedValue(Time,Time) As InTime,

  FirstSortedValue(Time,-Time) As OutTime,

  Date

Group By [User Name], Date

  ;

LOAD *, Date#(Date,'DD.MM.YYYY')+Time as Timestamp RESIDENT INPUT

ORDER BY [User Name], Date, Time;

DROP TABLE INPUT;

Not applicable
Author

Thanks lot. for your help