iT邦幫忙

2023 iThome 鐵人賽

DAY 4
2
AI & Data

dbt: 告別過時的SQL開發流程系列 第 4

DAY 04 - dbt Cloud 入門 (2) - 初始化專案、建立 Model

  • 分享至 

  • xImage
  •  

昨天,我們申請了 dbt Cloud 的帳號,並建立了專案。

dbt Cloud 的功能主要分為 Develop(開發) 和 Deploy(佈署)兩塊。
這幾天我們會從 Develop 的部份開始。先開發專案,才有東西可以佈署。


初始化專案 & GitHub initial commit、建立分支

由首頁點擊 Develop 就可以進入 Cloud IDE。
可以看到我們昨天剛建立的專案,因為是第一次開啟,左下角的 File Explorer 沒有任何檔案。
https://ithelp.ithome.com.tw/upload/images/20230803/20159575mO7pvDogfC.png

按下 Initialize dbt project 後,系統會自動產生預設的資料夾結構及檔案。
https://ithelp.ithome.com.tw/upload/images/20230803/20159575WkG91ik3ZJ.png

再來,執行第一次的 Commit and sync。
https://ithelp.ithome.com.tw/upload/images/20230917/201595757sMHJWVmQI.png

dbt Cloud 幫我們保護 main branch(主分支),即使在 GitHub 沒有設定成 protected,dbt Cloud 也不會讓我們直接 push 到 main branch。建議的開發/佈署流程是 push 到別的分支,透過 Pull Request,才能 merge 到 main branch。因此,我們需要另外建一個分支。

按下 Create branch,輸入新的分支名稱,例如 demo
https://ithelp.ithome.com.tw/upload/images/20230803/20159575twpb11qPBK.png

建立 Model: customers

File Explorer 中,最常用到的資料夾是 models,裡面的每個 .sql 檔案,在 dbt 的名稱叫做 model。

現在我們要來建立第一個 dbt model。
由 models 目錄,按右邊的三個點,或按右鍵,點選 Create File
https://ithelp.ithome.com.tw/upload/images/20230803/20159575nvNHEUbdKz.png

檔案名稱取 customers.sql
https://ithelp.ithome.com.tw/upload/images/20230803/2015957<5AVr272i59o.png

由左側 File Explorer 點一下該檔案開啟 IDE,將以下語法貼進去
原始來源:Quickstart for dbt Cloud and BigQuery - Build your first model

with customers as (

    select
        id as customer_id,
        first_name,
        last_name

    from `dbt-tutorial`.jaffle_shop.customers

),

orders as (

    select
        id as order_id,
        user_id as customer_id,
        order_date,
        status

    from `dbt-tutorial`.jaffle_shop.orders

),

customer_orders as (

    select
        customer_id,

        min(order_date) as first_order_date,
        max(order_date) as most_recent_order_date,
        count(order_id) as number_of_orders

    from orders

    group by 1

),

final as (

    select
        customers.customer_id,
        customers.first_name,
        customers.last_name,
        customer_orders.first_order_date,
        customer_orders.most_recent_order_date,
        coalesce(customer_orders.number_of_orders, 0) as number_of_orders

    from customers

    left join customer_orders using (customer_id)

)

select * from final

並按右上角的 Save 存檔。
https://ithelp.ithome.com.tw/upload/images/20230803/20159575SaScRPFuJk.png

如果按右下區塊的 Preview,可以預覽資料
https://ithelp.ithome.com.tw/upload/images/20230803/20159575YXnVvMv0YG.png

刪除 example models

models/example/ 這個資料夾底下的東西用不到了,可以刪除。

在資料夾按右鍵,或按旁邊的三個點,選擇 Delete
https://ithelp.ithome.com.tw/upload/images/20230803/20159575SC19m2xSyR.png

https://ithelp.ithome.com.tw/upload/images/20230803/20159575TJdA9dJYxd.png

更新 dbt_project.yml

dbt_project.yml 是這個 dbt 專案的主設定檔。

現在我們要來更新專案名稱。
初始專案時預設的名稱是 my_new_project。我們要來把名稱改為 jaffle_shop。

打開 dbt_project.yml,將

name: 'my_new_project'

更改為

name: 'jaffle_shop'

https://ithelp.ithome.com.tw/upload/images/20230803/20159575iCY6HoeQim.png

最下面的

models:
  my_new_project:

改成

models:
  jaffle_shop:

https://ithelp.ithome.com.tw/upload/images/20230803/201595757brkhP7UfF.png

小技巧:將 my_new_project 選起來,按 ctrl + F2,可以一次修改兩個地方。

最後,因為我們已經將 example models 刪除,所以設定檔對應的部份也需要刪除:

  example:
     materialized: view

改完之後如圖
https://ithelp.ithome.com.tw/upload/images/20230803/20159575VPt7ziSnK4.png


題外話:Jaffle Shop 是什麼?

我們所使用的 BigQuery 資料集 Jaffle Shop 是 dbt 官方的範例資料。

Jaffle Shop 是一間虛擬的商店,資料包含虛擬的銷售及顧客資料。
而另一個資料集 Stripe 則是虛擬的金流資料。

Jaffle 就是熱壓土司,大部分的台灣人應該都知道是什麼。
看似西方食物,但我認識的一些美國人卻沒聽過/吃過。查了一下發現源自澳洲。

我去 YouTube 搜尋 Jaffle,點了好幾個影片都不是美國腔。
好不容易點到一個美國人拍的影片,一開頭,其中一個人就問他的夥伴,你有聽過 Jaffle 嗎?
果然 Jaffle 不是一個美國人熟悉的食物。

今日小結&明日預告

昨天我們剛建立的專案裡面什麼都沒有。
經過今天的初始化之後,已經有了基本的結構、檔案、還有主設定檔。
再來我們也建了第一個 model,重新命名專案,刪除預設的 examples。

結束前,我們再次 Commit,提交今天的異動。
https://ithelp.ithome.com.tw/upload/images/20230917/201595757y3Uan90BH.png

明天的主題:Modularize Our dbt Models,將 dbt model 模組化。

參考資料


歡迎加入 dbt community
對 dbt 或 data 有興趣 👋?歡迎加入 dbt community 到 #local-taipei 找我們,也有實體 Meetup 請到 dbt Taipei Meetup 報名參加


上一篇
DAY 03 - dbt Cloud 入門 (1) - 申請帳號、建立專案
下一篇
DAY 05 - dbt Cloud 入門 (3) - Modularize Our dbt Models
系列文
dbt: 告別過時的SQL開發流程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言