1. 一切從爆炸函數(shù)開始!

        共 960字,需瀏覽 2分鐘

         ·

        2021-07-15 01:08

        今日表情?? :

        前段時間部門有位大數(shù)據(jù)開發(fā)的同事離職了,在他和其他開發(fā)的同事進行工作項目交接的時候,我去旁聽了下,因為涉及到一些公司業(yè)務(wù)邏輯的問題。當(dāng)講到某個項目的時候,他談到:

        這個業(yè)務(wù)邏輯是…….,我用Hive中的爆炸函數(shù)實現(xiàn)了這個功能。

        當(dāng)時他舉了一個簡單的例子來說明爆炸函數(shù)的功能,我當(dāng)場就記下了這個函數(shù)名稱:爆炸函數(shù)。Hive在我的工作中使用的并不多,于是我在想:Pandas能夠?qū)崿F(xiàn)這個功能嗎?

        img

        爆炸函數(shù)功能

        爆炸函數(shù)到底實現(xiàn)的是什么需求呢?我回憶一下當(dāng)時的例子:

        現(xiàn)在有一份數(shù)據(jù),包含訂單編號和訂單中商品價格(每個訂單3個商品),使用hive中的爆炸函數(shù)之后變成如下圖所示的樣子:相當(dāng)于是實現(xiàn)了列轉(zhuǎn)成行的功能。這樣后續(xù)就能進行各種聚合操作。

        Hive中實現(xiàn)爆炸功能有兩個函數(shù),可自行搜索了解:

        • explode(col)
        • lateral view:側(cè)寫函數(shù)

        pandas實現(xiàn)

        具體需求

        碰巧最近有一個需求就用到爆炸函數(shù)的功能,不過是用pandas實現(xiàn)的。在下面表格的左邊部分是每個訂單的銷售記錄,包含銷售員、跟單員、結(jié)單員,他們?nèi)卟灰欢ㄊ峭粋€人。

        現(xiàn)在需要統(tǒng)計每個員工的銷售業(yè)績。銷售業(yè)績也就是指員工參與了多少訂單。統(tǒng)計每個員工的銷售業(yè)績:

        • 有作為銷售員、跟單員、結(jié)單員的任意一種,即可說明參與了該訂單的銷售;
        • 同一個訂單中,一個員工參與多次只記為一次

        爆炸函數(shù)到底實現(xiàn)的是什么功能呢?右邊就是我們想要的結(jié)果:

        • 張三:參加了訂單號1-銷售員,訂單號2-跟單員、結(jié)單員,數(shù)量2
        • 李四:參加了訂單號1-跟單員、結(jié)單員,訂單2-銷售員,訂單號3-跟單員,數(shù)量3
        • 王五:參加了訂單號3-銷售員、結(jié)單員,數(shù)量1

        解決過程

        1、在pandas模擬了一份數(shù)據(jù)如下:

        2、生成一個新字段:員工

        3、實施爆炸功能,使用的是pandas中的explode函數(shù),得到新數(shù)據(jù):可以看到每個訂單號會多次出現(xiàn)

        4、統(tǒng)計結(jié)果

        這樣根據(jù)不同的字段,比如員工、銷售員、跟單員等就能統(tǒng)計不同的業(yè)績


        結(jié)語:擁抱pandas,告別excel。??

        瀏覽 46
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 巴西黄色片 | 免费成人黄色小说软件 | 超色一区视频 | 亚洲乱伦视频网 | 最新的中文幕无字码 |