1. 程式人生 > >掃盲貼|用一頓飯的時間為你講透大資料

掃盲貼|用一頓飯的時間為你講透大資料

燕飛,Kyligence 大資料老司機,擁有超過15年的大資料/資料倉庫領域從業經驗,對大資料/資料倉庫的建設規劃、架構設計、技術體系、方法論及主流廠商的產品和解決方案,均有深入的研究和實踐。

【開胃菜】

十五年前,剛開始工作,從帝都回老家。

某長輩和藹的問我:“工作了啊,做什麼的?”

我躊躇半天答曰:“挨踢(IT)。”

長輩不假思索的來了一句:“哦,在中關村賣光碟啊!”

我……我…..我……(叔叔,你知道的太多了)

【副菜】

五年前,一夜之間,“大資料”一詞開始紅遍大江南北,再碰到別人問我時,我終於可以用一個網紅詞來輕鬆回答:“做大資料的!”

(感謝移動網際網路的發展,感謝各大IT廠商的炒作,感謝國家的重視和規劃,感謝所有TV和AV)

但就在上個週末,跟老媽電話聊家常時,她突然很好學地問了我一個很有深度的問題: “我知道你是做大資料的,但你們大資料到底都在做些什麼?”

我一時詞窮,不知道該從何說起。而類似的問題在知乎上也經常被一些即將面臨就業、被“大資料”三個字圈粉、希望成為資料人的莘莘學子們所追問,因為人懶,基本上都沒有好好回答過。

於是,為了給普及“大資料”貢獻點綿薄之力,為了讓邊緣人士們對大資料多一點基本理解,也是為了能回答老媽的問題,我決定寫篇文章(省點電話費)來介紹一下大資料以及資料人的日常工作。

大資料雖然已經是大家耳熟能詳的熱詞,但資料領域裡的許多術語和概念仍然會讓人不明就裡,所以我準備從“做飯”這個普通人應該都有基本瞭解,老媽更是熟稔於心的領域來切入。

【主菜】

正所謂“巧婦難為無米之炊”,做飯首先得有食材,大資料也一樣,沒有資料說什麼都是扯淡,所以資料就是資料人的食材(只要有資料,我不用吃飯)。

做飯通常都要包括“買菜~洗菜~配菜~炒菜”這幾個必需環節,無論你是開飯店還是家裡一日三餐,做飯的規模大小會有不同,但流程卻是一樣的。而這幾個環節其實正好對應了資料人的日常工作內容:買菜(資料採集)~洗菜(資料清洗)~配菜(資料建模)~炒菜(資料加工)

這裡寫圖片描述

1、買菜(資料採集)

買菜,出門首先要考慮去哪裡買,到地之後溜達溜達看看買什麼食材,看中一個之後討價、還價、交錢,肉、蛋、青菜,各種要買的食材都得按這個流程來一遍,買齊之後就走人回家了。

對於資料人來說,我們把這個買菜的過程叫做資料採集。

菜市場就是我們通常所說的資料來源。

買菜的選擇很多:超市(種類較少,質量上乘),農貿市場(種類較多,菜品一般),露天早市(啥都可能有,運氣好還能吃到野味)。

資料來源其實也一樣,資料庫(超市)中儲存了結構化的業務資料、交易資料,感測器(農貿市場)產生大量半結構化日誌資料、機器資料,網路上(早市)
充斥著各種參差不齊的非結構化資料。

到了菜市場我們得選菜,所有的食材我都想吃,但錢永遠是不夠的,所以我只能有選擇性的買,這個過程叫資料調研,哪些資料是有用的,哪些資料用得起,得有個篩選。

溜達了一圈,確定要買豬肉、雞蛋和黃瓜,得跟賣家挑肥揀瘦、討價還價、敲定斤兩,這個過程叫資料介面規範。

費勁口舌,勞心勞力把菜買齊之後提菜回家,這個過程叫資料傳輸。

根據買菜方式、習慣的的不一樣,資料採集還可以細分出很多型別:

  • 肉類保質期長,一次買一週的量,可以叫全量採集。
  • 青菜講究新鮮,每次只買當天的菜,可以叫增量採集。
  • 每天早上都得去買菜的,可以叫批量採集。
  • 賣家每次上了新菜都主動給你往家送的(土豪專用),可以叫流式採集。

2、洗菜(資料清洗)

洗菜就很好理解了,無論哪裡來的食材,都多少存在衛生或者質量問題,買回來後都得洗乾淨、摘清楚才能吃,不然小則影響口感,大則損害健康。

