2013-06-03 63 views
3
event1 id1 foo_id1 
event1 id1 foo_id2 
event1 id1 foo_id3 
event1 id1 foo_id4 
event1 id1 foo_id1 
event1 id2 foo_id1 
event1 id2 foo_id2 
event1 id3 foo_id1 
event1 id1 foo_id1 
event1 id3 foo_id3 
event1 id4 foo_id1 
event1 id4 foo_id2 
event1 id1 foo_id1 
event1 id4 foo_id3 
event1 id4 foo_id4 
event2  foo_id1 
event2  foo_id2 
event2  foo_id3 
event2  foo_id3 

所有事件(即事件1,事件2)都有foo_ids。對於「event1」中的所有事件,我想知道event2中發生了多少次foo_id(s)。如何爲預期輸出編寫配置單元腳本

我想要的O/P是這樣的:

id1 foo_id1 1 
id1 foo_id2 1 
id1 foo_id3 1 
id2 foo_id1 1 
id2 foo_id2 1 

如何寫一個蜂巢腳本預期格式

INSERT OVERWRITE TABLE table1 
SELECT e1.id, e1.foo_id, count(e2.foo_id) 
FROM events e1 
LEFT OUTER JOIN events e2 
ON e1.foo_id = e2.foo_id 
WHERE e2.event = 'event2' 
AND e1.event = 'event1' 
GROUP BY e1.id, e1.foo_id; 

我試過上述蜂巢腳本返回數據。但是,o/p顯示如下:

id1 foo_id1 4 
    id1 foo_id2 1 
    id1 foo_id3 2 
    id2 foo_id1 1 
    id2 foo_id2 1 

如何編寫配置單元腳本以預期格式返回數據?

+1

我需要的輸出 ID1 foo_id1 1 ID1 foo_id2 1 id1 foo_id3 1 id2 foo_id1 1 id2 foo_id2 1 如何編寫配置單元腳本來獲取上述輸出。 – brisk

回答

1

如果它只是一個格式化的問題,並設定第三列數= X,那麼您可以在蜂房使用concat UDF:


INSERT OVERWRITE TABLE table1 
SELECT e1.id, e1.foo_id, concat('count=', count(e2.foo_id)) 
FROM events e1 
LEFT OUTER JOIN events e2 
ON e1.foo_id = e2.foo_id 
WHERE e2.event = 'event2' 
AND e1.event = 'event1' 
GROUP BY e1.id, e1.foo_id; 
+0

感謝您的回覆。 Count = x不是預期的輸出。我需要按照相關順序使用foo_id獲取輸出。 上面我提到了預期輸出的格式。 – brisk