明明週末出去玩之前有把文章寫好存草稿,卻忘了要找時間發佈 QQ
沒辦法了本來就是自我挑戰,還是會繼續把這個系列寫完囉~~
--
從 Day 15 到 Day 23 所教的提問,所運用的都是資料庫表格中既有的欄位。不管是直接呈現欄位資料,還是利用匯總來計算特定欄位的量值、處理分組。
但如果我希望呈現的資訊,是無法直接使用既有「欄位」資料的呢?例如:需要使用幾個既有欄位做計算,方能得出的值,或者是需要取一個既有欄位值,和一個固定值做計算出的值,並且需要被回填到表格中的新欄位以呈現提問的結果。
在 Metabase 中有兩不同的運算式 (Expressions),分別是:
總合、聚合 (Aggregations):
拿 多筆紀錄 / 列 (Records) 的值做計算。例如:計算多列某欄位值的平均值、計數、總和,於提問中,只能使用「匯總 (Summarize) 」功能操作。
函式 (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 欄位中。
可視化後,清單會多出一個欄位,呈現結果如下
有辦法做這樣的計算,能夠應用的場景就更多了,例如:
((Subtotal - Discount) / Subtotal) * 100
的方式來了解每筆訂單打折的 % 數有更多場景可以舉一反三,有疑問都可以留言討論哦!