用途
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 ;; } }
|
階層
testまたは testまたは test |
デフォルト値
なし
許可
データテストの ID と、テスト アサーションとクエリを定義するサブパラメータ。 |
定義
Looker には、LookML コードの構文が有効であることを確認する LookML Validator と、コンテンツとモデル間のオブジェクト参照を確認する Content Validator があります。
これらのバリデーターに加えて、test パラメータを使用すると、モデルのロジックを検証できます。データテストごとに、クエリと yesno アサーション ステートメントを作成します。データテストでテストクエリを実行し、テストクエリの各行に対してアサーションが true となることを検証します。アサーション ステートメントがテストクエリのすべての行に対して yes を返したとしたら、データテストは合格です。
本番環境にデプロイする前にデータテストに合格するようにプロジェクトが設定されていて、プロジェクトに 1 つ以上の test パラメータがある場合は、変更をプロジェクトに commit した後に [テストを実行] ボタンが表示されます。LookML デベロッパーは、変更を本番環境にデプロイする前にデータテストを実行する必要があります。
プロジェクトで本番環境へのデプロイ前のデータテストが必須となっているかどうかにかかわらず、開発モードの LookML デベロッパーはいつでもデータテストを実行して、モデルのロジックを検証できます。
データテストは、モデルファイル、ビューファイル、または個別の専用のデータテスト ファイルで作成できます。データテストを専用ファイルに保存する場合は、データテストを実行するモデルファイルまたはビューファイルでデータテスト ファイルを include することを忘れないでください。
データテストの名前と explore_source は、同じプロジェクト内の別のデータテストと同じにすることはできません。プロジェクト内の複数のデータテストで同じ explore_source を使用している場合は、データテストの名前がすべて一意であることを確認してください。
test パラメータには次のサブパラメータがあります。
explore_source: データテストで使用するクエリを定義します。assert: テストクエリのすべての行で実行され、データを検証する Looker 式を定義します。
テストの LookML を定義したら、データテストを実行して、テストが正しく機能することを確認し、モデルのロジックがテストに合格するかどうかを確認できます(データテストを実行するには、開発モードである必要があります)。
プロジェクトのデータテストを開始する方法はいくつかあります。

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

各テスト結果の [Explore Query] リンクを選択して、データテストで定義されたクエリを含む Explore を開くことができます。
explore_source
データテストの explore_source パラメータは、派生テーブルの explore_source パラメータと同じ構文とロジックを使用します。唯一の違いは、データテストの explore_source が derived_column、bind_filters、bind_all_filters のサブパラメータをサポートしていないことです。
便利なヒント:
explore_sourceLookML を簡単に取得するには、既存の Explore を使用してクエリを作成します。Explore で、Explore の歯車メニューから [LookML を取得] を選択し、[派生テーブル] タブを選択して、クエリの LookML を取得します。詳細については、ネイティブ派生テーブルの作成に関するドキュメントをご覧ください。
データテストの explore_source について、次の点に注意してください。
データテストの
explore_sourceクエリは標準の Looker クエリです。つまり、テストのexplore_sourceクエリには 5,000 行の上限があります。クエリが 5,000 行を超えないようにして、テスト用の完全な結果セットを取得してください。explore_sourceにフィルタや並べ替えを組み込んで、クエリの行数を減らしたり、関連する行をクエリの先頭に表示したりできます。extension: requiredを含むexploreは、データテストのexplore_sourceとして使用できません。LookML Validator は、explore_sourceが見つからないことを示すエラーを生成します。
assert
assert サブパラメータは、explore_source クエリの結果が有効と見なされる基準を定義します。expression サブパラメータは、yesno(ブール値)を返す Looker 式を受け取ります。explore_source クエリが実行されると、クエリの結果セットのすべての行に対してアサーションの式が評価されます。クエリの行に対して no レスポンスがある場合、データテストは失敗します。クエリ自体にエラーがある場合も、テストは失敗します。
テストには複数の 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 からクエリを作成し、結果セットで注文 ID が一意であることをテストする expression を定義します。explore_source クエリは、データベース内の各 ID に関連付けられた行の数を作成します。ID が一意の場合、データベースには 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 年の収益の値が常に $626,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}) ;;
}
}