Fehlerbehebung an einem Beispiel für einen erweiterten erweiterten Anwendungsfall

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.