Fehlerbehebung bei einem Beispiel für einen erweiterten Anwendungsfall

Diese Seite behandelt ein fortgeschrittenes Thema und setzt fundierte Kenntnisse von LookML voraus.

Erweitert ist eine nützliche LookML-Funktion, mit der Sie DRY-LookML-Code (Don't Repeat Yourself, d. h. „Wiederhole dich nicht“) beibehalten können. In Looker können Explores, Ansichten und LookML-Dashboards in einer Modelldatei mit dem Parameter extends erweitert werden, wie im folgenden 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 recht einfach. Weitere Informationen finden Sie auf der Dokumentationsseite Code mit „extends“ wiederverwenden. 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 auf der Grundlage einer Ansicht, die eine andere Ansicht erweitert, zu LookML-Referenzfehlern führen kann. Außerdem erhalten Sie Tipps, wie Sie solche Probleme beheben 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 Explore „events“ definierte Join verweist jedoch auf „events.user_id“, ein Feld aus der Basisansicht „events“. 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 in der Join-Beschreibung in der events_extended-Explore-Definition verwiesen wird, ist in der erweiterten events_extended-Ansicht so definiert:

include: "events.view.lkml"
view: events_extended {
  extends: [events]

  dimension: test_id {}

Da die im Explore events_extended definierte Verbindung 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 gibt im generierten SQL-Code den Alias FROM schema.name AS alias für den ursprünglichen Tabellennamen an.

Dies ist der einzige empfohlene Anwendungsfall für die Anwendung des Parameters from auf explorativer Ebene.

Wenn Sie Daten aus der erweiterten Datenansicht (events_extended) abrufen möchten, ohne die Join-Referenzen aus der zugrunde liegenden explorativen Datenanalyse (events) zu brechen, können Sie einen from-Parameter hinzufügen, der der erweiterten Datenansicht 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 Basisansicht (events) im erweiterten Explore verweisen und diese Verweise so umleiten, dass sie aus der erweiterten Version dieser Ansicht (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.