Diese Seite deckt ein Thema für Fortgeschrittene ab und setzt solide LookML-Kenntnisse voraus.
Extends ist eine nützliche LookML-Funktion, mit der Sie DRY-Code (nicht wiederholen) beibehalten können. In Looker können Explores, Views und LookML-Dashboards alle mit dem extends
-Parameter innerhalb einer Modelldatei erweitert werden, wie im folgenden Beispiel gezeigt:
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] }
In diesem Beispiel wird der Parameter extends
innerhalb der Definition des Explores transactions
verwendet, um das Explore orders
zu erweitern.
Das Objekt, das erweitert wird, wird auf dieser Seite als base-Objekt bezeichnet. Das Objekt, das die Erweiterung vornimmt, wird als erweitertes Objekt bezeichnet.
Das Erweitern eines LookML-Objekts ist relativ unkompliziert, wie auf der Dokumentationsseite Code mit Erweiterungen wiederverwenden beschrieben. Es gibt jedoch einige erweiterte Anwendungsfälle, die zu LookML-Referenzfehlern und unerwünschten Objektduplikaten führen können. Auf dieser Seite finden Sie ein Beispiel dafür, wie das Erweitern eines Explores basierend auf einer Ansicht, die eine andere Ansicht erweitert, zu LookML-Referenzfehlern führen kann. Außerdem finden Sie Tipps zum Beheben solcher Probleme.
Anwendungsfall: Explore basierend auf einer erweiterten Ansicht erweitern
Angenommen, Sie möchten das events
-Explore erweitern und möchten, dass die Ansicht, auf der das erweiterte Explore basiert, Felder aus einer Ansicht verwendet, die die Basisansicht events
erweitert. In diesem Beispiel erweitert das Explore events_extended
das Explore extends
, wie im folgenden LookML-Beispiel gezeigt:
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 }
In diesem Beispiel wird die Ansicht users
mit dem Basis-Explore events
und die Ansicht orders
mit dem erweiterten Explore events_extended
verbunden. Der im Basis-Explore „events
“ definierte Join verweist jedoch auf events.user_id
. Dies ist ein Feld aus der Basisansicht events
. Der Join, der im erweiterten Explore events_extended
definiert ist, verweist dagegen auf das Feld events_extended.test_id
, wobei events_extended
der Name einer erweiterten Ansicht basierend auf der Ansicht events
ist. Das Feld test_id
, auf das im Join in der Explore-Definition events_extended
verwiesen wird, ist in der erweiterten Ansicht events_extended
so definiert:
include: "events.view.lkml" view: events_extended { extends: [events] dimension: test_id {}
Da der im Explore events_extended
definierte Join auf den Namen der erweiterten Ansicht (events_extended
) verweist, zeigt der LookML-Validator den Fehler inaccessible view
an.
Um dieses Problem zu beheben, können Sie dem LookML-Parameter für das erweiterte Explore den Parameter from
hinzufügen und seinen Wert auf den Namen der erweiterten Ansicht (events_extended
) festlegen. Der Parameter from
nimmt im generierten SQL-Code einen Alias für den ursprünglichen Tabellennamen als FROM schema.name AS alias
ein.
Dies ist der einzige empfohlene Anwendungsfall für die Anwendung des Parameters from
auf Explore-Ebene.
Wenn Sie Daten aus der erweiterten Ansicht (events_extended
) abrufen möchten, ohne die Join-Referenzen des Basis-Explores (events
) zu unterbrechen, können Sie einen from
-Parameter hinzufügen, der der erweiterten Ansicht zugeordnet ist:
explore: events_extended { extends: [events] from: events_extended join: orders { relationship: many_to_one sql_on: ${events.test_id} = ${orders.id} ;; } }
Wenn Sie in diesem Beispiel den LookML-from: events_extended
auf das LookML für das erweiterte Explore anwenden, können Sie weiterhin auf die Basisansicht (events
) im erweiterten Explore verweisen. Gleichzeitig leiten Sie diese Verweise so weiter, dass sie aus der erweiterten Version dieser Ansicht (events_extended
) abgerufen werden.
Mit dem Parameter from
können Sie in den Join-Präfixen weiterhin auf den Namen der Basisansicht events
verweisen. Diese Verweise werden jedoch aus der erweiterten Ansicht events_extended
abgerufen, die alle Felder in events
sowie das neue Feld test_id
enthält.