You are currently viewing [數據分析#1] Google Sheet Query 教學

[數據分析#1] Google Sheet Query 教學

從 Excel 的時代學會用公式處理 Raw data 後,還不知道 google sheet 有多神,自從學會用 google sheet Query 之後,一個公式就可以做完資料處理.完全不用再用有格式限制的 pivot 或是一格一格寫 sumifs, countifs 這種多條件下的數學計算,Query 學會之後,資料處理的速度可以加速非常多,本篇有附上測試資料在 google sheet 上,歡迎大家取用,一起來看看 Google sheet Query 教學吧!

Google sheet Query 重點整理

  • Google sheet Query:選取資料範圍,學會 Select(選取欄位), Where(篩選), group by(聚合), order by(排序)
  • 知道什麼情境下 pivot table 不好用

Google sheet Query 實際操作

假設我有一份資料,裡面包含 LionDelivery 這家公司,一月到三月在台灣各城市所有外送員上線的時數、完成的訂單數、所花的時間跟訂單評分,LionDelivery – Operation RAW Data,之後的公式學習可以用這份原始資料做練習。

Google sheet query 的公式組成

Query 由兩段指令組合,第一段指令可以指定要分析的資料範圍,第二段指令可以指定要選取哪些欄位來做資料分析。第二段指令又分為:Select(選取欄位), Where(篩選), group by(聚合), order by(排序),跟 SQL 的用法很相似!接著我們立刻來實作一下。

Google sheet query 公式細節&實作

  1. 如何快速統計一月各城市的營運指標 (外送員上線的時數、完成的訂單數、所花的時間跟訂單評分) 請打開範例一
=QUERY('RAW Data'!A:P,
"select B, C, K, sum(L), sum(M), sum(N),avg(O),avg(P) 
where K= date '" &TEXT("2020-01-01","yyyy-mm-dd")&
"' group by B, C, K order by sum(M) desc")
 

Google sheet query 指令一

  • ‘RAW Data’!A:P:第一段指令要指定準備分析的資料範圍,也就是 RAW Data 中的 A 到 P 欄
  • Tips: 這邊如果你想要引用其他張 google sheet 的 table,可以使用 importrange 來引用

Google sheet query 指令二

  • 第二段指令就是比較複雜的資料分群統計,我們分成幾個部分講解

Google sheet query: Select

  • Select (選取欄位):select B, C, K, sum(L), sum(M), sum(N),avg(O),avg(P),請把原始資料中要聚合的類別選取出來,今天我們要統計「台灣」、「各城市」、「一月」的敘述統計指標,也就是 RAW Data 中 B, C, K 欄
  • 接著我們要做「敘述性統計」加總外送員上線的時數、加總訂單數、加總完成的訂單數、平均訂單評分、平均一單的外送時間,也就是 sum(L), sum(M), sum(N), avg(O), avg(P) 這些欄位

Google sheet query: Where

  • Where(篩選):RAW Data 現在包含一到三月的數字,如果要縮限範圍只要分析一月的話,可以在 where 篩選日期,where K = date ‘”&TEXT(“2020-01-01″,”yyyy-mm-dd”)&”‘,需要代換的地方就是日期的部分
  • 大家也可以篩選城市或是其他月份的時間玩玩看,如果要篩選城市可以用 where C = ‘Taipei’,字串用 ‘ ‘ 包起來

#引用數值

  • 引用數值是最簡單的,不用考慮引號,直接 E = 引用數值就可以
--引用數值
=query('RAW Data'!A:P,"select A,E Where E <= 20")
--引用儲存格裡的數值
=query('RAW Data'!A:P,"select A,E Where E <=" &D12)
 

#引用文字

  • 使用單引號前後包住文字:C = ‘文字’ 
--引用文字
=QUERY('RAW Data'!A:P,"select C,sum(L) where C='Taipei' or C='Taichung' group by C") 
--引用儲存格裡的文字
=QUERY('RAW Data'!A:P,"select C,sum(L) where C='" & X11 &"' group by C")
 

#引用日期

  • Where 中要篩選日期有兩種方法,第一種是轉成數值 (推薦這個方法,因為很簡單),第二種方法是轉成日期格式
    • 第一種:直接 Q <= 43862 (日期本來就可以自動轉成數值),請在格式中選擇
    • 第二種:date’2020-01-01′ 或是 TEXT(N12,”yyyy-mm-dd”)
--將日期轉成數值
=query('RAW Data'!A:Q,"select A,Q Where Q <= 43862")
=query('RAW Data'!A:Q,"select A,Q Where Q <=" &J12)
--將日期轉成日期格式
=QUERY('RAW Data'!A:P,"select A,E where K= date'2020-01-01'")
=QUERY('RAW Data'!A:P,"select A,E where K= date'" & TEXT(N12,"yyyy-mm-dd") & "'") 
 

#用 Where 篩選多條件分享

再 SQL 語法裡有一種 in ( ),裡面可以快速寫入很多個條件,例如說台灣所有的城市,我們會用 in (‘Taipei’, ‘Taichung’…..),那在 google sheet query 裡有三種方法可以做多條件篩選,給大家參考

  1. 如果有好幾個條件想要同時篩選,可以用 OR 或是 AND 組起來
  2. 用 MATCHES ‘(條件1|條件2|條件3)’,這個方法類似 in ( )
  3. 用 TEXTJOIN 小工具,把 or 和所有條件快速組起來

#用 Where 篩選多條件 – or/and

第一種方法:如果有好幾個條件想要同時篩選,可以用 or 或是 and 組起來:

=QUERY('RAW Data'!A:P,"select C,sum(L) 
where C='Taipei' or C='Taichung' group by C") 
 
  • 如果想要 Taipei 或是 Taichung 的資料,就用 or 連接
    • 用 or 把所有條件組起來,如果文字要用單引號包起來
=QUERY('RAW Data'!A:P,"select C,sum(L) 
where C='Taipei' and D='M' and E=50 group by C")
 
  • 如果想要同時符合三個條件,例如說 Taipei 同時又是男性 (M),而且年齡 50 歲,那就用 and 連接,寫法和 or 類似

#用 Where 篩選多條件 – MATCHES ‘(條件1|條件2|條件3)’

第二種方法:如果你同時想篩選好多條件,例如說你想要台北、台中、高雄,或是更多城市的資料,但你不想要一個一個用 or 寫,那你可以試試看用 matches 來生成自動化的條件組合

--MATCHES '(條件1|條件2|條件3)'
--原來的樣子
=QUERY('RAW Data'!A:P,"select C,sum(L) 
where C matches'(Taipei|Taichung)'group by C")
--以 matches 做變化:有點難!建議大家到示範裡觀看
=query('RAW Data'!A:Q,"select A, E where " &  "E matches'(" &textjoin("|",1,AH12:AH) &")'")
 
  • MATCHES ‘(條件1|條件2|條件3)’
    • 條件不論文字不需要包單引號,中間用 | 隔開

#用 Where 篩選多條件 – TEXTJOIN​

第三種方法:假如你有 100 個人名要篩選,那你應該不會想要慢慢組條件,這時候 Textjoin 小道具就可以幫我們自動生成 or 小組

--textjoin("' or C='", 1, 多條件)
--原來的樣子
=query('RAW Data'!A:Q,"select C,sum(L) where C='Taipei' or C='Taichung' or C='Taoyuang' group by C")
--以 textjoin 做變化
=query('RAW Data'!A:Q,"select C, sum(L) where " & "C='" & textjoin("' or C='",1,AA12:AA) &"'" & "group by C")
 
  • Textjoin 可以將你設定的所有條件組成一連串的 or
    • 第一步:先把所有條件列在 google sheet 裡面其中一行,範例中列在 AA12:AA
    • 第二步自動生成很多 or + 條件連在一起:=”C='” & textjoin(“‘ or C='”,1,AA12:AA) &”‘”
    • 如果想看這些函數如何組合,可以參考 Google Sheet 教學,或是 影片 教學,這裡有詳細說明每一步是如何生成的

# 模糊比對 like ‘%A%’

如果你想進行模糊比對,例如說文字只要包含 Taipei 就可以,那可以用 where 欄位 like ‘%Taipei%’ 來進行模糊比對搜尋結果

=QUERY('RAW Data'!A:P,
"select A,C 
where C like '%Taipei%'") 

Google sheet query: Group by

  • Group by(聚合):group by B, C, K,如果在選取欄位時有做「敘述性統計」加總、平均這類的運算,就要把一開始分群的類別用 group by 做聚合

Google sheet query: Order by

  • Order by(排序):order by sum(M) desc,資料按照你想要的欄位做排序,再指定要升冪或是降冪,範例中我用訂單數做降冪排列,可以看到台北訂單最多,台中墊底

Google sheet Query 練習與使用場景

為什麼專業分析師不喜歡用 pivot table?

範例一跟練習一比較類似,這些屬於 pivot table 就可以處理的。不過很多時候,資料處理是一層一層的,RAW Data 初步作成我們想要的分群之後,我們會再把這份 Data 加工做成 dashboard 或是表格,所以像是練習二中,pivot table 就不會是我們想要的資料形式,他太多空格了,以至於不能再去做下一層的資料聚合。

pivot table 不好用

樞紐分析表太多空格,不能做下一層的資料處理

google sheet query demo

這種資料格式可以畫圖、匯入 Data Base、做下一層資料聚合

Google sheet Query Challenge

  • 練習一:試著分析每個月份各城市不同外送方式的人數及成效,這個練習跟範例一比較類似,試著練習看看 Query
  • 練習二:試著對一月有跑該平台的外送員做分群,再做成效分析,這個就是平時我們在做資料處理的時候很常用的「資料分群」,把特性相似的一群使用者聚合在一起後再做更深度的分析。這個練習中,我把外送員依照這些特性:「城市」、「年齡」、「種族」、「外送方式」做統計,通常數字出來之後,會再依據分析目的:下招募廣告時,應該以哪些使用者輪廓為目標?去寫結論或是再繼續深挖資料。

總結

這邊總結了 Google Sheet Query 最重要的用法跟細節,如果你想要更全面的了解,可以到這篇文章:Google Sheet Query 9 大函數語法 (9 useful google sheet query functions)

如何練習 Google Sheet Query 函數?

  1. 複製一份我的範例出來
  2. 練習所有的函數跟 2 道練習題

更多學習資源推薦

如何使用這個網站?我的數據分析文章導覽!裡面也會分享更多實用 Google Sheet 教學:本站數據分析文章導覽 及 更多 Google Sheet 實用文章教學

【1 對 1 免費諮詢】數據分析師 0~1 培訓班陪你一路到轉職成功!

hi 我是 Lisa

你也是 0 經驗、沒有相關背景,但也想要轉職數據分析師,或運用數據分析,提升在領域的專業度嗎?

-

你是否也覺得,數據分析的網路學習資源很多,但是多到不知道從哪裡開始?

學了很多工具,但學完了,問題才真正開始,不知道業界怎麼使用?又該如何面臨工作跟面試?

-

我在 2019 年從營運專員的職位轉職到數據分析師

在這之後,因為數據分析,也讓我快速建構不同領域的知識:行銷、營運、商業策略、產品、網頁

轉職過程中,花了很多時間成本摸索

我發現,學數據分析最快的方式是:

  1. 確認自己跟市場需求之間的差距:訂定轉職策略及了解數據分析師的工作方式
  2. 以業界應用的角度學習工具:包括數據工具及分析用思維架構,並且如何高效運用
  3. 建立一個商業上的真實專案,並且得到回饋:打造屬於你及貼合職缺需求的作品集和專案
  4. 打造一個高效履歷跟面談:透過高價值包裝術拿下面試、成功獲得數據行業的門票

當初如果我有這套系統思維,應該可以在短時間內轉職,馬上拿到進入業界的門票

-

現在,我想把這套完整課程分享給你

這是專門為了 0 經驗、沒有相關背景的轉職者所設計

不需要去考研究所、不需要花大錢準備出國讀書

可以用最快的時間準備轉職、拿到門票!

-

如果你正在準備轉職數據分析師,且試圖找過解決辦法卻始終治標不治本!歡迎跟我預約免費 1 對 1 諮詢,我會在諮詢時,了解你的需求並且評估我是否可以協助到你!

電子書 職場人必學的數據分析術

Lisa Wu

Hi 大家好!我是喜歡探索身心靈健康及平衡的數據分析師 Lisa Wu!這個網站會幫助你:利用數據分析 (理性) 及 身心靈平衡 (感性) 的系統,去達成人生目標!如果你對我的人生系統工具有興趣,歡迎聯繫我:couplehonest@gmail.com