2017-04-07 3 views
0

Ähnlich wie bei der top wikipedia sessions example Ich habe die folgenden TestdatenHalten Datenelement, wenn Sitzungen

EDITS = [ 
     json.dumps({'timestamp': 0, 'username': 'user1', 'action': 'a'}), 
     json.dumps({'timestamp': 1, 'username': 'user1', 'action': 'b'}), 
     json.dumps({'timestamp': 20, 'username': 'user1', 'action': 'a'}), 
     json.dumps({'timestamp': 132, 'username': 'user2', 'action': 'a'}), 
     json.dumps({'timestamp': 500, 'username': 'user2', 'action': 'b'}), 
     json.dumps({'timestamp': 3601, 'username': 'user2', 'action': 'b'}), 
     json.dumps({'timestamp': 3602, 'username': 'user2', 'action': 'a'}), 
     json.dumps({'timestamp': 8004, 'username': 'user2', 'action': 'a'}), 
     json.dumps({'timestamp': 9320, 'username': 'user1', 'action': 'b'}) 
    ] 

extrahieren würde Ich mag die Datenmenge in den Sitzungen pro username aufzuspalten und dann für jede Benutzersitzung die Benutzeraktionen zählen. Also für den vorherigen Datensatz und eine Stunde max Lücke (3600 Sekunden), mag ich folgendes Ergebnis erhalten:

EXPECTED = [ 
     'user1 : [0.0, 3620.0), a: 2, b: 1', 
     'user2 : [132.0, 7202.0), a: 2, b: 2', 
     'user2 : [8004.0, 11604.0), a: 1, b: 0', 
     'user1 : [9320.0, 12920.0), a: 0, b: 1', 
    ] 

Im Gegensatz zu der wikipedia Sitzungen Beispiel Ich brauche die kompletten Elementdaten zu halten und nicht nur den Schlüssel in Um in meiner benutzerdefinierten Combiner-Funktion zu verwenden.

Antwort

0

Sie sollten in der Lage sein, eine CombineFn schreiben, die die Anzahl der Aktionen jedes Typs zählt, mit einem Wörterbuch der zählt als der Akku. Dann können Sie einfach Sitzungsfenster in einer Sammlung verwenden, die von der Benutzer-ID mit diesem Kombinierer codiert wird.

Im Abschnitt Beam-Programmieranleitung unter Combine Fns finden Sie Vorschläge zum Schreiben.

Verwandte Themen