技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
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
906 瀏覽
分享至
分析 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
組
累計文章數
19792
篇
完賽人數
529
人
看影片追技術
看更多
{{ 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
熱門問題
桌機三更半夜自動開機不知在幹啥?是在下載還是在上傳資料?嚇死寶寶.去查設定我沒有設定在三更半夜更新或是掃毒呀!去查紀錄亦沒有當日凌晨的瀏覽紀錄,這到底是怎麼一回事,要如何查詢?是被安裝了病毒軟體?
碩士學歷能幫助我突破職涯天花板嗎?
維護合約的合理性
如何讓Windows 11 Professional 開啟Synology DS925+網路芳鄰的速度加快?
librenms 25.4.0 重開機都要重新設定
Librenms ssl憑證檢查 通知方式-已解決
Exchange EMS掛掉導致Q信(2016)
如何找到電腦網路行為的觸發原因?
熱門回答
碩士學歷能幫助我突破職涯天花板嗎?
維護合約的合理性
桌機三更半夜自動開機不知在幹啥?是在下載還是在上傳資料?嚇死寶寶.去查設定我沒有設定在三更半夜更新或是掃毒呀!去查紀錄亦沒有當日凌晨的瀏覽紀錄,這到底是怎麼一回事,要如何查詢?是被安裝了病毒軟體?
librenms 25.4.0 重開機都要重新設定
Librenms ssl憑證檢查 通知方式-已解決
熱門文章
資安入門與實務應用介紹 29:智能合約漏洞與加密貨幣詐騙案例分析
資安入門與實務應用介紹 28:APT(高階持續性威脅)攻擊解析與防範方法
C++開啟資料夾及檔案的方法
打造你的第一個 MCP Server:從概念到實作
TrueNAS:從入門到入土心得錄01
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}