Fehlerbehebung bei einem Beispiel für einen erweiterten Anwendungsfall

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.