【均一】BigQuery to Metabase 教學

Young Tsai
Young
Published in
8 min readNov 30, 2018

均一的內部資料教學,給初學者的入門書

Why to use data?

當你確認你的問題只能靠資料解決,不確定的話,先找 DS 聊聊你的需求,不要一次就把規格想清楚,最後發現有更快的方式,那就浪費時間了

How to use data?

這要看你需要什麼?可能先辨別以下的部分,你要的資料是?

  • 頻率:一次性、常用型
  • 格式:表格、圖像
  • 用途:KPI型、特徵

如果你的資料是一次性的,就找人做成表格存成excel 吧,但如果是常用的,請找出可擴充的方式:metabase、ipython、bigquery 都有機會,接下來就是學習囉

當然以上所說的學習,一開始你可能連最基本的 SQL 都無法達成,因此我們初步的學習在於利用最簡單的語法,找出你要的資料

What is data?

相信網路上有很多可以查,請自己查詢,但如果要一個粗淺的定義:就是一個定性或定量的原始事實依據

這邊我們要提供的是一個簡單的觀念,從我們最熟悉的 Excel 開始,假設你有一張表格如下:

你有 user_id、user 的縣市(user_city)、使用日期(date)、使用時間(time_taken),且可能有幾千幾萬筆資訊,可以讓你做圖表等等,那前置作業呢?這就像我們點了一碗麵,麵裡面素材是從哪來的?你需不需要知道?你不用知道,你只要點餐吃飽付錢就對了,但是如果你今天是一個對自己的健康相當注重的人,或是不想要付錢買難吃的東西,或是擔心過年沒有店家開店時,每道菜都希望能夠自己煮才安心,那你就需要知道怎麼買材料跟料理了,所以你所在的公司、機構有沒有一個可以幫你料理備料的人(單位),跟你想不想從頭到尾學一套招式以便不時之需有關

好!再回到這張素材,看得出來這是經過整理後的表格,我們不可能在資料庫裡面存一大堆客製化、用過即丟、不具備擴充性的資料,我們存的都是原始資料,隨時可以拿來再加工的部分,像上面的資料,在原始資料庫可能分成兩個部分:

UserData 跟 使用者 log 表

我們可以看到這樣的原始資料可以減少很多 repeat 資料的生成,因為一個使用者登記的縣市就只會有一個,但是使用紀錄卻會有很多筆,因此找出比較複雜的 log 表,再用 user_id 對應 User Data 將縣市抓進來,這就是比較簡單的 table join(left join) 概念,或是你可能比較熟悉的 Excel Vlookup,因此我們如果要學會從頭到尾料理出一道簡單的 table,那我們就必須先學備料的方法之一: SQL

What is SQL?

根據 google 搜尋 SQL 第一筆

SQL 是用來做什麼的呢?一個最常用的方式是將資料從資料庫中的表格內選出

對!我們要備料,最直接的方法就是從菜市場(資料庫)直接找,而這個菜市場的溝通語言就是 SQL

最常用的有

SELECT “欄位名”

FROM “表格名”

WHERE “條件”

而均一常用的表格在 BigQuery裡面的 IntegratedTable (BigQuery 用法後面會講到),當我們要找初我們資料庫「已經註冊」且縣市為「宜蘭」的用戶 id 就可以這樣寫:

Why to use BigQuery?

由於我們的資料已經超過 PB 等級,任何一份 spreadsheet 都很難存取開啟,且難以在本地端計算,因此我們早期就採用雲端計算 BigQuery,至於為什麼選他,不選其他廠商,是因為我們平台架在GCP,為了串連方便,我們沿用 Google 的 BigQuery ,所有的儲存、計算都會在上面處理,完成後再回傳到我們的介面上

What is in BigQuery?

我們的每週資料庫備份、GA資料、星空探險隊、研習活動、縣市政府資料、平台串流等等,都存在 BQ,其中資料庫備份是最大宗,任何平台上的記錄幾乎都在裡面,但這麼多的資料,沒有長期在裡面打滾的人,肯定無法在短短的幾小時內通曉,因此!我們建議初學者,直接看 IntegratedTable 裡面的資料就好,這是各方資料的集合,同時已經進行過清理驗證,上面的種種,你都可以略過,唯獨這一個字你要記得:

IntegratedTable

How to use BigQuery?

請先開通帳號,在此之前,你不要往下看

那我們怎麼用呢?

進入bigquery:https://bigquery.cloud.google.com/welcome/junyiacademy?pli=1

點擊左上方紅色按鈕

你會看到這一個框框

還記得上面這一段示範 code 嗎?

把他複製起來,貼上後,執行 RUM QUERY (另一個紅色按鈕),完成後會看到如下畫面

然後呢?資料勒?我想要下載啊,怎麼辦?有三個方法:

方法1.

你可以看到右方有一格「Save to Google sheets」,他會幫你跑出以下畫面,你在點擊一下 click to view 就能開啟 google sheet,接下來就是你的事情了

方法2.

點擊 [ Download as CSV ] or [ Download as JSON ],看你喜歡哪一個,他會下載到本地端

方法3.

恕我無法告訴你,這一招堪稱資料界的七傷拳,你傷己就算了,我怕你傷到其他人啊,等你長大了,我再告訴你好嗎?

What is Metabase?

BigQuery 如果是讓我們備菜、存菜、找菜的地方,那 Metabase 就是一個可以找菜同時煮一些簡單的伙食的地方,同時可以用圖形操作介面或是上面所說的 SQL 進行操作並得到答案,初始呈現是表格,但你可以轉成視覺化圖表,而不需要任何程式,只需要操作設定格式即可

單張的呈現方式

另外,任何完成的結果都可以進行單張儲存,也可以跟其他結果並排呈現,做成儀表板的格式,比較典型的如:均一公開數據連結

儀表板

How to use Metabase?

網址連結,請使用均一帳號點擊 google 登入,基本上一開始只有觀看權限,要有下指令的權限,請找軟體組開通帳號,

流程範例如下:

0. 先有一個問題:我想知道107學年暑假的 mission 每天有多少?

  1. 點擊右上角「創建圖表」

2. 選擇中間的自定義

3. 選擇 Integrated Table

4. 選擇 Info_Mission(也就是 SQL 的 FROM)

5. 選擇分類根據(也就是 SQL 的 WHERE)內的 create time

6. 選擇 介於 7/1 ~ 8/31 之間的日期,點擊確定

7. 點擊查看內的「不重複的總數」 → 選擇 mission (SQL 的 SELECT)

8. 選擇「整合根據」,選擇 create time,也就是你想要「逐日觀察」的部分(SQL 的 GROUP)

9. 點擊「得到答案」

10. show answer,你會看到每天的用量

11. 視覺化,點擊答案左上的「表格」,選擇線段

12. 馬上得到圖表()

13. 有注意到嗎?圖的下方還可以換成 by week, year 等等,我們換成 week 就可以馬上變成 weekly count 的數據,是不是很方便!

14. 最後可以點擊右上角的「保存」,並選擇命名及你要存的地方(如果不知道要存哪,可以先存在自己的個人集合)

--

--