資料也是一樣,拿回來之後得檢查一下,資料內容有沒有缺斤少兩,資料值裡有沒有爛菜葉,不然後面的報表、分析出來的結果就全是錯誤結論了,我們把這個檢查、糾正資料本身錯誤的過程叫做資料清洗。

由於數字世界裡各種資料來源的多樣性、複雜度遠遠高於現實生活裡的菜市場,資料清洗流程需要面對和處理的問題也就遠遠多於洗菜,為了解決和防範資料產生、使用過程中出現的各方面問題,資料領域細分出了一個專門的研究方向叫資料治理,比如:

  • 為了瞭解各個菜市場的情況,我們需要記錄每個菜市場、每個賣家的豬肉、雞蛋、黃瓜等各種食材的大小、顏色、價格等特點,這個叫元資料管理。

  • 記錄完之後發現每家的特點都不一樣,完全沒有可比性,於是我們決定對豬肉、雞蛋、黃瓜的大小、顏色、價格進行統一規定、統一定價,這個叫資料標準管理。

  • 定完標準之後,我們得定期對各個菜市場進行檢查,看看他們有沒有按標準辦事,這個叫資料質量管理。

這裡寫圖片描述

3、配菜(資料建模)

配菜指的是根據要炒什麼菜,將需要的各種食材事先搭配好放在一起,比如說我們要炒木須肉,那就把豬肉、雞蛋、黃瓜都洗淨、切好放在一個碗裡,這樣在炒菜的時候可以手到擒來,無需到處找食材,能夠很好的提升炒菜的效率。

一般家庭做飯可能不會嚴格這麼做,但對於餐飲行業來說,這是必備環節,想想買回來一車的食材,洗淨、切好之後,如果沒有一定的擺放規律,不能充分保證大廚炒菜時的效率,客戶半天吃不到菜,那這個飯店的翻檯率和回頭率絕對高不了,還是趁早關門大吉。(老媽是個統籌規劃能力很強的精細人,無論是宴請賓客還是一日三餐,都會在炒菜之前把各個菜所需要的食材進行事先搭配,所以讓我得以瞭解。)

而在資料工程裡,也同樣有個專業性很強甚至被神話的配菜流程,這就是傳說中的資料建模。資料建模就是建立資料存放模型,把各個資料來源過來的各種資料根據一定的業務規則或者應用需求對資料重新進行規劃、設計和整理。

配菜這個流程也許在做飯過程中不起眼,有時候可有可無,但是在資料工程裡,資料建模卻是個非常關鍵的環節,所以多說兩句。

資料的種類之多、複雜度之高遠遠超過食材,比如一個銀行,內部和業務、流程、管理相關的IT系統一般都超過100個,這也就是100多個菜市場,而每個菜市場能夠提供的食材少則數百個,多則成千上萬個,這都放在一起就是幾十萬個食材,再加上外部更加複雜的其他資料來源,這麼多不同型別、不同標準的食材放在一起,怎麼才能讓後面的炒菜更加高效和科學,其複雜度和可研究性也的確遠遠高於真正的配菜。

正因為如此,在資料發展史上出現了不少專業的建模(配菜)方法論:

  • 比如說按食材種類進行擺放的(豬肉放一堆,雞蛋放一堆,黃瓜放一堆),我們叫正規化建模,你要是開個火鍋店或者準備吃火鍋,那肯定是採用正規化建模來配菜了

  • 比如按菜品種類進行擺放的(炒木須肉的放一堆,炒宮保雞丁的放一堆),我們叫維度建模,你要是吃個家常炒菜,那採用維度建模方法來配菜就更合理了

各種方法論都有其產生背景、適用場景和支持者,為了不引起戰爭,這裡就不做深入討論了。

在這些方法論基礎上,經過不斷的實踐和研究,一些領先的資料廠商推出了標準的行業資料模型,什麼叫行業資料模型呢,因為每個行業的業務特點不一樣,比如說銀行業、電信業、零售業的業務模式就有很大差異,資料也是不一樣的,所以不同行業的資料怎麼擺放,資料模型怎麼設計,有著很強的行業獨特性,所以每個行業都需要自己特定的資料模型,這叫術業有專攻。

上面這段話沒看懂?沒事。簡單來說,行業資料模型就是“飯店籌備攻略”。

