iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0

雖然之前看到部份的資料分析職位只需要對 excel 很熟悉即可,但我覺得對於資料庫拉取資料的這個層面 SQL 是蠻必要的 ~

我比較常使用的做法是在 jupyter notebbok 中寫 SQL 使用套件將資料拉出進行進一步分析,也有看過有人純用 SQL 進行分析,整個 SQL 變得蠻長而且也蠻複雜的,但很佩服。我比較喜歡邊寫邊看結果的方式。

接下來談談我之前碰到的痛吧

  1. 在需要拉取較長時間區間的查詢中,沒有加 WITH (NOLOCK) 導致資料庫卡住
    (就我所知,WITH (NOLOCK) 好像是只存在 SQL Server 的東西,如果不對的話再麻煩指正 ~
    -> 後續都認真的在每個資料表後加上 WITH (NOLOCK)
    SELECT TOP 10 *
    FROM table_name WITH (NOLOCK)
    
  2. 讀前人的 sub-query,sub-query 真的是很複雜的東西啊 ~
    而且它還無所不在,在 SELECT 中、在 WHERE 中、在 JOIN 中,如果是像那種少少幾行的 sub-query 在解讀上倒還好,如果長長一段就好難看清楚了 (需要調整時要先跑去洗臉提振精神
    -> 我大推 CTE,將要拆的東西一層層拆開放在 CTE 中,分區塊獨立解讀上較不容易迷失了
    WITH table1 AS (
        SELECT ... FROM ...),
        table2 AS (
        SELECT ... FROM table1)
    SELECT ... FROM table2
    
    這裡的 table1 就可以是獨立區塊1,table2 是獨立區塊2,在最後的 SELECT statement 再使用需要用的 table。

現在還是有時有點痛的點

  1. 不同資料庫有不同的 SQL dialect (SQL方言),比如有些資料庫可以用 TOP 來看少量資料感覺一下,但有些資料庫是只能用 LIMIT。
  2. 其實是延續第1點,但想特別說說日期處理的部份,不同方言的日期處理也是一個讓人要特別留意的部份啊 ~

參考 :


上一篇
資料分析師在做什麼?
系列文
五年前 IT 路人轉職資料分析,前進資料科學之路5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言