継続的インテグレーション(CI)SQL バリデータは、Explore のディメンションがデータベースに対して正しく実行されることを検証します。これを行うため、SQL バリデータは LookML プロジェクトの Explore に対して一連のクエリを実行します。
デフォルトでは、SQL バリデータは次のタスクを実行します。
- プロジェクト内の各 Explore に対して、SQL バリデータは Explore 内のすべてのディメンションを含む Explore クエリを実行します。
- Looker が Explore クエリのエラーを返すと、SQL バリデータは Explore 内の各ディメンションに対して個別の Explore クエリを実行します。
SQL バリデータがすべての Explore のすべてのディメンションをテストしないようにするには、必要に応じて次の操作を 1 つ以上行います。
- 特定の Explore のみをクエリするように SQL Validator を構成します。
- 特定の Explore を除外するように SQL Validator を構成します。
hidden: yes
で定義された LookML ディメンションを無視するように SQL Validator を構成します。- ディメンションの LookML に
ci: ignore
コメントまたはタグ を追加すると、SQL バリデータがそのディメンションを Explore クエリに含めなくなります。
CI スイートの作成または編集時に構成できるオプションの詳細については、このページの SQL バリデータ オプションをご覧ください。SQL Validator の実行については、継続的インテグレーション スイートを実行するのドキュメント ページをご覧ください。
実行結果ページで、SQL バリデータは各 SQL エラーをディメンションと Explore ごとに分類して表示します。問題のある LookML へのリンクと、デバッグ用のここから Explore リンクも表示されます。
リソースの使用量
SQL Validator は、Looker とデータ ウェアハウス内で使用するリソースを最小限に抑えるように設計されています。SQL Validator のすべてのクエリには、LIMIT 0
句と WHERE 1=2
句が含まれています。これらの句は、データ ウェアハウスのクエリプランナーに、データを処理するのではなく SQL の有効性をチェックするように指示します。
たとえば、BigQuery では、このタイプのクエリは BigQuery でドライラン クエリを実行するのと似ています。BigQuery の場合、LIMIT 0
クエリはデータをスキャンしないため、SQL Validator が実行するクエリに対して課金されることはありません。
SQL 検証からディメンションを除外する
パラメータに依存するディメンションなど、特定のディメンションを SQL 検証から除外することがあります。これは、検証中にパラメータの値が null になり、常に 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 Validator の実行方法を構成するオプションをいくつか指定できます。オプションについては、このページの次のセクションで説明します。
クエリを実行する Explore
デフォルトでは、SQL バリデータは LookML プロジェクト内のすべてのモデルと Explore で SQL 検証を実行します。
[Explores to query] フィールドを使用して、SQL 検証に含める Explore とモデルを指定できます。
Explore は model_name/explore_name
の形式で指定できます。
次の点にご注意ください。
model_name
には、.model.lkml
拡張子のないモデルファイルの名前を使用します。たとえば、thelook.model.lkml
で定義されたモデルを指定するには、thelook
と入力します。explore_name
には、explore
LookML パラメータのexplore_name
を使用します。たとえば、LookML プロジェクトでexplore: users
として定義された Explore を指定するには、users
と入力します。- カンマ区切りリストを作成して、複数のデータ探索を指定できます。
model_name
またはexplore_name
で*
ワイルドカードを使用できます。
次に例を示します。
ファイル
thelook.model.lkml
でexplore: users
を使用して定義された Users Explore のみを指定するには、次のように入力します。thelook/users
thelook.model.lkml
ファイルでusers
とorders
という名前のデータ探索を指定するには、次のように入力します。thelook/users, thelook/orders
thelook.model.lkml
内のすべての Explore を指定するには、次のように入力します。thelook/*
プロジェクト内のすべてのモデルで
users
という名前のすべての Explore を指定するには、次のように入力します。*/users
除外する Explore
デフォルトでは、SQL バリデータは LookML プロジェクト内のすべてのモデルと Explore で SQL 検証を実行します。
[除外する Explore] フィールドを使用して、SQL 検証から除外する Explore とモデルを指定できます。
Explore は model_name/explore_name
の形式で指定できます。
SQL Validator の Explore を指定する方法については、クエリする Explore セクションをご覧ください。
フェイル ファスト
デフォルトでは、SQL Validator はクエリ内のすべてのディメンションを使用して、Explore ごとに 1 つのクエリを実行します。その Explore クエリが失敗すると、SQL Validator は Explore 内の各ディメンションに対して個別に Explore クエリを実行します。
検証を高速化するには、[Fail fast] オプションを有効にします。これにより、SQL 検証ツールは Explore の最初のクエリ(すべてのディメンションを一度に含むクエリ)のみを実行します。そのクエリがエラーを返すと、SQL 検証ツールは CI 実行結果にそのエラーを表示し、検証する次の Explore に進みます。
フェイルファストを有効にすると、通常、検証はより迅速に完了します。ただし、複数のディメンションにエラーがある場合でも、SQL Validator の結果には各 Explore の最初のエラーのみが表示されます。つまり、最初のエラーを修正した後、SQL バリデータを再度実行すると、別のエラーが表示される可能性があります。
非表示を無視する
Looker デベロッパーが hidden: yes
で定義した LookML ディメンションを SQL バリデータで無視する場合は、[非表示を無視] フィールドを有効にします。SQL 検証ツールは、検証時にこれらのディメンションを Explore クエリから除外します。
クエリの同時実行数
デフォルトでは、Looker インスタンスに過負荷がかからないように、SQL 検証ツールは一度に 10 個以下のクエリを実行します。[クエリの同時実行数] フィールドを使用して、SQL Validator が同時に実行できるクエリの最大数を指定できます。
[クエリの同時実行数] フィールドの最大値は、データベース接続の [この接続に関する同時実行クエリの最大数] 設定によって制限されます。
SQL 検証の実行中に Looker インスタンスの速度が低下した場合は、この値を減らすことができます。
増分検証
増分検証は、特定の開発ブランチに固有のエラー(本番環境にまだ存在しないエラー)を見つける方法です。増分検証を使用すると、デベロッパーはプロジェクト内の既存のエラーに気を取られることなく、担当するエラーを見つけて修正できます。また、特に多くの Explore を含む LookML プロジェクトでは、検証を高速化することもできます。
増分検証の場合、SQL Validator は、開発バージョン(ベース参照)と本番環境バージョン(ターゲット参照)の間で変更された Explore クエリのみを実行します。SQL バリデータは、本番環境バージョン自体にエラーがある場合でも、開発バージョンに固有のエラーのみを返します。
バリデータの結果で、SQL バリデータは、検証対象のブランチまたは commit でコンパイル済み SQL に変更がなかったためにスキップされた各 Explore を示します。増分検証の結果の例については、増分検証の結果を表示するをご覧ください。
SQL Validator の増分検証を有効にするには、継続的インテグレーション スイートを作成または編集するときに、[SQL Validator] セクションの [増分エラーのみ] チェックボックスをオンにします。
増分検証については、次の点に注意してください。
- (本番環境ブランチでの手動実行などで)SQL Validator が本番環境ブランチ自体を検証する場合、増分検証の設定は適用されません。本番環境ブランチを検証するときは、SQL Validator が完全な検証を実行します。
- フェイルファスト モードは、増分検証の実行ではサポートされていません。これは、プロジェクトの開発ブランチに固有の増分エラーを公開するために、個々のディメンション クエリが必要になるためです。