比如說你覺得川菜很賺錢,想開個川菜館,但你只是個標準吃貨,只吃過豬肉沒看過豬跑,怎麼辦?沒事,我這有本“川菜開店籌備攻略”,裡面什麼都有:

  • 首先,攻略裡會告訴你川菜裡有哪些知名、流行、暢銷的菜品(比如水煮肉、毛血旺等等),定期更新,圖文並茂,這樣選單有了。
  • 其次,每個菜品應該用什麼樣的食材,分別的配比是什麼樣的,攻略裡已經終結出來了,而且是來自各大名廚的經驗和終結,於是菜譜也有了。
  • 再次,每種食材在後廚的擺放位置是什麼樣的,這麼擺放能夠在廚房的有限空間裡最大化的提高大廚們工作效率,詳細的設計圖紙攻略裡也給你畫好了,這樣廚房設計圖也有了。
  • 最後,我還告訴你每種食材去哪裡能買到,哪裡最經濟實惠,連供應鏈都幫你打通了

所以,萬事具備,只欠東風,你只要找個門面,僱兩個藍翔畢業生,我們就可以開業大吉,財源滾滾了。什麼,找門面很麻煩,沒事,我們連店面都可以提供,歡迎加入我們的加盟連鎖計劃,我們不但提供攻略,連店面也一起提供,帶精裝修的、鍋碗瓢盆一應俱全。(傳說中的一體機要出場了,當然,這是另外一個故事,先不展開了。)

當然,如果不想開川菜店,我這裡還有粵菜、湘菜、魯菜……,嗯,“八大菜系開店攻略”我這裡都有。

(以上內容稍微有點誇大,開個飯店不是一本攻略可以搞定的,做大資料也不是隻有模型就可以的。不過很多時候,外人眼裡的資料模型就是這麼一本“葵花寶典”。)

說點題外話,由於資料建模的專業性太強,非常需要經驗的積累,於是在資料行業裡衍生了一個專門負責配菜的工種叫“模型設計師”,某全球知名廠商T公司的模型設計師就是業內各大獵頭和甲方的香餑餑,T公司一度被挖成重災區。

4、炒菜(資料加工)

炒菜相信大家都不陌生,如果配菜是個藝術活,那炒菜就絕對是個技術活了。各位大廚不但要有能力把各種食材組合起來炒熟,還得靈活運用油、鹽、醬、醋等多種配料,保證菜品的色香味俱全。而且既然是開門迎客,各種消費者的需求都要能夠響應,而且要響應的既快又好。

資料加工就是在炒菜,是個將各種資料進行計算、彙總、準備的流程,是為最後的資料應用和資料消費者服務的。客戶的要求總是千奇百怪的,所以根據資料消費者的需求不同,資料加工的形式也是百花齊放。

  • 老闆們時間寶貴,注重巨集觀,所以一般只看重要指標,並且要求圖文並茂、簡單易懂。這就好比皇帝每天都吃滿漢全席,所有菜品都是固定的,但是菜品得色香味俱全、上菜速度得快。所以大廚們得事先把資料加工成儀表盤、視覺化大屏等讓人對關鍵指標一目瞭然、並且賣相高大上的資料應用,並且採用各種技術手段保證資料應用的效能(上菜的速度),不然皇帝餓了的時候不能及時上菜,誰都背不起這個鍋。

  • 官員們各管一攤,每天都要面對各種日常工作和突發情況,所以他們對資料的要求是既要有常規菜品能滿足日常管理需要,也要能有額外菜品來應對突發情況,而且上菜速度也不能慢,縣官不如現管嘛。所以參考自助餐的模式,資料大廚們可以將資料加工成多維分析、自助分析這類資料應用,根據經驗和官員們的口味愛好,將有可能用到的菜品通通提供出來,官員們餓了的時候可以根據需要隨意品嚐,貼心又暖胃。

  • 員工們也有資料需求,但通常需求簡單,難點在於人多、需求量大,所以將資料加工成報表這種類似於快餐的資料應用就是是最好的方式。

資料加工除了滿足以上各種資料需求,還有個不得不提的職責就是資料創新。這就好比為了保證飯店的競爭力和消費者們的新鮮感,不時推出新菜品也是大廚們的職責所在。而在資料圈裡,通過資料進行創新已經成為潮流和共識,於是,資料分析師、資料科學家這些角色開始粉末登場。

他們的工作就是通過通過嘗試各種資料(食材)和引數(調料)的組合方式來探索和發掘新的業務機會。而由於食材的量實在太大,配料比例的波動範圍就更是無止境,難以靠人力把各種組合方式進行窮盡。於是,隨著數學理論和技術發展,通過演算法讓計算機自動進行食材組合、調料配比從而產生新的發現成為可能,也就是我們現場經常聽到的資料探勘、機器學習了。

這裡寫圖片描述

【甜點】

碼字很累,洋洋灑灑寫了不少,但感覺有些點還沒有寫透,有些方面還寫的比較牽強,但領會精神最重要,放張大圖,大家意會一下吧。

這裡寫圖片描述

水平一般,能力有限,拋磚引玉,歡迎各種意見和探討。