iT邦幫忙

2023 iThome 鐵人賽

DAY 7
1
AI & Data

實用Modern Data Stack:資料架構案例分析與分享系列 第 7

用dbt建構Data Vault 2.0:6 快速設定指南 Part 1

  • 分享至 

  • xImage
  •  

前言

終於要到實際操作的部分了!這裡會用上一篇文章介紹的dbt-data-vault-template的模板package和裡面AutomateDV的實際案例。由於內容上會比較長,會按照設定與資料層分類分成幾篇文章。
https://ithelp.ithome.com.tw/upload/images/20230922/20161946Ah1MCh1mNO.png

這個是模板裡附帶的資料模型,基本上是簡化的Salesforce客戶源資料模型。

package設定和初始化

入門建立專案等我這裡就不介紹了,有需要的話可以參考這篇文章。這次使用的dbt模板專案是git@github.com:infinitelambda/dbt-data-vault-template.git

設定檔

在跑各項初始化指令之前,可以先參考一下package的幾個在根目錄裡的重點設定檔。由於檔案比較長,這邊就只解釋跟 AutomateDV有關、非dbt預設的設定:

dbt_project.yml

vars:
...
  automate_dv.hash: MD5
  automate_dv.concat_string: '||'
  automate_dv.null_placeholder_string: '^^'
  automate_dv.hash_content_casing: 'UPPER'

這四行設定都是關於在創建散列鍵(hash key)的時候應該要用到哪一個演算法與有關的設定。講到後續整合層的時候會注重談到Data Vault 2.0 使用到的hash key和hashdiff功能,而現階段主要需要了解的是你使用的資料處理平台支不支持這些演算法和設定。在大部分情況下,預設的選項應該都沒有問題,但如果用是Redshift或者其他小眾的平台就可能需要稍作調整。詳情可以參考官方平台支持矩陣

seeds:
  +schema: SALESFORCE

這個是模板預設的原種子資料設定,這樣的schema定義會將/seeds這個目錄裡所有的CSV檔上傳到SALESFORCE這個schema,來當作模擬資料源。

models:
    ...
    psa:
      +materialized: table
      +schema: psa

這裡的psa指的是 Persistent Staging Area,直譯的話應該是持久暫存區,而在這個資料處理模型上等於是一比一對應原資料層所有的table。

models:
...
    automate_dv:
      stage:
        +materialized: view
        +schema: automate_dv
      raw_vault:
        +materialized: incremental
        +schema: automate_dv

加上前面的psa,這裡可以看出來整個資料處理管道的層次:

1. seeds/SALESFORCE -> 
2. psa -> 
3. stage -> 
4. raw_vault

從MDS的角度來看,SALESFORCEpsa是原始層,而stageraw_vault則是對應整合層。由於這個算是一個簡單的案例,我們就不考慮實作Business Vault,但在更複雜的環境下也會在整合層上再加入更接近商務邏輯的Business Vault。

除了schema定義以外,這裡的materialized設定是在資料庫裡物化的不同設定種類。由於各種materialized選項的不同與利弊還蠻複雜的,這裡就不深入談了。但這裡重點是較複雜的raw_vault用的是incremental,代表每跑一次資料處理管道只會加入當次資料刷新的新資料,相對簡單的psa則是table,代表是整個資料庫會被重新覆蓋掉。

packages.yml

packages:
  ...
  - package: Datavault-UK/automate_dv
    version: 0.9.6

這裡就只是通過dbt package hub來簡單安裝automate_dv

其他沒談到的設定可以參考AutomateDV官方docsdbt官方docs

初始化(initializing)指令

由於是直接clone模板,所以不需要執行一般流程的dbt init。相對的,為了初始化這個模板,需要在CLI裡依序裡執行以下兩個指令:

  • dbt seed:創建與上傳剛才提到的SALESFORCE模擬資料源。
  • dbt deps:下載並安裝packages.yml裡面設定的各個package,包括這次用到的automate_dv

這樣,就完成了基本的設定與項目初始化!接下來會按照處理管道依次開始創建資料模型了。


上一篇
用dbt建構Data Vault 2.0:5 現有的dbt package
下一篇
用dbt建構Data Vault 2.0:6 快速設定指南 Part 2
系列文
實用Modern Data Stack:資料架構案例分析與分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言