Diese Seite behandelt ein fortgeschrittenes Thema und setzt fundierte Kenntnisse von LookML beim Leser voraus.
Extends ist eine wertvolle LookML-Funktion, mit der Sie DRY-LookML-Code (nicht wiederholen) verwalten können. In Looker können Explores, Ansichten und LookML-Dashboards alle mit dem Parameter extends
innerhalb einer Modelldatei erweitert werden. Beispiel:
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
in der Definition des transactions
-Explores verwendet, um das orders
-Explore zu erweitern.
Auf dieser Seite wird das Objekt, das erweitert wird, als Basisobjekt bezeichnet. Das Objekt, das die Erweiterung vornimmt, wird als erweiterndes Objekt bezeichnet.
Das Erweitern eines LookML-Objekts ist ein relativ einfacher Prozess, wie auf der Dokumentationsseite Code mit erweiterten Funktionen 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 erhalten Sie Tipps, wie Sie solche Probleme vermeiden können.
Anwendungsfall: Explore auf Grundlage einer erweiterbaren Ansicht erweitern
Angenommen, Sie möchten das events
-Explore erweitern und die Ansicht, auf der das erweiterte Explore basiert, soll Felder aus einer Ansicht verwenden, die die Basisansicht events
erweitert. In diesem Beispiel erweitert das events_extended
-Explore das extends
-Explore, wie in der folgenden Beispiel-LookML zu sehen:
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 ist die Ansicht users
mit dem Basis-Explore events
verbunden, während die Ansicht orders
mit dem erweiterten Explore events_extended
verbunden ist. Der im Basis-Explore events
definierte Join verweist jedoch jedoch auf events.user_id
, das ein Feld aus der Basisansicht events
ist. Der im erweiterten events_extended
-Explore definierte Join verweist auf das Feld events_extended.test_id
. Dabei ist events_extended
der Name einer erweiterten Ansicht, die auf der Ansicht events
basiert. 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.
Sie können der LookML für das erweiterte Explore den Parameter from
hinzufügen und als Wert den Namen der erweiterten Ansicht, events_extended
, festlegen. Der Parameter from
erhält das Alias des ursprünglichen Tabellennamens im generierten SQL-Code als FROM schema.name AS alias
.
Dies ist der einzige empfohlene Anwendungsfall für die Anwendung des Parameters from
auf Explore-Ebene.
Wenn Sie aus der erweiterten Ansicht (events_extended
) ziehen möchten, ohne die Join-Referenzen aus dem Basis-Explore (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} ;; } }
In diesem Beispiel können Sie durch Anwenden der LookML-Datei from: events_extended
auf die LookML-Datei für das erweiterte Explore weiterhin auf die Basisdatenansicht (events
) im erweiterten Explore verweisen und diese Verweise so umleiten, dass sie aus der erweiterten Version dieser Datenansicht (events_extended
) abgerufen werden.
Mit dem Parameter from
können Sie weiterhin in den Join-Präfixen auf den Namen der Basisdatenansicht events
verweisen. Diese Verweise werden jedoch aus der erweiterten Datenansicht events_extended
abgerufen, die alle Felder in events
sowie das neue Feld test_id
enthält.