dbt 種子(seeds)

dbt 中級

Mike Metzger

Data Engineer

什麼是 dbt 種子?

  • 要載入資料倉儲的 CSV 檔
  • 通常是很少變動的資料集
    • 國家清單
    • 郵遞區號清單
  • 並非用於原始資料

種子

1 Photo by Maddi Bazzocco on Unsplash
dbt 中級

為什麼用?

  • 容易管理
  • 易於在多種情境使用
  • 可納入版本控制
dbt 中級

種子如何定義?

  • 將 CSV 檔加入 seeds 目錄
  • 確保標頭在第 1 列
  • dbt seed 指令匯入
zipcode,place,state
99553,Akutan,Alaska
99571,Cold Bay,Alaska
99583,False Pass,Alaska

bash> dbt seed
1 Postal codes provided via https://github.com/zauberware/postal-codes-json-xml-csv
dbt 中級

進一步設定

  • 多種設定選項
    • 使用哪個 schema?
    • 使用哪個資料庫?
    • 欄位名稱加引號
    • 欄位資料型別
  • 可套用至整個專案或個別種子
  • 可加入 dbt_project.ymlseeds/properties.yml
dbt 中級

定義資料型別

  • 可用的資料型別取決於資料倉儲
  • 常見型別皆可用
    • Integer
    • Varchar
    • 等等
  • 若未定義型別,會依資料自動推斷
version: 2

seeds:
  - name: zipcodes
    config:
      column_types:
        zipcode: varchar(5)
dbt 中級

測試

  • 支援測試
  • 和模型、來源相同
version: 2

seeds:
  - name: zipcodes
    config:
      column_types:
        zipcode: varchar(5)
    columns:
      - name: zipcode
        tests:
          - unique
dbt 中級

存取種子

  • 透過 {{ ref() }} 呼叫取得
  • 初次匯入後行為與模型相同
select * from
  {{ ref('zipcodes') }}
dbt 中級

一起來練習吧!

dbt 中級

Preparing Video For Download...