如同軟體開發領域,Best Practices 雖是多數人所認同的大方向,但卻非適用所有情境,且隨時在進化,沒有永久適用的通則。
今天我想分享的是我從使用 dbt 以來,從官方的建議作法出發,加入在 Teamson 導入 dbt 的考量後,在我個人腦中所塑造出來,但卻尚未定型的 dbt 專案架構及命名原則。
相信大家在導入 dbt 時,也能發展出一套屬於自己的 Best Practices Guide。
_
分隔的 snake_case
google_analytics
就不要放 ga
,過多的縮寫會提高進入門檻,不利於團隊合作。seed_[xxxx]
我們目前只有開頭用 seed_
,暫無其他規範。tmsn_
的前綴,代表是由 teamson 自行開發的。如此一來在文件中能一眼就和 dbt 內建或由 packages 來的 macro 有所區隔。在 DAY 05 我們拆出了簡易的架構:source -> staging -> final output,現在要進一步介紹 dbt 建議的三層架構:staging -> intermediate -> marts。
stg_[source]__[table_name]
,使用雙底線區分資料源及 table 名稱。此處的 table name 我傾向對齊資料來源,因此如果原始 table 名稱是大寫,這裡我也會使用大寫,此為 snake_case 的一個例外。int_[entity]s_[verb]s.sql
fct_
/ dim_
或是 f_
/ d_
前綴,model 名稱盡量用低技術門檻的詞彙。今日談到的資料夾的拆分,除了方便檢索之外,也和明天的主題排程規劃,有一些關聯。
明天的主題:排程規劃以及 Tags
歡迎加入 dbt community
對 dbt 或 data 有興趣 👋?歡迎加入 dbt community 到 #local-taipei 找我們,也有實體 Meetup 請到 dbt Taipei Meetup 報名參加