直接用SQL來分析數據?怎麼沒用python/R?3個面向來考量分析工具的選擇
最近收到一個臉書朋友的詢問,以下原文:
我最近有在leetcode 上做SQL的exercise,我覺得有些題目蠻困難的,有些問題看了解法感覺是把SQL當做程式語言,並且直接用SQL來分析資料,我想問說在真實的業界,會用到那麼fancy 的SQL寫法嗎(有些問題感覺用程式語言來解相對方便許多)?
在我的認知,SQL只是抓取需要的資料,後續的資料分析或是更近一步的探索是在像是python 的pandas 或是R的一些套件來完成
以上的wording萃取出來就是:『分析項目的開發中,是如何考量該用的工具』?不知道大家有沒有過這種疑問?
我很喜歡這問題,因為我自己也沒很系統的思考過。我想可以從(1)數據量級、(2)開發環境、(3)應用場景 來考量。
先看看這個exercise,接著從這三個方向來回答臉書朋友的問題、最下面放上exercise解答。
邀請你至Blog閱讀全文:
直接用SQL分析數據?怎麼沒用python/R?選擇資料分析工具的3個考量如果你喜歡我的文章,也邀請你訂閱『Rock Data』電子報,支持我持續創作
1. Hello All:主站遷移至👉https://andyrockdata.com/ ,請改至『ROCK DATA』Blog 閱讀新文章完整內容,如果喜歡我的文章,可以訂閱我的電子報(Medium站仍將張貼新文章訊息)2.立即追蹤👉ROCK DATA臉書粉絲頁跟ROCK DATA IG(@andyrockdata)3.【入門數據分析,掌握HiveSQL取數能力】在hahow上架啦,購買連結👉 http://hahow.in/cr/andyrockhive4. 半佛系鼓掌:原來只要滑鼠一直按著不放就可以一直鼓掌了。那請你按久一點:)有任何想法或感興趣的地方歡迎留言/討論,或者私訊我!5. 往期的數據相關文章可以參考以下link
1. 數據量有多大?
從取數起,”分析”就已經開始了
在比較有規模的公司,數據量千萬上億是滿正常的,關聯2~3張這種量級的表也滿正常。如果downlload raw data到電腦,內存夠嗎?
在分析要進展前,腦中大概都已經會有分析維度的構想了、甚至結論可能都已經能猜到大概。
再反推在SQL中是否要先做什麼初步處理;例如哪些數據是雜訊在取數時就可以剔除、分析過程可能會遇到什麼違反邏輯現象,是不是要多建一套任務流用來做校驗,等等
這邊想到一個小故事,上次有一個PM想用powerBI做可視化看板,但是他不會寫SQL,對表的信息也沒去了解,直接幾十億條數據就這樣import,電腦永遠死機,然後說要加內存…..(不是這樣搞的好嗎)。
出現一個心得:對數據的敏感度,乃至分析過程的思考、解決方案思考,也是一個分析師的專業點差異。
2. 支持的開發環境?
這分析的頻率如何、一次性的嗎?半年一次嗎?如果頻率不高,那在本地分析出結果也就可以了。例如一個月度的簡單指標監測,那可以先做成定時任務,每月csv導入本地、執行R。
但也有項目是需要每日刷新。用RFM分群來舉例吧(因為這應該比較多人熟悉),RFM model對user分了N個等級,但用戶行為是會改變的,同一用戶可以隨著時間、隨著行為而丟入不同的等級,那必須丟到線上環境每天更新。
線上環境如果沒支持R/python,那還要找工程師配置開發環境、環境測試、分析包部署、腳本測試等等的環節。
那既然RFM model用SQL也能做出來(來雖然可能比較粗糙但也夠用),何必給自己找麻煩呢?
像目前公司就只有支持python,那我Python又沒這麼熟,我就會選擇SQL。最近就遇到SQL做起來太麻煩的case,只好用python來開發。
在本地寫python測試運行ok,但到開發環境就各種報錯,一下端口權限不足、一下py版本太低、一下數據量太大要寫循環插入,天天查這句報錯到底啥意思…
邀請你至Blog閱讀全文:
直接用SQL分析數據?怎麼沒用python/R?選擇資料分析工具的3個考量如果你喜歡我的文章,也邀請你訂閱『Rock Data』電子報,支持我持續創作
3. 什麼應用場景?
假設公司開發環境都搭的很ok,我們也會根據應用場景來考量實現方式
例如生意參謀,有個功能是讓賣家可以針對”用戶標籤”來圈選人群,並對這群人做行銷。
可以看看這兩個標籤,店舖N天有訪問
這種分析就用SQL寫、折扣敏感度
用R/python寫機器學習腳本,是綜合型的場景。
4. 結論
Leetcode這題是有點難度(因為用到開窗函數跟子查詢),但在真正工作時,比這詭異的查詢雖不能說比比皆是,但還是不少。
我以前觀念也是SQL不就是取數嗎?接觸了比較多的分析工作後,才體會SQL的重要性跟實用性有多大。
創業公司 CitusData的雲產品負責人 Craig Kerstiens 曾發表了一篇文章SQL: One of the Most Valuable Skills,裡面提到一句話
SQL是我所知道的最神奇的概念之一。它已經有近五十年的歷史,而且沒有被其他東西替代的迹象。我們已經創建了無數種科技來存儲和處理數據,但似乎總是嘗試在這些科技中重新實現SQL(例如Hive、Presto、KSQL)。
<插播小廣告> 因此我自己寫的hive內容跟作業,也一直在思考怎麼設計出滿常用到且比較複雜的例子,並且設計出通用的數據表,而且絕對不是幾百筆數據,怎麼說也要10萬級別起跳的數據量才有感。另外為了不是紙上談兵,也在開發一個可以真正操作的大數據平台。
註. 解答: HQL腳本
邀請你至Blog閱讀全文:
直接用SQL分析數據?怎麼沒用python/R?選擇資料分析工具的3個考量如果你喜歡我的文章,也邀請你訂閱『Rock Data』電子報,支持我持續創作
1. Hello All:主站遷移至👉https://andyrockdata.com/ ,請改至『ROCK DATA』Blog 閱讀新文章完整內容,如果喜歡我的文章,可以訂閱我的電子報(Medium站仍將張貼新文章訊息)2.立即追蹤👉ROCK DATA臉書粉絲頁跟ROCK DATA IG(@andyrockdata)3.【入門數據分析,掌握HiveSQL取數能力】在hahow上架啦,購買連結👉 http://hahow.in/cr/andyrockhive4. 半佛系鼓掌:原來只要滑鼠一直按著不放就可以一直鼓掌了。那請你按久一點:)有任何想法或感興趣的地方歡迎留言/討論,或者私訊我!5. 往期的數據相關文章可以參考以下link
- 數據分析系列1:談談數據分析的眾多Title
- 數據分析系列2:數據分析的一週工作日程
- 數據分析系列3:身為資料分析師,你該如何展現工作中的價值?
- 數據分析系列4:如何量化職場規劃?我這次的轉職規劃與Offer選擇
- 數據分析系列5:為什麼要關心資料來源?談談埋點數據的陷阱
- 數據分析系列6:精選幾個機器學習的學習資源
- 數據分析系列7:數位化決策轉型與企業文化的一些思考
- 數據分析系列8:中山大學經濟所職涯座談(ㄧ):”了解自己”的重要&我怎麼成為數據分析師
- 數據分析系列9:中山大學經濟所職涯座談(二):想從事資料分析?你需要具備這8個能力
- 數據分析系列10:中山大學經濟所職涯座談(三) :讓資料變商機 — 資料分析在我們生活中的應用
- 數據分析系列11:面試時,資料分析師該怎麼準備作品集?
- 數據分析系列12:2018年終工作總結(數據分析師)
- 數據分析系列13:數據化運營中玩過的分析項目:一個數據分析師的經驗總結
- 數據分析系列14:如何提升運營/產品的優化效率?或許數據指標體系的搭建可以幫到忙
- 數據分析系列15:用戶畫像很重要,那你知道是怎麼畫出來的嗎?
- 數據分析系列16:給剛入行的數據分析師:想產生價值,在試用期要做的三件事
- 數據分析系列17:2019 數據分析工作總結_關鍵詞:數倉構建、BI可視化看板、用戶畫像(標籤)與精準行銷
- 數據分析系列18:入門數據分析的第一個大門檻:SQL/Hive取數-聊聊自身學習SQL的經歷以及三個自學網站分享
- 數據分析系列19:身為數據分析師,我怎麼看hahow上”R語言和商業分析”這門課
- 數據分析系列20:直接用SQL來分析數據?怎麼沒用python/R?3個面向來考量分析工具的選擇
- 數據分析系列21:數據分析的”橫向”學習之路-珍藏的網上文章重新整理放上github
- 數據分析系列22:透過埋點,讓數據說話:埋點基本知識
- 數據分析系列23:以數據為核心的CRM進化產品:帶你了解CDP(客戶數據平台)開發過程與難點
- 數據分析系列24:SQL不難啊,為什麼不容易精通?自學與實務的4個落差
- 數據分析系列25:數據分析基本-相關分析與可視化(R語言)
- 數據分析系列26:刷完了Leetcode SQL Hard Level的28道題:歡迎領取參考答案
- 數據分析系列27:數據太髒了!3個步驟做好數據質量管理
- 數據分析系列28:跨部門溝通成本太高?數據人實現高效跨部門溝通的4個方式
- 數據分析系列29:數據分析師職場發展的另類出路
- 數據分析系列30:Databrick為何收購BI產品Redash?產品視角來看Redash的功能與價值
- 數據分析系列31:數據分析師要失業了?解讀<2022 Gartner BI魔力象限> BI產品趨勢
- 數據分析系列32:Google Data Catalog如何幫忙管理數據? 產品介紹與體驗心得
- 數據分析系列33:復盤:數據產品從0到1的建設過程,我的9點感觸
- 數據分析系列34:Shopline-數據分析中心(Shoplytics)產品體驗
- 數據分析系列35:搞數據還是做產品?淺談『數據產品經理』