在我們公司,Data Team 分為 BI(Business Intelligence Analyst)以及 DE(Data Enginner)。
分工的方式從資料流程來說,最初資料會由 DE 從外部系統導入並放上 bigquery,
分析師只需要透過 SQL 就可以做各式各樣的查詢,也可以把加工後的新表格導入 Looker Studio 製作儀表板。
因此,過去身為分析師的我,對終端機 (Terminal) 一直都偏陌生,大概只會輸一些 git 指令。
直到轉職為 DE 時,我先問了我們家的資深 DE:
「如果我想最快上手 DE 的工作,應該先學什麼?」
他想了一下,最後回答:
「最常用,最需要學的應該 Linux 指令。」
當時我還不太懂他這句話的意思,
直到我的第一個 DE 任務到來:
「把客戶放在 SFTP 資料夾上的檔案,上傳到 BigQuery。」
收到任務了!第一步我們要來拆解這個任務要怎麼完成,
在我們公司的技術框架下,可細分為以下步驟:
- 連線 sftp server 並找到客戶的資料夾位置
- 確認檔案內容與格式
- 將檔案複製進 GCS bucket
- 將 GCS bucket 中的檔案匯入 bigquery 的指定 dataset
光是在步驟一連線 SFTP Server 時,我就發現 PowerShell 不好用,Chatgpt推薦我用Git Bash
1. PowerShell vs Git Bash
PowerShell 是 Windows 環境下常見的終端機,但語法上與 Linux 有些差異。
為了模擬 Linux 環境,建議用 Git Bash,支援比較多 Unix/Linux 指令。
如果你是 Windows 使用者,Git Bash 會是一個很好的入門工具。
2. SFTP / FTP
因為客戶會把檔案放到 SFTP 資料夾,所以我必須先透過指令連線到 SFTP,並下載檔案。
常見的指令像是:
3. Linux 常用指令
連進 sftp 環境後,所有操作都是 Linux 指令,包含:
雖然這些指令看似簡單,但它們就像是搬運資料時的「手腳」,沒有這些基礎根本動不了。
而且在實際環境中操作時,這些指令就像句子裡的動詞,還得加上名詞才會是完整的句子,譬如
cp *.csv backup/
是把當下路徑中所有 csv 檔都搬到此目錄下的 backup 資料夾內的意思
光是參考著前人寫過的code,在自己的終端機上反覆操作這些指令,就已經花掉我半個下午
明天還得繼續學習把 sftp 中的檔案搬到gcs的環境中呢!