BI工程師、數據倉庫工程師、ETL工程師、數據開發工程師(大數據開發工程師) 有什麼區別?
一味的解釋數據倉庫概念可能沒意思,我們從不同角色出發吧
老闆 :我是一家手機公司的老闆,今天要向去董事局彙報,我要準備一份介紹過去三年的用戶增長、用戶留存、用戶活躍度、手機裡面每個APP使用率等情況的報表,假如下面沒我下面沒有BI,那我肯定就蒙逼了。。
BI : 我是一名非技術BI,我天天看競品的分析報告,看雙十一銷量,看各種評論,知道自己的產品有哪些短板有哪些長處,我分析南北地域差異,國內外客戶喜好,總之我在手機領域有著很強的行業解讀能力和數據解讀能力,我可以畫出非常漂亮的圖表和PPT。今天老闆讓我出一份報表,我還要去刷臉找ETL工程師幫我跑出這次報告的數據,基於這份數據我要給出一定的解讀,為啥這個月手機賣得不如上個月,為啥用戶流失越來越嚴重等等都是我要去做的。
ETL工程師 : 我是食物鏈最底層的苦逼ETL工程師,我會寫shell、我會搭hadoop/hive/hbase、會寫超複雜邏輯的sql,今天那個不會自己計算數據的BI又讓我跑幾個數據,我本想讓她提需求流程的,但她說這是老闆要的(運營慣用的殺手鐧!!!),要加急處理,我只能放下手頭的活兒給她跑數據了,花了半個小時把數據跑好給她,希望能就這麼交差吧。
如果你以為我每天就做這點事那你就錯了,我平時的工作可不僅僅就是完成上面交給我的任務哦,我還負責數據ETL過程、數據建模、定時任務的分配、甚至有時Hadoop集群的維護等等都得我去做,每件事單獨拿出來都可以拿出來寫本書。
就拿ETL過程來說吧,你要把原始數據從各種資料庫、各種伺服器的不同業務日誌歸一化到同一類格式,要約定好分隔符,然後導入到分散式文件系統HDFS,甚至你還要和業務系統定義數據格式出規範,數據收集完,你還得出中間表,數據過濾,格式統一,ID統一,維度統一,通過不同的數據現象進行數據,完了,你就得出一些日報周報之類的數據了,這時候你要按照需求把數據組織成一定的格式然後導Mysql、或者HBASE等等。總之你就是需要把數據各種收集、各種處理、然後各種導入導出,是不是很有意思?不過這些數據倉庫都非常初級,其中ETL工程師可發揮的空間太多了
1、正常情況下,老闆 —&> BI —&> ETL 出一份報告,這中間能否BI直接去計算數據?sql太複雜,那麼可不可以一切數據標籤化,BI甚至老闆要什麼就選什麼?
2、ETL工程師可以把數據收集自動化、可以規範業務日誌格式、可以將一切都配置化,但是這些都是基於N+1的,也就是說今天的發生了什麼一定要到明天才能看到,那麼有沒有一個系統能把數據分析做到實時或者准實時?參考雙十一大屏,馬總要是到12號才能知道成交了多少筆不劈了那幫做數據的才怪。3、目前絕大部分分析系統都基於離線計算(HADOOP/ODPS),那這裡有個問題了,運營或BI想看個數據還得你離線慢騰騰跑完才能看到,那麼有沒有一個系統可以支持你再大的數據量,再複雜的邏輯,毫秒出數據?我沒有提到的還有演算法工程師、大數據運維工程師等等。
數據倉庫的概念很廣很大,但在大數據應用面前也不值一提。
如果把數據價值分層,這裡分層的辦法很多,我只列舉一種方法,有人分過5層
第一層: 為老闆提供決策支持,例如傳統的財務報表第二層: 為運營提供決策支持,例如數據化非常徹底的淘寶運營們
第三層: 為產品提供支持,例如有產品經理們會拿著報表天天看研究自己的某一個按鈕擺放位置對不對第四層:數據用於生產,比如直接對接廣告系統產生收益,比如直接對接推薦系統為用戶推薦商品,實現千人千面,再比如利用手機APP直接為不同用戶push消息第五層:大數據交換,數據產生直接受益大部分公司能做到前兩個層次就已經很不錯了,如果能做到第三層,就已經很牛逼,做到第四第五層次,國內互聯網公司不超過2家,大數據應用太大了,不知從何說起,以後聊吧。
--------------------------分割線--------------------------
針對評論中的一些問題做些統一的解釋
問:數據交換的理念有人提到數據交換,數據交換不是簡單的我給你一點,你給我一點;也不是我給你錢,你給我點數據。原因是這些模式基本走不通1、數據很難定價,無法簡單的將數據定義為商品,數據供給方也無法去衡量一份數據能產生多大的價值,只有在具體的應用場景中才能大概估計它的價值,因此幾乎沒有一種簡單公平的機制去為交易雙反指定交易規則。
2、數據拷貝成本幾乎沒有如果是一部iPhone,如果想要造出一模一樣的一部iPhone成本奇高,所以蘋果公司可以放心大膽的把手機賣給你而不怕你仿製,但是數據不行,因為數據幾乎沒有拷貝成本。那麼帶來一個問題,如果我把這份數據一百萬賣給你,我幾乎除了『你的誠信』之外沒有任何方法去限制你不把數據折價買個其它更多第三方,那這份數據的市場價值很快蕩然無存。3、隱私商業有很多隱私規則,用戶也有很多隱私,這些都是不能簡單的通過拷貝的去交換的,如果給對方一份數據,例如:用戶的在某APP的瀏覽行為,那麼如果被第三方運用在電話騷擾,廣告彈窗之類的場景中,肯定是不行的。所以數據的交易一定不是通過價格衡量,也不能簡單的數據拷貝
數據交換 最理想的方式應該是,雙方共同拿出一些東西,然後服務於某個場景,而數據導出等行為都是被禁止的,雙方不能看到對方的數據也不能導出對方的數據,可被導出的結果一定是無害、不侵犯隱私的、不對原數據價值產生影響的東西。
而這樣一種數據交換的方式卻需要非常大的體系建設,平台建設,制度建設。
這樣的體系和平台,需要長時間的摸索和市場培育,數據人任重而道遠。
今晚的杭州明月皎潔,明天的西湖應該分外美麗,大家加油。BI 工程師、數據倉庫工程師、ETL 工程師、數據開發工程師 在大型公司裡面分工還是比較分開的。BI 工程師:一般負責開發企業內部報表,主要根據產品技術選型的問題,他們操作的軟體不一樣。比如說 Microstrategy,Tableau 等等。ETL 工程師:負責數據的抽取,轉化和傳輸,一般這個部門在企業裡面負責數據的轉化,以前數據倉庫時代是 SQL 為主和 ETL 工具為輔。現在非結構性質的系統比如說 Hadoop 等等,他們腳本語言的能力需要很強。EDW 工程師:他們一般維護表的結構,管理系統的 performance,整個數據倉庫邏輯層物理層以及 admin 層面的管理。更傾向於管理 DW 和開發核心功能,不像 ETL 工程師相對偏業務邏輯。GrowingIO 主要針對用戶的 App 或者網站行為做精細化分析,不用在產品裡面部署大量的埋點,GrowingIO 能夠幫助運營提高效率,實際上是上面各種工程之間的一種集合。幫助企業了解運營效率,提高產品體驗,加快增長速度。數據開發工程師是個非常泛的概念,我理解有類工程師開發廣告數據產品,搜索產品,推薦系統等等。希望這些非常匯總的回答給您一些幫助。
真要講區別的話,怒答一記。
---------------------------------------------------------BI工程師:一般是做數據可視化,報表開發,常用工具(如BO Cognos MSTR等),也有基於js(如echarts hicharts等)的Web開發數據倉庫工程師:傳統的數據倉庫概念,職責大致可以分為兩種,一是業務分析(BA)和數據建模(Data Modeling),主要做需求分析,業務理解,數據倉庫表結構和欄位邏輯設計;一是流程(ETL)開發,具體工作如下
ETL工程師:根據數據建模產生的設計文檔,用工具(如Informatica DataStage ),或者SQL
大數據工程師:現在比較流行hadoop的數據平台架構,通過MapReduce(主要是處理日誌數據)或者HiveQL來完成傳統ETL工程師乾的活
---------------------------------------------個人感覺,除了BI工程師以外,其他三個真的沒多大區別。別被崗位名稱困擾,搞數據的,應該各種都做,或者至少體驗過也知道怎麼做:模型設計,ETL開發,報表,簡單的分析這些角色劃分的界限本身就很模糊,一個人甚至可以同時扮演全部這些角色。
首先說說數據倉庫系統構建過程中一些主要的環節:
1. 數據收集
2. ETL
3. 報表系統的開發
4. 基礎技術環境的構建、維護
5. 演算法、數據挖掘
6. 類似於AB測試系統各個數據應用系統的開發
7. 數據安全、備份
基本上1,3 ,4 ,6,7項工作是屬於工程屬性比較強的工作,2,5項屬於工程和領域知識有交叉的工作。
1. 數據收集。一個完善的收集系統,不僅要搭建成數據收集的管道,還需要對數據收集過程本身做好監控,對數據收集過程中出現的問題及時知曉、及時處理。
2. ETL,將收集過來的數據進行清洗、轉換,在此過程中形成數據倉庫的層次化結構。這個環節需要一個根據具體的業務需要,通過ETL過程形成數據倉庫的層次化體系結構以及抽象概念系統,以便於後續的報表開發和數據分析、數據挖掘。
3. 報表系統開發。技術上需要一個開發工程師來做,需求上需要一個熟悉業務的人來定。報表系統的內容會隨時間、隨業務不斷演化,因此設計上也需要適應這種演化。
4. 基礎技術環境的構建、維護。負責底層數據存儲、計算框架的設計和維護,建立起存儲和計算的層次結構,比如最活躍的數據可以放在性能較高的設備上,而舊的數據可以放在幾台專門的歸檔伺服器上;計算上,大型的數據轉換任務可以交給MapReduce來做,而基於小數據量計算的報表指標就可以使用性能較高的內存計算來做,比如Presto。
5. 演算法、數據挖掘。在ETL結果之上進行數據分析、數據挖掘任務。工作過程中可能需要一些新的數據,這就需要和數據收集、ETL相關的人員進行溝通,以達成工作目標。
6. 類似於AB測試系統各個數據應用系統的開發。數據分析、數據挖掘的結果需要應用到產品的優化上,而數據的應用系統就是要打倒這個目的的。這些系統僅僅作為橋樑存在,主要就是要保證性能達標、以及邏輯正確。這個環節與數據收集階段結合,就生成一個數據系統閉環。
7. 數據安全、備份。非常重要的工作,數據的訪問許可權限制、數據的冗餘備份機制,都要逐步建立起來,災難恢復機制要經常進行測試,做好最後一道防線。
根據工作量和具體需求,工程性工作大概需要1到3三個有相關經驗的工程師即可,而需要領域知識和熟悉業務的工作,大概也需要1到2人。至於人要掛什麼title,看著來吧!
Update: 隨著業界的不斷發展,和對數據認識深度不斷地提升的客觀需求,一些機器學習相關的知識也應該納入到日常的工作內容中了,其中特徵工程是一項基本的技能。
我一個實施人員,啥都幹了。BI工程師,主要工作是寫sql畫報表,我比較頭疼交叉表和分層匯總,最多的一個sql寫了4500行,基本上要維護總數400+的存儲過程。
數據倉庫工程師,基本上我接觸的都是數據集市,就是給各種外圍系統提數的。
ETL工程師,主要是寫shell腳本和操作kattle之類的工具給自己的系統或者其他系統提數。數據開發工程師,寫存儲過程,設計數據結構和數據介面,實現一些產品不能實現的數據處理要求,偶爾出報表數據,維護存儲過程。大數據工程師:現在的話就是用spark,數據量大很多,其他感覺跟以前差不多之前幾位都回答得很好了,我來補充一下我自己的理解。
BI工程師相對ETL而言,更關注業務,需要一定的行業領域知識。ETL更強調利用技術和工具對數據處理過程和數據業務開發。大數據工程師更強調的是平台,平台建設和規範化,需要對各類技術、工具的底層實現和原理有深入了解甚至是改造。數倉項目比較專業的角色分工是五種:
按項目出場順序依次為EDW模型師:負責EDW部分各層邏輯模型,數據結構的規劃與細節設計(如基礎層,緩衝層,ODS,實體屬性關係,介面選取,映射關係等)。
數據倉庫架構師:負責數倉物理結構的設計與開發(如庫結構,用戶,許可權,命名,數據類型統一等)。
ETL工程師:按模型師(EDW或BI)提供的數據流方向和映射邏輯,設計和開發數據處理演算法和腳本,實現數據供給。
BI模型師(也叫分析師):根據業務需要和實際數據情況,對某一專題進行數據挖掘的建模和設計。(和EDW模型師的核心區別在於一個是局部精細化應用,一個是全局統一化存儲)
報表開發工程師:按BI模型師的要求,開發具體的報表界面。打個可能不太恰當的比方:
假設數倉系統是個計劃建設的城市,那麼主要由EDW模型師規劃城市地理位置和核心產出物,以及規劃通用基本的功能區,如居住區,管理區,交通港等;架構師設計城市建設主材料;ETL設計各種交通物流通信水電氣循環等系統;BI模型師詳細規劃某一特殊功能區,如商業區,辦公區等;
報表工程師則負責將BI模型師畫的設計圖或模型建成實物。至於題主所說的數倉工程師可能指的是中級或初級EDW模型師;數據開發工程師可能指的是有初級架構師角色的ETL工程師ETL/數據研發? 寫count(*)的,寫各種複雜的SQL,複雜到一般RDS吃不消。數倉 拖數據的,每天凌晨就吭哧吭哧的從RDS拖數據到Hbase這類玩意去。BI 看報表做PPT的
BI工程師:需要有一定的資料庫經驗,掌握SQL查詢優化方法,精通Oracle、SQL Server、MySQL等主流資料庫的應用設計、性能調優及存儲過程的開發。掌握BI相關工具,如ETL工具(如SSIS)、OLAP工具(如SSAS)和前端展示工具。熟悉ETL邏輯、OLAP設計和數據挖掘相關演算法。
數據倉庫工程師:企業所有業務系統數據的集合體, 用於分析與決策支持. 而做與數據倉庫的建設/維護項目相關的工作, 均可以稱之為"數據倉庫工程師"
ETL工程師:負責將分布的、異構數據源中的數據如關係數據、平面數據文件等抽取到臨時中間層後進行清洗、轉換、集成,最後載入到數據倉庫或數據集市中,成為聯機分析處理、數據挖掘的基礎。
數據開發工程師:傳統的DBA主要屬於運維職位,而資料庫開發工程師則屬於軟體研發職位。比如都要跟進資料庫生產環境出現的故障問題,其中DBA主要負責故障處理,而資料庫開發工程師主要跟進自己開發的系統模塊出現的bug或性能問題。
【羞澀推廣:產品經理開放社群,邀請您加入!線上定期討論貼;線下圓桌精英會持續開展!歡迎資深產品經理您參與或圍觀。微信搜:PMcom4U,或者搜索公眾號:PMcom】
BI:查看和分析數據,根據數據得出產品、策略上的結論。比如某個活動的點擊率、覆蓋率。
ETL/數據倉庫:負責數據倉庫的維護、數據的清洗、建模、數據從採集到入庫的整個流程的設計和控制等等。
大數據開發:具體業務的實現,包括推薦系統、用戶行為分析等。
簡單來說就是:BI 是看數據的,數據倉庫/ETL 是導數據的,大數據開發是計算數據的。當然了,這些只是主要職責,相互客串的情況是很普遍的。BI,ETL,數據開發,數據倉庫工程師。都是數據行業里的角色。工作範圍最大的是「數據倉庫」,其目的是「BI」,ETL是數據倉庫過程之一,數據開發字面理解就是以數據為目標的技術工作,可以是數據倉庫中的所有技術工作,含ETL。其角度不同,也有交集,不過這些只是title,title 而已。數據的劃分,一般要求可加和,窮盡而不重複。我們對數據工作如果照此劃分,可以為運維方向工程師,數據處理工程師,數據可視化工程師,數據模型師,演算法工程師。這個行業工作內容很寬泛,圈外的人認為「程序員」就什麼也能做了,一般公司設置的崗位少,而角色多,一人多個角色,跨個方向很是常見,大家的技術能力很泛泛,難有機會精通一項。title 也沒有太大意義了。
嘖,專業化,條塊化,細分化,真棒!很多行業,不缺乏細分專才,但惟有能跨界跨領域者,升職快薪水多創業成功率高。
數據工程師是對資料庫的開發 維護和管理 具有一定的判斷力和分析能力大數據工程師 我不是很喜歡大數據這個詞 說白了就是分析人類 對海量的信息進行統計 從點擊量之類的統計數據來分析人們喜歡幹什麼 一個關鍵詞出現了多少次 什麼時間 每天平均幾次這樣和很多其他指標分析這樣的人有多少 那樣的人有多少 當然在分析人類之外還有分析其他東西 不過主要是分析人類活動及衍生產品 是一個系統的洞察力和AI判斷準則 有點偏 其他的不知道 只知道部分計算機沾邊的
都叫數據開發,面阿里時就知道,這些都得問
數據報表的;平台存儲的;挖特徵的;策略落地的,墜屌了,給你們提供出口,哼~
以上純屬yy,勿噴 )
其實就是數據開放工程師,沒什麼區別,有什麼做什麼。
看了大家的解答,都非常棒,易懂,雖然看完後我還是很蒙圈,感謝大家的解答,列印了幾個解答,打算細細研究。
沒什麼區別,反正所有的工作都做就對了。
推薦閱讀:
※什麼是winsorize處理?
※三個月內如何快速學會辦公三大件 excel word ppt ?
※數學系學生向數據分析師發展所需培養的硬技能?
※數據挖掘和數據分析之間的聯繫,搞數據分析基礎是啥?就業情況怎樣?
※請各位大牛推薦幾本關於「Python 數據挖掘」方面的書??