在先前的文章中,我們分析了如何使用 Materialize 和 Metabase 建置串流分析管線。重點摘要是,您可以針對串流資料來源撰寫一些 SQL,讓 Materialize 在新資料送達時有效率地維護您最新的結果,並讓您的儀表板保持輕巧和即時更新。這次,我們將探索如何使用 dbt 來管理和記錄端對端的工作流程。
使用 dbt 轉換串流資料
儘管您希望不停地執行分析,但您可能不希望放棄能讓您在批次處理中提高生產力的工具。如果您可以使用完全相同的工具來管理串流分析管線呢?儘管 dbt 的建置是以批次處理為考量,但它作為一個架構具有足夠的彈性,可以作為批次和串流後端的統一轉換層;只要後端是以 SQL 為基礎,底層執行的內容就會變成實作細節。
我們建置了 dbt-materialize 轉接器,將串流轉換(及其他功能)帶入 dbt。如果這看起來很熟悉⋯
{{ config(
materialized ='materializedview'
) }}
SELECT fi.icao24,
manufacturername,
model,
operator,
origin_country,
time_position,
longitude,
latitude
FROM {{ ref('stg_flight_information') }} fi
JOIN {{ ref('stg_icao_mapping') }} icao ON fi.icao24 = icao.icao24
⋯這就是全部:您使用 SQL 和一些 Jinja 將您的業務邏輯定義為 dbt 模型,部署管線(一次),而 Materialize 會讓一切保持運作。對於在其他情況下需要您每天多次重新部署模型 ($$)、維護複雜的增量邏輯,並做出一些嚴重的權衡以最佳化速度(例如,正確性)的使用案例,使用像 Materialize 這樣的專用串流資料庫 可以帶您走得更遠、更快。
記錄串流分析管線
dbt 不僅標準化了我們對分析工作流程的推理和管理方式,還再次讓文件記錄變得酷炫(好吧,在 dbt 之前它真的酷炫過嗎?)。透過一些 YAML 檔案,您可以將資料治理帶入您的串流管線,加速拯救生命的流程,例如資料探索和譜系,甚至 確保您的指標保持不變。如果趨勢是將您的 dbt 專案視為業務邏輯和文件記錄的來源,那麼您的 BI 工具不應該只是⋯同步嗎?
如何同步 dbt 和 Metabase
如果您希望將 dbt 和 Metabase 更緊密地結合在一起,dbt-metabase 外掛程式是一個很好的起點。例如,您可以使用它來
將 Metabase 項目記錄為 dbt 曝光
要充分了解 dbt 專案的端對端依賴性,也需要能夠追蹤外部於它的依賴性,例如 Metabase 問題和儀表板。在 DAG 中追蹤這些依賴性的一種方法是將任何模型下游的使用宣告為曝光(請注意橘色節點!),您可以使用外掛程式自動產生這些曝光
將 dbt metadata 傳播到 Metabase 資料模型
如果您已經在 dbt 中記錄您的資料模型,外掛程式也允許您從現有的模型屬性和組態衍生 Metabase 資料模型,例如表格和欄位描述、語意類型定義,以及其他有用的 metadata,有助於在資料生產者和消費者之間建立共享的環境背景
在透過 dbt 管理串流分析管線方面,還有更多內容值得探索,所以如果您有興趣親自試試看,請查看範例示範,用來建立上述範例和 Materialize 文件。