Before I start trying to come up with something like this, has anyone done anything like this before? I want to check how many days in a row, I see a particular event.
I don’t mind if an event happens 20 times on a day, just that it happened at least once for a few days in a row.
Anyone have sometime similar, or an easy way to do kick this off?
So far using common event ID I’ve gotten unique dates…
unique values of (date (local time zone) of (time generated of it)) of records whose (event id of it mod 65536 = 7036) of system event log
It would be easy to tell if it happened for X days as well…
number of (unique values of (date (local time zone) of (time generated of it)) of records whose (event id of it mod 65536 = 7036 AND time generated of it > (now-6*Day)) of system event log) = 7
Not so much find out the longest consecutive, just find out how many days in a row it happened up until yesterday.
So if it happened on Weds, Thurs, Fri, Sat, and Sun… it would return 5. If it didn’t happen yesterday, it would return 0 (even if it happened the 3 days before that).
I guess I could always make a big ugly if then statement going back to 7 days. like if that above relevance from my previous post = true, then 7, else try 6, else try 5… etc.
Seems like the if/then/else would be the way to go, putting a max of 7 days on it.
Managed to come up with this… takes about 5 seconds to run. Decided to look if It didn’t happen yesterday first, so servers don’t have to go through the whole thing. Maybe it could be made a little quicker, but it works, and shows how many days back starting from yesterday it happens in a row.
Warning… its ugly haha.
if not exists records whose ((event id of it mod 65536 = 5051 OR event id of it mod 65536 = 1008) AND date (local time zone) of (time generated of it) = current date -1day) of application event log then 0 else if number of (unique values of (date (local time zone) of (time generated of it)) of records whose ((event id of it mod 65536 = 5051 OR event id of it mod 65536 = 1008)AND (date (local time zone) of (time generated of it) > current date-8Day AND date (local time zone) of (time generated of it) < current date)) of application event log) = 7 then 7 else if number of (unique values of (date (local time zone) of (time generated of it)) of records whose ((event id of it mod 65536 = 5051 OR event id of it mod 65536 = 1008)AND (date (local time zone) of (time generated of it) > current date-7Day AND date (local time zone) of (time generated of it) < current date)) of application event log) = 6 then 6 else if number of (unique values of (date (local time zone) of (time generated of it)) of records whose ((event id of it mod 65536 = 5051 OR event id of it mod 65536 = 1008)AND (date (local time zone) of (time generated of it) > current date-6Day AND date (local time zone) of (time generated of it) < current date)) of application event log) =5 then 5 else if number of (unique values of (date (local time zone) of (time generated of it)) of records whose ((event id of it mod 65536 = 5051 OR event id of it mod 65536 = 1008)AND (date (local time zone) of (time generated of it) > current date-5Day AND date (local time zone) of (time generated of it) < current date)) of application event log) =4 then 4 else if number of (unique values of (date (local time zone) of (time generated of it)) of records whose ((event id of it mod 65536 = 5051 OR event id of it mod 65536 = 1008)AND (date (local time zone) of (time generated of it) > current date-4Day AND date (local time zone) of (time generated of it) < current date)) of application event log) =3 then 3 else if number of (unique values of (date (local time zone) of (time generated of it)) of records whose ((event id of it mod 65536 = 5051 OR event id of it mod 65536 = 1008)AND (date (local time zone) of (time generated of it) > current date-3*Day AND date (local time zone) of (time generated of it) < current date)) of application event log) =2 then 2 else 1
This might work… you’ll need to add the “not exists” check at the start. I may be “off by one” somewhere but in general the idea should work. The real benefit is that it only queries the event log once.
(if it = set of (1;2;3;4;5;6;7) then “7” else if it = set of (1;2;3;4;5;6) then “6” else if it = set of (1;2;3;4;5) then “5” else if it = set of (1;2;3;4) then “4” else if it = set of (1;2;3) then “3” else if it = set of (1;2) then “2” else “1”) of ((set of (preceding texts of firsts " " of (((date (local time zone) of now) - it) as string) as integer) of (unique values of (date (local time zone) of (time generated of it)) of records whose (event id of it mod 65536 = 7036 AND time generated of it > (now-7Day) and time generated of it < (now - 1day)) of system event log)))
And, if anyone knows how to coerce a date interval into an integer then please let us know.
size of set of (preceding texts of firsts " " of (((date (local time zone) of now) - it) as string) as integer) of (unique values of (date (local time zone) of (time generated of it)) of records whose (event id of it mod 65536 = 7036 AND time generated of it > (now-7Day) and time generated of it < (now - 1day)) of system event log)
(if it = set of (1;2;3;4;5;6;7) then “7” else if it = set of (1;2;3;4;5;6) then “6” else if it = set of (1;2;3;4;5) then “5” else if it = set of (1;2;3;4) then “4” else if it = set of (1;2;3) then “3” else if it = set of (1;2) then “2” else “1”)
simply the same as just checking the size of the “set of” being returned? That’s why I just made it “size of set of”
OK… it wasn’t actually that bad. Justin on the dev team pointed me in the right direction:
(if it contains 1 then if it contains 2 then if it contains 3 then if it contains 4 then if it contains 5 then if it contains 6 then if it contains 7 then 7 else 6 else 5 else 4 else 3 else 2 else 1 else nothings) of (set of (preceding texts of firsts " " of (((date (local time zone) of now) - it) as string) as integer) of (unique values of (date (local time zone) of (time generated of it)) of records whose (event id of it mod 65536 = 7036 AND time generated of it > (now-7Day) and time generated of it < (now - 1day)) of system event log))
I was making it more complicated than it needed to be by comparing sets.