iT邦幫忙

2023 iThome 鐵人賽

DAY 12
1

dbt package 是什麼?

  • dbt package 如同寫 python 可以匯入開源套件,幫助你節省自己寫 dbt 語法的時間,package 除了上篇介紹的 test query 功能,還有
    1.從結構一致的來源轉換資料
    2.編寫 audit query
    3.與特定工具結合撰寫 models, macros
  • 架構
    dbt package 其實是一個獨立的 dbt project,但你可以把這個 dbt project 加入你的 project,像是自己的 project 一樣使用它
  • 安裝步驟
    1.加入 package 資訊到 packages.yml
packages:
  - package: dbt-labs/snowplow
    version: 0.7.0

  - git: "https://github.com/dbt-labs/dbt-utils.git"
    revision: 0.9.2

  - local: /opt/dbt/redshift
  1. command 輸入 dbt deps 安裝上述的 packages,這些 package 會安裝在 dbt_package 的資料夾下

官方推薦的 package: dbt-utils

  • dbt-utils
    • 基本功能
      dbt-utils 主要提供很多 generic test 的測試項目,當 dbt 基礎的4個測試項目不夠用會優先來 dbt-utils 找有沒有符合的
    • 常用的 dbt-utils test 項目
      • at_least_one (source):常用在檢查全量更新的 table 源頭,因為若有天資料源沒資料全量更新後,下游表都會沒資料
      • accepted_range (source):若你的資料欄位有一定的範圍,他可以抓超出範圍的異常資料
      • equality (source):常用在比對兩個 model 資料是否完全一樣,可以用在 refactor 或資料庫轉移時使用,當確認兩邊筆數一樣,這個檢查可以幫你揪出資料內容的差異,但你的資料量大時要注意這個 test query 量
      • unique_combination_of_columns (source): dbt 內建的 unique test 只能測單一欄位,若你的 table 是多欄位組成的 unique 方式就可以用來測是否有重複值
      • recency (source): recency 會檢查資料有沒有在設定時間後更新,基本上是大家都會用到的 test,但要注意的是他的檢查時間型態是 timestamp,若你的時間欄位型態是 datetime 就會有轉換時區問題
    之後會介紹另一個我們正在使用的 dbt 套件 elementary

上一篇
data quality 系列 - dbt test 原理、使用方式
下一篇
data quality 系列 - 怎麼儲存和查詢 dbt test 結果?
系列文
如何借助 dbt 優化當代資料倉儲及資料工程師的水肥之路分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言