このページでは、LookML の確かな知識を前提とした、より高度なトピックを扱います。
Extends は LookML コードの DRY(don't repeat yourself)を維持できる貴重な LookML 機能です。Looker では、Explore、ビュー、LookML ダッシュボードを、次の例のように、すべてモデルファイル内の extends
パラメータを使用して拡張できます。
explore: orders { view_name: orders join: users { type: left_outer sql_on: %{orders.user_id} = ${users.id} ;; relationship: many_to_one } } explore: transactions { extends: [orders] }
この例では、transactions
Explore の定義内で extends
パラメータを使用して、orders
Explore を拡張しています。
このページでは、拡張されるオブジェクトをベース オブジェクトと呼び、拡張するオブジェクトは拡張オブジェクトと呼ばれます。
LookML オブジェクトを拡張するプロセスは非常にシンプルです。詳しくは、拡張機能によるコードの再利用のドキュメント ページをご覧ください。ただし、LookML 参照エラーや不要なオブジェクトの重複が発生する可能性がある高度なユースケースもあります。このページでは、別のビューを拡張するビューに基づいて Explore を拡張すると、LookML 参照エラーが発生する例と、そのような問題を解消するためのヒントを示します。
ユースケース: 拡張ビューに基づいて Explore を拡張する
events
Explore を拡張し、Explore の拡張がベースとなるビューで、ベース events
ビューを拡張するビューのフィールドを使用する場合について考えてみます。この例では、次のサンプル LookML に示されているように、events_extended
Explore が extends
Explore を拡張しています。
explore: events { view_name: events join: users { type: left_outer sql_on: ${events.user_id} = ${users.id} ;; relationship: many_to_one } } explore: events_extended { extends: [events] join: orders { sql_on: ${events_extended.test_id} = ${orders.id} ;; relationship: many_to_one }
この例では、users
ビューはベース events
の Explore に結合されており、orders
ビューは拡張の Explore(events_extended
)に結合されています。ただし、ベース events
Explore で定義されている結合は、ベース events
ビューのフィールドである events.user_id
を参照しています。一方、拡張 events_extended
Explore で定義された結合は、フィールド events_extended.test_id
を参照します。ここで、events_extended
は、events
ビューに基づく拡張ビューの名前です。events_extended
Explore の定義の結合で参照される test_id
フィールドは、拡張 events_extended
ビューで次のように定義されます。
include: "events.view.lkml" view: events_extended { extends: [events] dimension: test_id {}
events_extended
Explore で定義された結合は、拡張ビュー events_extended
の名前を参照するため、LookML バリデータは、inaccessible view
エラーを返します。
これに対処するには、拡張 Explore の LookML に from
パラメータを追加して、その値を拡張ビューの名前 events_extended
に設定します。from
パラメータは、生成された SQL 内の元のテーブル名に FROM schema.name AS alias
という別名をつけます。
これは、Explore レベルで from
パラメータを適用する唯一の推奨ユースケースです。
ベース Explore(events
)からの結合参照を分割せずに拡張ビュー(events_extended
)から pull するには、拡張ビューにマッピングする from
パラメータを追加します。
explore: events_extended { extends: [events] from: events_extended join: orders { relationship: many_to_one sql_on: ${events.test_id} = ${orders.id} ;; } }
この例では、LookML from: events_extended
を拡張 Explore の LookML に適用することで、拡張 Explore 内のベースビュー(events
)を引き続き参照しながら、その参照を拡張バージョンのビュー(events_extended
)から pull するようにリダイレクトします。
from
パラメータを使用すると、結合の接頭辞で引き続きベースビュー名 events
を参照できますが、これらの参照は、events
のすべてのフィールドと新しい test_id
を含む拡張ビュー events_extended
から pull されます。