技術文章
技術問答
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
2023 iThome 鐵人賽
DAY
5
1
AI & Data
從 Airflow 走到 dbt 的 30 天
系列 第
5
篇
Day 5: How dbt models actually works?
15th鐵人賽
chorsengs
團隊
dbt 和 dbt 以外有趣的事
2023-09-20 23:28:13
1159 瀏覽
分享至
分析 dbt model 的核心價值
承接上文,從上圖可以發現:dbt 的本質:
架構模組化:透過大量的 view (stage、intermediate),來將 transform 階段做階層化的整理;
成本最小化:最後一個階段才將表格的內容實體化(materialized as table)
透過視覺化的整理,analytic engineers 自然可以清楚察資料在其中變化的脈絡,並在調整 / 新增 pipeline 的過程中更加得心應手。
各個階段詳細說明
讓我們進一步展開昨天的幾個階段,來詳細說明運作的過程,以及背後的機制。
source(view):
定義:資料來源,完全不做運算處理,只做 .yml 的設定處理建立 view,讓 stage 階段能順利吃到資料。
機制:在稍後我們建立 test 的時候,將 source 與 stage 階段區分開來是重要的 —— 究竟是對方傳輸資料過來的時候,就不符合規範?還是 stage 進行的 data pre-processing 時發生了錯誤 —— 換句話說,只要這兩件事對 Data Engineers 而言,需要被區分成不同的階段來進行對策思考,那麼為了降低認知負荷,我們就有將這兩階段做差異區分的價值。
stage(view):
定義:資料來源,通常會做基礎的 1 對 1 運算處理
機制:在 staging 階段,我們可以清晰的看到外部的資料是如何進入 lakehouse 的;以均一為例,我們的資料大致來自 GA4 Analytics / Backend batching / Static Data / Gov Data 這四種 source,因此也會在 stage 的階段,對不同的資料進行處理。例如,從後端傳入的資料,可能需要做許多 null 值、異常大的值等等,將後端特殊化的處理還原的手法;爬蟲政府官網的資料,也需要做一定的字元清理。
intermediate(view):
定義:做複雜的 join / aggregation / analytic functions
機制:在 intermediate 階段,我們通常會用 plain English 來作為資料的名稱,例如:int_class_id_decoded_from_studentlist_keys / int_class_info_joined_by_class_id,其實跟我們之前在談 CTE 的 naming conventions 規則如出一轍——如何讓人一目了然,就如何處理。在這個階段,我們則會進一步進行複雜的運算。以 decode 為例,我們將 BigQuery 中的 safety-code-64 透過 sql 還原成 datastore-id(背後是用了 macro 的機制,之後介紹),這樣才有辦法後續用這個 id 來執行 join table 的大表事前處理。
留言
追蹤
檢舉
上一篇
Day 4: LEGO, a metaphor of views managed by dbt
下一篇
Day 6: How dbt models actually works? (2/2)
系列文
從 Airflow 走到 dbt 的 30 天
共
9
篇
目錄
RSS系列文
訂閱系列文
8
人訂閱
5
Day 5: How dbt models actually works?
6
Day 6: How dbt models actually works? (2/2)
7
Day 7: Very Unique MODEL, Semantic Layer
8
Day 8: Very Unique MODEL, Semantic Layer (2/n)
9
Day 9: 一些碎碎念的插播
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19837
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
Seeed XIAO ESP32-S3 透過 UART (921600) 無法發送 AT 指令到 Grove Vision AI V2 (Himax WE2)
Windows XP作業系統,程式存取SQL SERVER 2025失敗
webview cab 封包檔
SAP B1 如何將"自定義表格"匯出並且匯入到另一個資料庫
熱門回答
Windows XP作業系統,程式存取SQL SERVER 2025失敗
SAP B1 如何將"自定義表格"匯出並且匯入到另一個資料庫
熱門文章
大家都怕依賴 AI,但真正天天用 AI 的人似乎沒那麼怕
我不信任 AI 的自律,所以把「限制」寫死在資料庫裡
AI Agent 時代的企業風險:當洩漏的不再只是資料
AI Agent 時代的下一個問題:當第 101 次決策出錯時,誰來負責?
AI 時代的新能力:定義問題,而不是尋找答案
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}