継続的インテグレーション SQL バリデータ

継続的インテグレーション(CI)SQL バリデータは、Explore のディメンションがデータベースに対して正しく実行されることを検証します。これを行うため、SQL バリデータは LookML プロジェクトの Explore に対して一連のクエリを実行します。

デフォルトでは、SQL バリデータは次のタスクを実行します。

  1. プロジェクト内の各 Explore に対して、SQL バリデータは Explore 内のすべてのディメンションを含む Explore クエリを実行します。
  2. Looker が Explore クエリのエラーを返すと、SQL バリデータは Explore 内の各ディメンションに対して個別の Explore クエリを実行します。

SQL バリデータがすべての Explore のすべてのディメンションをテストしないようにするには、必要に応じて次の操作を 1 つ以上行います。

CI スイートの作成または編集時に構成できるオプションの詳細については、このページの SQL バリデータ オプションをご覧ください。SQL Validator の実行については、継続的インテグレーション スイートを実行するのドキュメント ページをご覧ください。

実行結果ページで、SQL バリデータは各 SQL エラーをディメンションと Explore ごとに分類して表示します。問題のある LookML へのリンクと、デバッグ用のここから Explore リンクも表示されます。

SQL バリデータの検出結果を示す継続的インテグレーションの結果ページ

リソースの使用量

SQL Validator は、Looker とデータ ウェアハウス内で使用するリソースを最小限に抑えるように設計されています。SQL Validator のすべてのクエリには、LIMIT 0 句と WHERE 1=2 句が含まれています。これらの句は、データ ウェアハウスのクエリプランナーに、データを処理するのではなく SQL の有効性をチェックするように指示します。

たとえば、BigQuery では、このタイプのクエリは BigQuery でドライラン クエリを実行するのと似ています。BigQuery の場合、LIMIT 0 クエリはデータをスキャンしないため、SQL Validator が実行するクエリに対して課金されることはありません。

SQL 検証からディメンションを除外する

パラメータに依存するディメンションなど、特定のディメンションを SQL 検証から除外することがあります。これは、検証中にパラメータの値が null になり、常に SQL エラーが発生するためです。

sql パラメータのないディメンション(type: distancetype: locationtype: 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.lkmlexplore: users を使用して定義された Users Explore のみを指定するには、次のように入力します。

    thelook/users
    
  • thelook.model.lkml ファイルで usersorders という名前のデータ探索を指定するには、次のように入力します。

    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 が完全な検証を実行します。
  • フェイルファスト モードは、増分検証の実行ではサポートされていません。これは、プロジェクトの開発ブランチに固有の増分エラーを公開するために、個々のディメンション クエリが必要になるためです。