iT邦幫忙

2023 iThome 鐵人賽

DAY 10
1

因為從事 IT 工作的關係,我也讀了一些專門教 SQL 的網站、書籍。比方說,Joe Celko 的書、Markus Winand 的 modern-sql.com 等。這兩位 SQL 專家不約而同地有講一件產業觀察,讓我有點驚訝。他們一致表示,其實 IT 業界的平均 SQL 能力很差,差到嚇死人。

是否真的是如此?由於我收集的樣本數有限,先不做評論。但是,從一些學界、業界的環境因素來看,似乎真的有可能如此。

  1. 學校在教資訊工程時,比較偏重理論。
  2. 學校相對教導實務,比較紮實的課程,是在命令式編程
  3. 有學好命令式編程的人,要來學 SQL ,往往需要重新學一遍,因為 SQL 是宣告式編程,在頭腦內部對應的心智表徵也截然不同。
  4. 業界的許多應該要用 SQL 來做的工作,都有可以用命令式編程來取代的次佳方案。比方說,應用軟體開發時,可以利用 ORM (object relationship mapping) 來自動生成 SQL 。(所以就更有理由,不去學好 SQL)

總之,能徒手寫好 SQL 的人,算是相對少數。正因如此,只是略懂 SQL 的人,如果可以利用 Metabase 的進階操作來生成 SQL ,那自然就可以快速地跳過這一大段 SQL 的進入門檻。

查詢建立器 (query builder)

參考下圖,點選紅圈的位置,就會進入查詢建立器 (query builder)
editor.png

進入後,可以看到如下的畫面。如果再點選紅圈的位置一次,就可以看到純文字形式的 SQL 。(純文字形式的 SQL 編輯已超過本文的範疇,本文只專注於討論用 GUI 來生成 SQL。)
view_the_sql.png

在查詢建立器的主畫面一樣有之前介紹過的篩選 (filter)概括 (summarize) 功能。接下來,我們會基於查詢建立器的主畫面,一一來探討其它四個常用功能,以及一個很容易忽略的欄位選擇功能。

  • Join data
  • Custom column
  • Sort
  • Row limit
  • Column select

連結資料表 (Join data)

參考下圖, Order table 與 Customer table 的資料,顯然可以透過 Name 的欄 (column) 加以連結。在試算表軟體 (spreadsheet) 如果要連結這兩張表的話,應用的函數是 vlookup 。而在 Metabase 的話,因為資料倉儲裡可以運作的語言是 SQL ,我們要使用的 SQL 語法就是 join。不精確地來講,試算表軟體的 vlookup 就相當於 SQL 的 join 。

vlookup.png

為什麼說這是不精確呢?因為其實 join 的表達能力 (expressiveness) 比 vlookup 強多了。參考下圖,如果我們點選紅圈處,就可以更改 join 的種類。

join_type.png

客制化欄位 (Custom column)

客製化欄位基本上可以想象是使用試算表軟體的公式 (formula),只是說,SQL 支援的公式寫法與試算表軟體又略有差異。

排序(Sort)

當查詢資料時,我們有時候會希望傳回的資料根據某一欄位,或是某兩、三個欄位,進行遞增或是遞減排序,這時就可以應用排序的功能。

傳回列數上限 (Row limit)

當查詢資料時,如果要操作的資料表比較大的時候,速度就有可能很慢,造成使用者的等待。然而,很多時候,我們只是要大略了解資料的長相而己。這時候,傳回列數上限的功能就非常有用,比方說,我們設定它為 10 筆、或是 100 筆,本來要跑 10 秒才會完成的操作有可能變成瞬間完成。

欄位選擇功能 (Column select)

如果我們有一些 join 操作時,很容易就可以生成一張很寬的表,裡頭有很多的欄位 (column)。但是,實際上,我們可能只對其中的少數欄位有興趣而已。這時可以利用『欄位選擇功能』讓我們生成的表變窄,使資料更容易閱讀。在下圖中,點選紅圈的位置,就可以開啟『欄位選擇功能』。

select_column.png

結論:SQL-92 的圖形化介面

如果能巧妙地應用 Metabase 的查詢建立器,SQL-92 的語法幾乎都可以順利生成出來,離我們利用資料創造價值又更近一步了。


其它資源

  1. 對 dbt 或 data 有興趣 👋?歡迎加入 dbt community 到 #local-taipei 找我們,也有實體 Meetup 請到 dbt Taipei Meetup 報名參加
  2. 歡迎訂閱 PruningSuccess 電子報,主要談論軟體開發、資料處理、資料分析等議題。

上一篇
View layer: Metabase - 基本操作
下一篇
View layer: Metabase - 圖表/視覺化
系列文
當代資料工程與資料分析30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言