持續整合 (CI) SQL 驗證器會驗證探索中的維度是否能正確對資料庫執行。為此,SQL 驗證器會對 LookML 專案中的探索執行一系列查詢。
根據預設,SQL 驗證器會執行下列工作:
- SQL Validator 會為專案中的每個探索執行探索查詢,其中包含探索中的每個維度。
- 如果 Looker 傳回探索查詢錯誤,SQL 驗證器會針對探索中的每個維度,分別執行探索查詢。
如果您不希望 SQL 驗證器測試每個探索中的所有維度,可以視需要採取下列一或多項做法:
- 設定 SQL 驗證器,僅查詢特定探索。
- 設定 SQL Validator,排除特定探索。
- 設定 SQL 驗證器,忽略以
hidden: yes定義的 LookML 維度。 - 在維度的 LookML 中加入
ci: ignore註解或標記,SQL Validator 就不會將該維度納入任何探索查詢。
如要進一步瞭解建立或編輯 CI 套件時可設定的選項,請參閱本頁的「SQL 驗證工具選項」一節。如要瞭解如何執行 SQL Validator,請參閱「執行持續整合套件」說明文件頁面。
在執行結果頁面,SQL Validator 會顯示各項 SQL 錯誤,並依維度和探索分類,同時提供有問題的 LookML 連結,以及用於偵錯的「從這裡探索」連結:

資源用量
SQL 驗證器旨在盡可能減少 Looker 和資料倉儲中的資源消耗。所有 SQL Validator 查詢都包含 LIMIT 0 和 WHERE 1=2 子句。這些子句會有效指示資料倉儲中的查詢規劃工具,不要處理資料,而是檢查 SQL 的有效性。
以 BigQuery 為例,這類查詢類似於在 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 ;; }
持續整合和 OAuth 資料庫連線
如果 LookML 專案使用的資料庫連線已設定 OAuth,自動化 CI 服務帳戶使用者就無法完成向資料庫驗證所需的互動式 OAuth 流程。這會導致 SQL 驗證工具失敗,並顯示 OAuth log in required 錯誤。
如要使用持續整合 SQL 驗證工具,請採用下列其中一種解決方法:
- 設定資料庫連線,改用服務帳戶:將資料庫連線的「驗證」設定變更為使用服務帳戶 (例如應用程式預設憑證),而非 OAuth。
- 使用非 OAuth 模型進行 CI:建立新的 LookML 模型,使用非 OAuth 資料庫連線,並將其他模型匯入其中。確認 Looker CI 使用者可以存取這個新模型。
SQL Validator 選項
建立或編輯持續整合套件時,您可以指定多個選項,設定 SQL Validator 的執行方式。本頁以下各節將說明這些選項:
要查詢的探索
根據預設,SQL 驗證工具會對 LookML 專案中的所有模型和探索執行 SQL 驗證。
您可以使用「要查詢的探索」欄位,指定要納入 SQL 驗證的探索和模型。
您可以使用下列格式指定探索:model_name/explore_name
注意事項:
model_name請使用模型檔案名稱,不含.model.lkml副檔名。舉例來說,如要指定thelook.model.lkml中定義的模型,請輸入thelook。- 針對
explore_name,請使用exploreLookML 參數中的explore_name。舉例來說,如要指定 LookML 專案中定義為explore: users的探索,請輸入users。 - 您可以使用半形逗號分隔的清單,指定多個探索。
- 您可以在
model_name或explore_name中使用*萬用字元。
例如:
如要只指定在
thelook.model.lkml檔案中以explore: users定義的「使用者」探索,請輸入下列內容:thelook/users如要在
thelook.model.lkml檔案中指定名為users和orders的探索,請輸入下列內容:thelook/users, thelook/orders如要指定
thelook.model.lkml中的所有探索,請輸入以下內容:thelook/*如要指定專案中所有模型內名為
users的探索,請輸入以下內容:*/users
要排除的探索
根據預設,SQL 驗證工具會對 LookML 專案中的所有模型和探索執行 SQL 驗證。
您可以使用「Explores to exclude」(要排除的探索) 欄位,指定要從 SQL 驗證中排除的探索和模型。
您可以使用下列格式指定探索:model_name/explore_name
如要進一步瞭解如何為 SQL 驗證工具指定探索,請參閱「要查詢的探索」一節。
盡快承認錯誤
根據預設,SQL 驗證工具會對每個探索執行一項查詢,並在查詢中加入所有維度。如果探索查詢失敗,SQL 驗證器會對探索中的每個維度個別執行探索查詢。
如要加快驗證速度,可以啟用「快速宣告失敗」選項,讓 SQL 驗證器只執行探索的初始查詢,也就是一次包含所有維度的查詢。如果查詢傳回錯誤,SQL 驗證器會在 CI 執行結果中顯示該錯誤,並繼續驗證下一個探索。
啟用「快速失敗」後,驗證通常會更快完成。不過,即使多個維度可能有錯誤,SQL 驗證工具結果也只會顯示每個探索的第一個錯誤。也就是說,修正第一個錯誤後,下次執行 SQL 驗證工具時,可能會顯示其他錯誤。
忽略隱藏項目
如要讓 SQL 驗證器忽略 Looker 開發人員使用 hidden: yes 定義的 LookML 維度,請啟用「忽略隱藏」欄位。SQL 驗證工具在驗證期間,會將這些維度排除在探索查詢之外。
查詢並行數量
根據預設,SQL 驗證器一次最多執行 10 項查詢,避免 Looker 執行個體超載。您可以使用「查詢並行數」欄位,指定 SQL Validator 可同時執行的查詢數量上限。
「查詢並行」欄位的值,不得超過資料庫連線的「這個連線的並行查詢數量上限」設定。
如果發現 Looker 執行個體在執行 SQL 驗證時速度變慢,可以調低這個值。
增量驗證
您可以透過「增量驗證」方法,找出專屬於特定開發分支版本和不存在於正式環境的錯誤。漸進式驗證可協助開發人員找出並修正自己負責的錯誤,不會因專案中現有的錯誤而分心,還能加快驗證速度,尤其是包含多項探索的 LookML 專案。
如果是增量驗證,SQL Validator 只會執行開發中版本 (基本參照) 和正式版 (目標參照) 之間有變更的探索查詢。即使正式版本身有錯誤,SQL 驗證器也只會傳回開發中版本特有的錯誤。
在驗證器結果中,SQL 驗證器會指出每個略過的探索,因為在驗證的分支或修訂版本中,其編譯 SQL 沒有任何變更。如需增量驗證結果範例,請參閱「查看增量驗證結果」。
建立或編輯持續整合套件時,只要在「SQL Validator」部分勾選「Only incremental errors」核取方塊,即可啟用 SQL Validator 的增量驗證功能。
請注意下列增量驗證事項: