iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0
自我挑戰組

搞不懂資料的我,把 Query 下滿就對了?系列 第 24

Day 24 資料分析旅程支線:Metabase 提問 進階篇 (下) 自訂欄位 (Functions)

  • 分享至 

  • xImage
  •  

明明週末出去玩之前有把文章寫好存草稿,卻忘了要找時間發佈 QQ
沒辦法了本來就是自我挑戰,還是會繼續把這個系列寫完囉~~

--

從 Day 15 到 Day 23 所教的提問,所運用的都是資料庫表格中既有的欄位。不管是直接呈現欄位資料,還是利用匯總來計算特定欄位的量值、處理分組。

但如果我希望呈現的資訊,是無法直接使用既有「欄位」資料的呢?例如:需要使用幾個既有欄位做計算,方能得出的值,或者是需要取一個既有欄位值,和一個固定值做計算出的值,並且需要被回填到表格中的新欄位以呈現提問的結果。

在 Metabase 中有兩不同的運算式 (Expressions),分別是:

  1. 總合、聚合 (Aggregations):
    多筆紀錄 / 列 (Records) 的值做計算。例如:計算多列某欄位值的平均值、計數、總和,於提問中,只能使用「匯總 (Summarize) 」功能操作。

  2. 函式 (Functions):
    拿每一個欄位內的值做運算。例如:拿不同欄位的值互相運算、或是在該欄位值中篩選出特定的內容、將有小數點的數值縮減到整數、將某一欄位的值乘上一個固定數字等。計算後,可以獲得一個新的值放在新的欄位中,用來呈現提問結果 或 做進一步篩選。可使用「自訂欄位 (Custom Column)」功能操作。

所以,當場景適用第二種運算方式時,自訂欄位 就派上用場了!

自訂欄位

顧名思義,就是讓你「自己訂定內容的欄位」。

一樣用 Sample Database 來舉例,我們一起來複習一下 Orders 表格內的欄位

Created_at (建立時間), ID (訂單編號), Product ID (商品編號), User ID (使用者編號)
Quantity (數量), Subtotal (小計), Tax (稅-外加), Discount (折扣) Total (總計收入)

注意到了嗎?在 Orders 內我們並沒有辦法從訂單資訊中,立即得知每個商品售出的單價。
有的人可能會想,那我把 Products 表格 JOIN 進來不就好了。但其實在每筆訂單中,因為有折扣的關係,實際售出的商品單價不一定是 Products 表格中所記錄的商品原價。

這時就可以來利用自訂欄位,以 (Total - Tax) / Quantity 的計算式,計算出實際的商品售出單價,並儲存在 Real Unit Price 欄位中。

https://ithelp.ithome.com.tw/upload/images/20221008/20151720pPzWg4WuNC.png

可視化後,清單會多出一個欄位,呈現結果如下

https://ithelp.ithome.com.tw/upload/images/20221008/20151720PlLtscuU8g.png

有辦法做這樣的計算,能夠應用的場景就更多了,例如:

  • 知道 Discount 金額是否可以利用,((Subtotal - Discount) / Subtotal) * 100 的方式來了解每筆訂單打折的 % 數
    https://ithelp.ithome.com.tw/upload/images/20221008/20151720tWqBzGU4Py.png

有更多場景可以舉一反三,有疑問都可以留言討論哦!


上一篇
Day 23 資料分析旅程支線:Metabase 提問 進階篇 (中) 多重關聯 (Multiple Join)
下一篇
Day 25 資料分析旅程支線:Metabase 提問結果 - 直接操作欄位 / 值
系列文
搞不懂資料的我,把 Query 下滿就對了?25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言