在 dbt 自動化檢查系列文章中,我們已經介紹了 dbt_operator
和 git_diff_operator
,這兩個模組主要用於識別異動的 models。今天要介紹的 bigquery_operator
則負責進一步檢查這些異動 models 的資料變化情況。
BigQuery Operator 設計了兩個核心功能來實現自動化檢查:
使用 BigQuery API 執行查詢的程式碼如下:
from google.cloud import bigquery
client = bigquery.Client(project=project_id)
query = "SELECT * FROM table"
query_job = client.query(query)
result = query_job.result()
在 dbt model 中,我們根據不同的 materialized 類型採用不同的檢查策略。這種差異化的檢查方式能夠確保檢查的準確性和效率。以下會透過幾個檢查項目來說明
SELECT row_count
FROM `{dataset_name}`.__TABLES__
WHERE table_id = '{table_name}'
SELECT COUNT(*) AS row_count
FROM `{dataset_name}.{table_name}`
為什麼我們要對 Table 和 View 採用不同的查詢方式呢?這是基於以下考量:
__TABLES__
系統視圖可以一次性獲取整個 dataset 的所有表信息__TABLES__
無法提供準確的資料筆數COUNT(*)
進行實際計算才能得到準確結果在下一篇文章中,我們將繼續介紹另一個重要的檢查項目:孤兒物件。