使用状況
階層
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 を定義したら、データテストを実行して、テストが正しく機能することと、モデルのロジックがテストに合格するかどうかを確認できます(データテストを実行するには、開発モードになっている必要があります)。
プロジェクトのデータテストを開始するには、いくつかの方法があります。
- ファイルを本番環境にデプロイする前にデータテストに合格するようにプロジェクトが設定されている場合は、変更をプロジェクトに commit した後に [Run Tests] ボタンが表示されます。これにより、テストを定義するファイルに関係なく、プロジェクトのすべてのテストが実行されます。変更を本番環境にデプロイする前に、データテストに合格する必要があります。
- [Project Health] パネルの [Run Data Tests] ボタンをクリックします。これにより、テストを定義するファイルに関係なく、プロジェクト内のすべてのデータテストが実行されます。
- ファイルのメニューから [Run LookML Tests] オプションを選択します。これにより、現在のファイルで定義されているテストのみが実行されます。
データテストを実行すると、[プロジェクトの健全性] パネルに進行状況と結果が表示されます。
[Explore Query] リンクをクリックすると、データテストで定義されたクエリを含む Explore が開きます。
explore_source
データテストの explore_source
パラメータは、派生テーブルの explore_source
パラメータと同じ構文とロジックを使用します。ただし、データテストの explore_source
は、derived_column
、bind_filters
、bind_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}) ;;
}
}