持續整合 (CI) SQL 驗證工具會驗證您「探索」中的維度是否能針對資料庫正確執行。為此,SQL 驗證器會在 LookML 專案的探索中執行一系列查詢。
根據預設,SQL 驗證器會執行下列工作:
- 針對專案中的每個探索,SQL 驗證器會執行探索查詢,其中包含探索中的每個維度。
- 如果 Looker 傳回探索查詢的錯誤,SQL 驗證工具就會針對探索中的每個維度,分別執行探索查詢。
如果您不希望 SQL 驗證器測試每個探索中的每個維度,可以選擇執行下列一或多項操作:
- 設定 SQL 驗證器,只查詢特定探索。
- 設定 SQL 驗證器,排除特定探索。
- 設定 SQL 驗證器,忽略以
hidden: yes
定義的 LookML 維度。 - 在維度的 LookML 中加入
ci: ignore
註解或標記 ,即可防止 SQL 驗證器在任何探索查詢中納入該維度。
如要瞭解在建立或編輯 CI 套件時可設定的選項,請參閱本頁的「SQL 驗證器選項」一節。如要瞭解如何執行 SQL 驗證器,請參閱「執行持續整合套件」說明文件頁面。
在執行結果頁面中,SQL 驗證器會顯示每個 SQL 錯誤,並依據維度和探索進行分類,同時提供問題 LookML 的連結,以及用於偵錯的「從這裡探索」連結:
資源用量
SQL 驗證器旨在盡可能減少 Looker 和資料倉儲中的資源耗用量。所有 SQL 驗證器查詢都包含 LIMIT 0
和 WHERE 1=2
子句。這些子句會有效指示資料倉儲中的查詢規劃工具不要處理資料,而是檢查 SQL 的有效性。
舉例來說,在 BigQuery 中,這類查詢類似於執行 模擬測試查詢。對於 BigQuery,LIMIT 0
查詢不會掃描資料,因此 SQL 驗證器執行的查詢不應計費。
從 SQL 驗證中排除維度
您可能想從 SQL 驗證中排除特定維度,例如依附於參數的維度,因為參數的值在驗證期間會為空值,且一律會導致 SQL 錯誤。
您也可以排除沒有 sql
參數的維度,例如 type: distance
、type: location
或 type: duration
的維度。
如要從 SQL 驗證中排除維度,可以透過下列任一方式修改維度的 LookML:
您可以在維度的 LookML 定義的
tags
參數中新增ci: ignore
陳述式,如下列範例所示:dimension: addresses { sql: ${TABLE}.addresses ;; tags: ["ci: ignore"] }
您可以在維度的 LookML 的
sql
欄位中新增註解-- ci: ignore
,如下列範例所示:dimension: addresses { sql: -- ci: ignore ${TABLE}.addresses ;; }
SQL 驗證器選項
建立或編輯持續整合套件時,您可以指定多個選項,設定 SQL 驗證器執行方式。本頁面以下各節將說明這些選項:
要查詢的探索
根據預設,SQL 驗證器會對 LookML 專案中的所有模型和探索執行 SQL 驗證。
您可以使用「Explores to query」(要查詢的探索) 欄位,指定要納入 SQL 驗證的探索和模型。
您可以指定下列格式的探索:model_name/explore_name
注意事項:
- 如果是
model_name
,請使用模型檔案名稱,但不要加上.model.lkml
副檔名。舉例來說,如要指定thelook.model.lkml
中定義的模型,請輸入thelook
。 - 如為
explore_name
,請使用explore
LookML 參數中的explore_name
。舉例來說,如要指定在 LookML 專案中定義為explore: users
的「探索」,請輸入users
。 - 您可以建立以逗號分隔的清單,指定多個探索。
- 您可以在
model_name
或explore_name
中使用*
萬用字元。
例如:
如要只指定以
explore: users
在thelook.model.lkml
檔案中定義的「使用者」探索,請輸入下列內容:thelook/users
如要在
thelook.model.lkml
檔案中指定名為users
和orders
的探索,請輸入下列內容:thelook/users, thelook/orders
如要指定
thelook.model.lkml
中的所有探索,請輸入下列內容:thelook/*
如要指定專案中所有模型中名為
users
的每個探索,請輸入下列內容:*/users
要排除的探索
根據預設,SQL 驗證器會對 LookML 專案中的所有模型和探索執行 SQL 驗證。
您可以使用「要排除的探索」欄位,指定要從 SQL 驗證中排除的探索和模型。
您可以指定下列格式的探索:model_name/explore_name
如要進一步瞭解如何為 SQL 驗證器指定探索,請參閱「要查詢的探索」一節。
盡快承認錯誤
根據預設,SQL 驗證器會對每個「探索」執行一次查詢,並納入查詢中的所有維度。如果該探索查詢失敗,SQL 驗證器就會個別對探索中的每個維度執行探索查詢。
如要加快驗證速度,可以啟用「快速失敗」選項,這樣 SQL 驗證器只會針對探索執行初始查詢,也就是一次包含所有維度的查詢。如果該查詢傳回錯誤,SQL 驗證工具會在 CI 執行結果中顯示該錯誤,並繼續驗證下一個探索。
啟用「快速失敗」後,驗證作業通常會更快完成。不過,即使多個維度可能發生錯誤,SQL 驗證工具結果也只會顯示每個探索的第一個錯誤。也就是說,修正第一個錯誤後,下次執行 SQL 驗證器時,可能會顯示其他錯誤。
忽略隱藏項目
如要讓 SQL 驗證器忽略 Looker 開發人員以 hidden: yes
定義的 LookML 維度,請啟用「忽略隱藏」欄位。驗證期間,SQL 驗證器會將這些維度排除在探索查詢之外。
查詢並行數量
根據預設,SQL 驗證器一次最多只會執行 10 個查詢,避免 Looker 執行個體負載過重。您可以使用「查詢並行數」欄位,指定 SQL 驗證器可同時執行的查詢數量上限。
「查詢並行」欄位的值上限,取決於資料庫連線的「這個連線的並行查詢數量上限」設定。
如果在執行 SQL 驗證時,發現 Looker 執行個體速度變慢,可以調低這個值。
增量驗證
您可以透過「增量驗證」方法,找出專屬於特定開發分支版本和不存在於正式環境的錯誤。漸進式驗證可協助開發人員找出並修正自己負責的錯誤,不會受到專案中現有錯誤的干擾,而且驗證速度也會更快,特別是包含多項探索的 LookML 專案。
如果是增量驗證,SQL 驗證器只會執行開發版本 (基準參考) 和正式版 (目標參考) 之間變更的探索查詢。即使正式版本身有錯誤,SQL 驗證器也只會傳回開發版本特有的錯誤。
在驗證器結果中,SQL 驗證器會指出每個略過的探索,因為這些探索在驗證的分支或提交中,編譯的 SQL 沒有任何變更。如需逐步驗證結果的範例,請參閱「查看逐步驗證結果」。
建立或編輯持續整合套件時,在「SQL 驗證工具」部分勾選「僅限增量錯誤」核取方塊,即可為 SQL 驗證工具啟用增量驗證。
請注意下列增量驗證事項:
- 如果 SQL 驗證工具驗證的是正式環境分支版本本身 (例如在正式環境分支版本中手動執行),則不適用增量驗證設定。驗證正式環境分支版本時,SQL Validator 會執行完整驗證。
- 快速失敗模式不支援增量驗證執行,因為需要個別維度查詢,才能找出專屬於專案開發分支版本的增量錯誤。