我在數據分析的部門 (BI 部門:底下有資料工程、資料分析、商業分析) 待了那麼久,一直到很後期才感受到這個工作的全貌 (確實很複雜,至今也還在學)。今天會用小白也能懂的方式,剖析一下:
- 「資料工程師」這個位置在做些什麼?帶大家用實際案例,體驗一下工作流程
- 並且對照工作內容講解一下這些工具跟技能樹是怎麼應用在每天的日常生活當中
資料工程師在做什麼?跟數據分析師有何不一樣?
資料工程師工作拆解:3 個重要部分解讀
資料工程師的工作內容主要集中在數據處理和管理 (聽起來很簡單,但其實很複雜 XD)。我先把他簡單分為三個面向,我用水的概念來解釋一下:
- 設計資料流程:資料就像水一樣,需要有水壩、水線、水管,設計資料流程就是先把這些東西的位置跟流向,搞清楚!
- 進行數據串接跟資料清洗:水壩裡面的水,可能從 A 河道、B 河道來的,數據串接就要處理從不同源頭來的水。接著,水裡面可能有重金屬污染,所以我們要先進行清洗,再接到水壩裡
- 建置數據庫:接下來,就要搭水壩啦!把水壩搭好,每當下雨有水要流進來時,就可以自己啟動設計好的機制
資料工程師就是搭建整個水流的自來水公司,並且負責裡面種種難題跟困難~(我覺得自來水公司真的形容的很貼切 XD)
數據工程師跟一般數據分析師有什麼不一樣?
簡單來說,數據工程師把自來水公司架好了,一般數據分析師比較像是把水拿來用。
數據分析師就會實際把水拿來灌溉花朵、洗米煮飯。
那職缺說明上,這些工作內容就會比較偏向資料工程師做的:
- 數據庫建置與資料清洗 (ETL, Data Pipeline)
- 必備技能:大量 Python、Airflow、Perfect、Mage、Docker、Kafka、Spark、SQL (DDL、NoSQL)、Git
- 了解雲端環境:AWS、Azure、GCP
資料分析師會更偏向這些工作:
- 跟各部門或是客戶釐清資料需求:溝通能力、Excel、專案管理
- 撈取資料、視覺化、分析:SQL、Excel、Tableau、Power BI、Python
那資料工程師跟軟體工程師有何不同?
對於系統背後的資料結構跟演算法,我認為了解這些不是數據工程師的首要工作目標!反而是釐清公司資料庫怎麼讓公司內部的人好用、能用,更重要!
- 主要目標的差異:
- 資料工程師: 專注在數據工程和數據處理方面,包括建置、管理、優化數據架構,進行 ETL 流程,確保數據的有效跟可用性
- 軟體工程師: 主要專注在軟體應用程式的開發跟維護,包括程式設計、測試、部署等等
- 雖然都是用程式,但工作目標跟設計的東西,真的滿不一樣的!
- 技能樹的差異:
- 資料工程師: 數據庫知識要比資料分析師更進階,也要有處理各種源頭資料的能力。基本工作就是:數據流程管理,通常用 Python、SQL 比較多
- 軟體工程師: 熟悉多種程式語言、資料架構、演算法。也有前端跟後端,或者是全端的區別~
儘管工作細節上有些區別,但資料工程師跟軟體工程師之間的界線還是偏模糊,特別是在數據為導向的產品領域中,可能會要求工程師要具備兩者技能~不過初學者在剛進入之前,還是比較建議先從其中一個開始準備,免得學一學更混亂 XD
資料工程師轉職容易嗎?薪資如何?
數據工程師轉職,準備上相對於軟體工程師而言,我個人覺得認為容易一點。
數據工程師轉職,準備上相對於資料分析師而言,我個人覺得認為難一點。
所以難度是:軟體工程師 > 數據工程師 > 資料分析師。
薪水的話,之前在 數據分析師 10 大 Q&A 有講過數據分析師的薪水,數據工程師的薪水會比工作單純一點的資料分析師多更多 (有些會到 1.5~2 倍):
資料工程師的工作樣貌及技能樹詳細解釋
4 大工作樣貌 + 幾十種常見工具對照表
- 數據庫建置與資料清洗 (ETL, Data Pipeline)
- 負責建置數據庫,進行大範圍的資料清洗工作,使用程式語言如 Python 進行 ETL (Extract, Transform, Load) 流程
- 使用 Python 等程式語言搭建工作流程,並在大型團隊中進行工作流程管理
- 使用 Airflow、Perfect、Mage 等工具進行簡單而有效的工作流程管理,很棒的視覺化排程工具,降低一個人離開之後,難以維護排程的狀況。除此之外,為了讓大家一起協作跟管理程式碼,也會用 Git 來做版本控制 (版本控制簡單來說:哪個人編輯之後是最新的)
- 在虛擬環境中管理資料流,使用 Docker 在容器中建置資料庫
- 進行不同資料源頭的搜集,包括使用 Kafka 和 Spark 等技術
- 負責建置數據庫,進行大範圍的資料清洗工作,使用程式語言如 Python 進行 ETL (Extract, Transform, Load) 流程
- 資料庫概念
- 具備對資料庫的理解,包括 SQL 和 NoSQL 等不同型態的資料庫
- 雲端資料庫的經驗
- 越來越多的公司將資料存儲在雲端平台,所以最好也要用過,例如 AWS、Azure、GCP
- 職位名稱 (要搜尋哪些關鍵字?)
- 資料工程師、數據工程師 (Data Engineer) 是主要的職稱
- 在數據庫管理方面,也有延伸的資料庫管理師、資料庫工程師 (Database Administrator, DBA) 的工作,也可以一起投看看!
- 其他更完整的工作內容拆解及工具參與的步驟,可以看以下網站整理好的圖片 (英文):
- Data Engineer workflow
- Data Engineer Data Stack (技能工具)
- 東西很多~參考即可~!資料相關的工作本來就是想辦法拿到工作之後,做中學!(Refer from Enzo 資料工程師)
資料工程師小型專案集範例:三大步驟,了解數據工程「重要核心概念」
第一步:ETL 的路線規劃 (先把數據水庫 SOP 設計出來)
剛剛講了那麼多實際工作內容跟對照的技能樹,先別著急~我認為實作一個小型專案,才能夠比較了解聽起來很簡單 (還是很複雜?) 的流程,到底怎麼運行的?
- 先把資料源頭載入進來:這邊示範用 API 來載入 (不知道 API 要幹嘛?怎麼用?延伸閱讀:爬蟲、API:5 分鐘搞懂原理 + 實作案例拆解:做外部資料分析必學!)
- 接著,練習將資料源頭建成資料模型 (Data Model),把一張很大的資料表,切成一張一張小型資料表,這個步驟,就是所謂的 ETL,這邊我們進行的是 Extract 提取 & Transform 轉換 (不知道資料模型要幹嘛?怎麼用?延伸閱讀:資料表的架構是什麼?學數據分析之前一定一定要搞懂「資料模型」的概念!)
- 接著,我們 E & T 做完之後,就可以透過底下的實作環節,進行 ETL 的 Load 載入
第二步:準備所需要的軟體 (也可以稱為所需的技能樹)
這邊我們會用到:Python, Mage, GCP
- Python 用來把資料模型建出來的資料表做出來
- Mage 用來把資料排程 (Data Pipeline & Workflow) 架出來
- GCP 用來存放這些匯入 (load) 近來的資料,讓後續的「資料分析專案」可以順利進行 (不知道 GCP 怎麼免費用?延伸閱讀:Google BigQuery 教學:3 分鐘完成資料匯入跟 SQL 查詢)
第三步:實作 ETL、設計 Data pipeline
- Step 1:用 API 載入資料
- Step 2:畫好 Data Model
- Step 3:用 Python 實作 E & T (Extract 提取 & Transform 轉換)
- Step 4:用 Mage 把排程 (Data Pipeline & Workflow) 架好,匯入資料倉儲 GCP 中
- Step 5:在 GCP 中,用 BigQuery (SQL) & Looker (BI tools) 盡情的做資料探索跟分析~~~
- 推薦 side project 影片資源:Uber Data Analytics | End-To-End Data Engineering Project
- 我的範例 python code,歡迎自行建立副本使用~(我使用的是 Google Colab,如果不知道這怎麼用,延伸閱讀:Google Colab:以 Python 3 分鐘完成資料匯入及分析)
結論:轉職資料工程師前,先試試看 ETL 小專案
最後,數據分析師的工作或是工作目標,通常大家比較能理解。
但資料工程師,對於文科、商管的同學,還是跟軟體工程師一樣,比較難去想像他每天的工作狀況,還有到底學了這些東西要幹嘛?
所以,我其實比較推薦,在大家決定要轉職資料工程師,或是決定開始學資料工程之前,至少先用最小限度的方式,嘗試看看整個 ETL 的工作流程,了解一下 ETL、Data Pipeline 到底是什麼?也順便摸一下這些工具自己會不會排斥,等到都確定之後,再來考慮要不要把這技能賴以維生~
當然,如果做完之後,還是興趣滿滿、對於職涯可以學到什麼、對於薪水等等,都很期待,除了直接轉到難度高一點點的數據工程師外,也可以考慮一下要不要先試試看數據分析師 (數據分析的工作有些也會碰到一些資料工程)