Ich habe einen Datensatz wie:
UserID Item EventType
001 A Buy
001 B Sell
031 A Sell
008 C Buy
001 C Buy
001 A Buy
008 C Sell
Wie kann ich die EventType-Spalte für jedes Ereignis in eine andere Spalte aufteilen? Das heißt, ich möchte zwei neue Spalten EventType_Buy und EventType_Sell, die die Anzahl der Vorkommen dieser Ereignisse für jedes UserID- und Item-Paar enthalten.
Die Ausgabe sollte also ungefähr so aussehen:
UserID Item EventType_Buy EventType_Sell
001 A 2 0
001 B 0 1
001 C 1 0
008 C 1 1
031 A 0 1
Ich bin nicht so sehr an der Sortierung interessiert, aber ich plane, diese Daten später in R zu verwenden, daher möchte ich Hilfe beim Versuch, diese Aufteilung in Spaltenzahlen durchzuführen.
Ich habe versucht, separate Objekte für jeden Ereignistyp und jede Gruppierung nach Benutzer-ID und Element zu erstellen, die Anzahl zu generieren und zu versuchen, diese Objekte zu verbinden, aber ich habe nicht viel Erfolg.
Schweineskript:
input_data = LOAD 'input.csv' USING PigStorage(',') AS (user_id:chararray,item:chararray,event_type:chararray);
req_stats = FOREACH(GROUP input_data BY (user_id,item)) {
buy_bag = FILTER input_data BY event_type == 'Buy';
sell_bag = FILTER input_data BY event_type == 'Sell';
GENERATE FLATTEN(group) AS (user_id,item), COUNT(buy_bag) AS event_type_buy, COUNT(sell_bag) AS event_type_sell;
};
DUMP req_stats;
Eingabe:
001,A,Buy
001,B,Sell
031,A,Sell
008,C,Buy
001,C,Buy
001,A,Buy
008,C,Sell
Ausgabe: DUMP req_stats
(001,A,2,0)
(001,B,0,1)
(001,C,1,0)
(008,C,1,1)
(031,A,0,1)
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen