2020-02-01|閱讀時間 ‧ 約 7 分鐘

入門數據分析的第一個大門檻:SQL/Hive取數

最近注意到幾所大學都創建了數據相關的學程或社群,例如中山管院:商業大數據逢甲資料科學大講堂,也有企業在做推廣(例如國泰金控數數發團隊),覺得現在學生真幸福,不禁回想自己5年前剛入這行時的學習過程…
當初的基礎僅有還不錯的統計學、一點點excel、一點點R。隨著工作難度的增加,這一點點技能已經不敷使用。開始到處找書、找案例、找課程。學習過程幾乎是缺哪補哪,沒有什麼系統章法,走了不少冤望路。
而我自己感覺學的最艱辛的,就是SQL/Hive了。本篇文章將從自己接觸SQL的心路歷程來分享SQL的重要性&不好學的原因。
也這在回想的過程中,腦中出現了一個想法:
“如果有一門課程的內容,是以數據分析工作中常用的SQL查詢操作為主,並能快速應用到分析工作中,那是不是很有價值?”
當然,我不確定市場的需求如何,因此設計了一個問卷想了解大家的需求,希望看到這篇文章的你,能夠幫忙填問卷(https://www.surveycake.com/s/wonqP)。

SQL重要嗎?
剛入行我是很純粹的分析師,例如 “分析廣告推廣的效果如何?”、“分析新的產品訂價該如何設計?”
當時基本數據都已經有報表了,所以可以根據報表的歷史數據往下分析。然而,隨著分析的角度不斷深入,或是分析的項目越來越多元,或是老闆的問題越來越多樣化…..報表的數據已經不足夠了。
為了滿足分析所需的各種數據,我只得頻繁的跟DBA要數據,但心裡總是不踏實,要是有人質疑我的分析結果的話,我自己能保證input都是合理的嗎?
不能,因為最原始的數據不是我掌握的。
我必須要會自己取數!!
這是我開始學SQL以及發現”取數”有多重要的時期
我在研究所學計量經濟學時,網上或課程都已經提供了數據,接著開始做清洗、挖掘、選特徵、建模等操作。我想大多數人學習數據分析時,也是一樣的場景。
但真實環境中,數據都是存在數資料庫中,不會SQL,無法將數據取出來,基本上寸步難行。所以我們可以看到很多人說,數據分析60%以上時間都是在取數,身為一個數據分析师,操作SQL是一個必備技能
到了現在(2020年),我觀察到的職場環境,對SQL的要求已經不僅限於數據分析師,甚至營運、PM,凡事要依賴/參考數據做出決策的職位,或多或少都會要求具備基本的SQL操作的能力。

SQL難學嗎?
我認為SQL上手不難,但要精通SQL很難,因為只能通過長時間的實戰才能掌握好它。
當時分析部門剛成立沒多久,大家的背景也都是分析為主,專精SQL的人不多。我記得每晚6點吧,team leader會在牆上教我們一些SQL的語法,從最簡單的select、通配符,到表關聯,計算函數count()等等的,奠定了我最基礎的SQL語言。
配合真實環境的操作以及網上的資源(推薦:w3c的sql手冊 SQLBoltHive Tutorial),我開始進入可以自己取數
一切就順利了嗎?不…年輕人還是太天真了。
我發現我取的數,光是跟報表對就對不上,到底差異在哪?
我跟DBA要了幾個報表的代碼來看時,看到腳本用到的多表關聯和子査詢多層嵌套讓我不禁懷疑人生,網上少提的CASE WHEN組合邏輯查詢也遍地開花,一個報表的取數SQL數百行甚至上千行的代碼也不足為奇。
我還是太淺了,買本書好好啃吧
我這麼想,畢竟研究所的學習,最大收穫就是自己找資料。然而尋尋覓覓,外面的書籍內容,講的最多的卻是資料庫設計、數據管理、底層架構。
對數據分析師來說,査詢才是做的最多的操作,畢竟使用工具是為了完成分析畢、竟我們不是運維也不是數據開發工程師,實際工作中也確實用不到這些知識。
因此我的學習過程就是看DBA的腳本,以及從分散各處的資訊,配合業務方千奇百怪的需求,實際操作、一點一滴、片段式的逐漸累積。
我想每個人在通往熟練使用SQL的道路上都會有這個“陣痛期”。當然,如今我已度過這個“陣痛期”,SQL也算熟練,但每每想到那段時間的摸索過程,還是覺得辛苦。
課程大綱的構想
課程大綱的構想
我認為SQL上手不難,但要精通SQL很難,因為只能通過長時間的實戰才能掌握好它。而且SQL的學習資源是最缺乏的(相較Excel、機器學習、R等)。
因此我有個想法,如果有一門課程的內容,是以數據分析工作中常用的查詢操作為主,並能快速應用到分析工作中,甚至是把常規的分析方式,例如RFM模型、留存分析、日活、行為分佈都變成模板化呢?那是不是很有價值?
如果妳為對數據科學相關感興趣在校學生、想入職數據科學相關崗位的人群、剛入職數據相關崗位並對SQL一知半解的人。我希望這種課程能幫助到你,也請你填寫問卷讓我了解需求。
整理中,有點雜亂的草稿

學好SQL的優點
創業公司 CitusData的雲產品負責人 Craig Kerstiens 曾發表了一篇文章SQL: One of the Most Valuable Skills來說這件事,我覺得有很大的共鳴,Craig 是這麼說的:
  1. 它對於不同的職業角色和學科來說都是有價值的;
  2. 一旦學會了就不需要重新再學;
  3. 它讓你看起來像個超級英雄。一旦你掌握了它,而其他人不懂,你就顯得特別强大
有句話我特別有感:
SQL是我所知道的最神奇的概念之一。它已經有近五十年的歷史,而且沒有被其他東西替代的迹象。我們已經創建了無數種科技來存儲和處理數據,但似乎總是嘗試在這些科技中重新實現SQL(例如Hive、Presto、KSQL)。
註:Hive是基於Hadoop的一個資料倉庫工具,可以將結構化的資料檔案映射為一張資料庫表,並提供完整的SQL査詢功能,可以將SQL語句轉換為MapReduce任務進行運行。

當紅炸子雞的Spark在支持SQL的時候也需要做到和HIVE的相容,可見HIVE已經事實上成為了Hadoop平臺上SQL和類SQL的標杆和事實的標準

Hive和SQL是非常相似的,如果你可以熟練使用SQL,就可以平穩過渡到Hive

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.