test

使用状況

test: historic_revenue_is_accurate {
階層
test

または

test

または

test
デフォルト値
なし

許可
データテストの識別子と、テスト アサーションとクエリを定義するサブパラメータ。

定義

データテストに関するその他のヒントや情報については、Looker コミュニティのトピックで LookML データテスト: 推奨事項とベスト プラクティスをご覧ください。

Looker には LookML バリデータがあり、LookML コードが構文的に有効であるかを検証できます。また、コンテンツ バリデータではコンテンツとモデル間のオブジェクト参照を検証できます。

バリデータに加えて、test パラメータを使用すると、モデルのロジックを検証できます。データテストごとに、クエリと yesno アサーション ステートメントを作成します。データテストでテストクエリを実行し、テストクエリの各行に対してアサーションが true となることを検証します。アサーション ステートメントがテストクエリのすべての行に対して yes を返す場合、データテストは合格です。

プロジェクト設定が本番環境にデプロイする前にデータテストに合格する必要があるように構成されている場合、プロジェクトに変更を commit した後に IDE に [テストを実行] ボタンが表示されます。LookML デベロッパーは、変更を本番環境にデプロイする前にデータテストを実行する必要がある。

プロジェクトで本番環境にデプロイする前にデータテストが必要かどうかに関係なく、開発モードの LookML デベロッパーは、いつでもデータテストを実行してモデルのロジックを検証できます。

データテストは、モデルファイルビューファイル、または個別のデータテスト ファイルで作成できます。データファイルを格納するための専用ファイルを使用する場合は、データテストを実行するモデルファイルまたはビューファイルで include にデータテスト ファイルを忘れずに保存してください。

同じプロジェクトの別のデータテストと同じ名前や explore_source でテストすることはできません。プロジェクト内の複数のデータテストに同じ explore_source を使用している場合は、データテストの名前がすべて一意であることを確認します。

test パラメータには次のサブパラメータがあります。

  • explore_source: データテストで使用するクエリを定義します。
  • assert: データを検証するためにテストクエリのすべての行で実行される Looker 式を定義します。

テスト用の LookML を定義したら、データテストを実行して、テストが正しく機能することと、モデルのロジックがテストに合格するかどうかを確認できます(データテストを実行するには、開発モードになっている必要があります)。

プロジェクトのデータテストを開始するには、いくつかの方法があります。

  1. ファイルを本番環境にデプロイする前にデータテストに合格するようにプロジェクトが設定されている場合は、変更をプロジェクトに commit した後に [Run Tests] ボタンが表示されます。これにより、テストを定義するファイルに関係なく、プロジェクトのすべてのテストが実行されます。変更を本番環境にデプロイする前に、データテストに合格する必要があります。
  2. [Project Health] パネルの [Run Data Tests] ボタンをクリックします。これにより、テストを定義するファイルに関係なく、プロジェクト内のすべてのデータテストが実行されます。
  3. ファイルのメニューから [Run LookML Tests] オプションを選択します。これにより、現在のファイルで定義されているテストのみが実行されます。

データテストを実行すると、[プロジェクトの健全性] パネルに進行状況と結果が表示されます。

[Explore Query] リンクをクリックすると、データテストで定義されたクエリを含む Explore が開きます。

explore_source

データテストの explore_source パラメータは、派生テーブルの explore_source パラメータと同じ構文とロジックを使用します。ただし、データテストの explore_source は、derived_columnbind_filtersbind_all_filters サブパラメータをサポートしていません。

ヒント: explore_source LookML は、既存の Explore を使用してクエリを作成し、Explore の歯車メニューから [Get LookML] を選択して [Derived Table] タブをクリックして、クエリの LookML を取得する簡単な方法です。詳細については、ネイティブ派生テーブルの作成に関するドキュメントをご覧ください。

データテストの explore_source については、次の点に注意してください。

  • データテストの explore_source クエリは標準の Looker クエリです。つまり、テストの explore_source クエリの上限は 5,000 行です。テストのために完全な結果セットが得られるように、クエリが 5,000 行を超えないようにしてください。フィルタや並べ替えを explore_source に組み込むと、クエリ内の行数を減らしたり、関連する行をクエリの先頭に移動したりできます。

  • extension: required が指定された explore を、データテストexplore_source として使用することはできません。LookML バリデータにより、explore_source が見つからないというエラーが生成されます。

assert

assert サブパラメータは、explore_source クエリの結果が有効と見なされる条件を定義します。expression サブパラメータは、結果として yesno(ブール値)となる Looker の式を受け入れます。explore_source クエリを実行すると、クエリ結果のセットのすべての行に対してアサーションの式が評価されます。クエリの任意の行に対して no レスポンスがある場合、データテストは失敗します。クエリ自体にエラーがある場合も、テストは失敗します。

1 つのテストに複数の assert 宣言を含めることができます。テストに合格するには、explore_source クエリの各行に対して各アサーションが true である必要があります。

ヒント: [表計算] ダイアログ ボックスを使用して、テストの expression パラメータで使用する Looker 式の構文をテストできます。

データテストで使用する Looker 式のフィールドは、完全にスコープ設定されている必要があります。つまり、view_name.field_name 形式を使用して指定します。たとえば、以下の式では、フィールドを aircraft_engine_types.aircraft_engine_type_id として宣言します。

assert: engine_type_id_not_null {
  expression: NOT is_null(${aircraft_engine_types.aircraft_engine_type_id}) ;;
}

主キーが一意であることを確認する

次のデータテストでは、orders Explore からクエリを作成し、expression を定義して、結果 ID でオーダー ID が一意であることをテストします。explore_source クエリは、データベース内の各 ID に関連付けられた行のカウントを作成します。ID が一意である場合、データベースには 1 つの ID の行が 1 つだけ含まれている必要があります。さらに、カウントが並べ替えられ、結果セットが 1 行に制限されるため、クエリ レスポンスはカウントが最も多い ID になります。ID のカウントが 1 より大きい場合、その ID の行は複数あるため、ID は一意ではありません。その場合、このデータテストは失敗します。

test: order_id_is_unique {
  explore_source: orders {
    column: id {}
    column: count {}
    sorts: [orders.count: desc]
    limit: 1
  }
  assert: order_id_is_unique {
    expression: ${orders.count} = 1 ;;
  }

既知の値を確認する

次のデータテストでは、2017 年の収益が常に 62 万 6,000 ドルであることを確認します。このデータセットでは、これは変更されない既知の値です。

test: historic_revenue_is_accurate {
  explore_source: orders {
    column: total_revenue {
      field: orders.total_revenue
    }
    filters: [orders.created_date: "2017"]
  }
  assert: revenue_is_expected_value {
    expression: ${orders.total_revenue} = 626000 ;;
  }
}

null 値がないことを確認する

次のデータテストでは、データに null 値がないことを確認します。この explore_source では、sort を使用して、クエリの先頭に null が返されるようにします。null の並べ替えは方言によって異なります。以下のテストでは、例として desc: yes を使用しています。


test: status_is_not_null {
  explore_source: orders {
    column: status {}
    sorts: [orders.status: desc]
    limit: 1
  }
  assert: status_is_not_null {
    expression: NOT is_null(${orders.status}) ;;
  }
}