Taking a guess, you could group things based on your criterion and
Something simple like :
a) group by usergroup (might be too expensive ? number of records across
timestamps for users in a group might be large !).
b) group by (usergroup, timestamp / window) [this will loose accuracy
near the time window, see below] : manageable, but less accurate.
Other more sensible variations based on your input, etc !
Something like :
-- This means that if the users clicked at 9th and 11th minute, we
bucket it into two different buckets and miss out on data : so
typically, adjust accordingly for error, or replicate input or something
more complicated than this simple snippet :-)
%default WINDOW '60 * 10'
A = $MY_INPUT AS (user:chararray, user_grp:chararray, timestamp:long);
-- B = GROUP A by user_grp PARALLEL $PARALLELISM;
B = GROUP A by (user_grp, timestamp / $WINDOW) PARALLEL $PARALLELISM;
C = FILTER B by COUNT(A) > $THRESHOLD;
Ofcourse, I hope I am not misunderstanding your query entirely !
On Saturday 28 August 2010 11:40 PM, Christian Decker wrote:
The title might be a bit misleading but I hope you can help me.
I have some data (let's say a Web Log file) and I want to be able to compare
multiple items with each other. For example I want to know what items are
popular in certain user groups, which means that I want to find items which
got many successive hits from users from that group in a short period of
Until now I only worked on the rows in an isolated manner, that is items
could be filtered or modified, without any knowledge of other records, but
this now requires to consider multiple records, and I have no clue as to how
approach this problem.