LookML-Verfeinerungen

Übersicht

Mit LookML-Verfeinerungen können Sie eine vorhandene Ansicht oder Explore anpassen, ohne die LookML-Datei, die sie enthält, zu bearbeiten. Dies ist ideal für:

Angenommen, Sie haben die folgende Ansichtsdatei in Ihrem Projekt:

view: flights {
  sql_table_name: flightstats.accidents ;;

  dimension: id {
    label: "id"
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }
}

Sie können die Ansicht flights verfeinern, wie im folgenden Beispiel gezeigt: Verwenden Sie den Parameter view mit demselben Ansichtsnamen, aber fügen Sie ein Pluszeichen (+) vor den Namen ein, um darauf hinzuweisen, dass es sich um eine Verfeinerung einer vorhandenen Ansicht handelt.

Durch diese Verfeinerung wird der vorhandenen flights-Ansicht eine air_carrier-Dimension hinzugefügt:

view: +flights {
  dimension: air_carrier {
    type: string
    sql: ${TABLE}.air_carrier ;;
  }
 }

Diese Verfeinerung kann in jede LookML-Datei des Projekts, z. B. in eine Modell- oder Ansichtsdatei, oder in eine eigene, dedizierte LookML-Datei erfolgen. Weitere Informationen zur Funktionsweise finden Sie im Abschnitt Verfeinerungen im LookML-Projekt verwenden.

Die Kombination der Optimierung mit der ursprünglichen LookML führt zu demselben Ergebnis wie die ursprüngliche LookML für die Datenansicht:

view: flights {
  sql_table_name: flightstats.accidents ;;

  dimension: id {
    label: "id"
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }

  dimension: air_carrier {
    type: string
    sql: ${TABLE}.air_carrier ;;
  }
}

In der Looker-Benutzeroberfläche sehen Nutzer die Dimension Fluggesellschaft, als hätten Sie sie der ursprünglichen Datenansichtsdatei hinzugefügt.

Ausführliche Informationen zur Implementierung finden Sie im Abschnitt Beispiel.

Verfeinerungen im Vergleich zu „Erweitert“

Looker unterstützt außerdem die Erweiterung von LookML-Objekten. Das Erweitern ist nützlich, wenn Sie eine neue Kopie einer vorhandenen Ansicht oder eines vorhandenen explorativen Datenanalysetools erstellen möchten, um neue Objekte hinzuzufügen. Sie können beispielsweise eine Basisansicht erstellen, in der alle Felder definiert werden, und dann mehrere neue Ansichten erstellen, die die Basisansicht erweitern. Diese neuen Ansichten können dann geändert werden, um bestimmte Felder in der Basisansicht auszublenden oder um Definitionen oder Labels für die Felder aus der Basisansicht zu ändern.

Verfeinerungen sind nützlich, wenn Sie eine vorhandene Ansicht oder explorative Datenanalyse mit einigen Anpassungen an bestimmten Objekten ändern möchten, aber keine Kopien der Ansicht oder explorativen Datenanalyse erstellen möchten. Optimierungen sind ideal für Situationen, in denen Sie die Basisansicht oder das Explore nicht ändern können oder möchten, und für Situationen, in denen das Erstellen einer neuen Ansicht oder eines Explores umfangreiche Änderungen an anderen LookML-Referenzen erfordern würde. Ein Beispiel für diesen Anwendungsfall finden Sie auf dieser Seite im Abschnitt Beispiel.

Für die meisten Anwendungsfälle sind Verfeinerungen eine einfachere und übersichtlichere Alternative zu extends.

Fortgeschrittene LookML-Entwickler können den Parameter extends in einer LookML-Optimierung verwenden. Weitere Informationen erhalten Sie im Abschnitt Suchfilter können Erweiterungen enthalten auf dieser Seite.

Suchfilter überschreiben die meisten Parameter

Beachten Sie, dass in den meisten Fällen die ursprünglichen Einstellungen eines Objekts durch eine Verfeinerung überschrieben werden. Im folgenden Beispiel enthält die ursprüngliche Ansicht eine ausgeblendete Dimension (hidden: yes):

view: faa_flights {
  dimension: carrier {
    hidden: yes
  }
}

In einer anderen Datei gibt es eine Verfeinerung dieser Dimension mit hidden: no:


include: "/views/faa_flights.view.lkml"

view: +faa_flights {
  dimension: carrier {
    hidden: no
  }
}

Die letzte Verfeinerung hat Vorrang. Daher wird hidden: no angewendet und die Dimension wird in der endgültigen Ansicht angezeigt.

In einigen Fällen sind Suchfilter additiv, anstatt sie zu überschreiben. Weitere Informationen finden Sie im Abschnitt Einige Parameter sind additiv dieser Seite.

Einige Parameter sind additiv

Wenn die Einschränkung denselben Parameter wie das Objekt enthält, das eingeschränkt wird, überschreibt die Einschränkung die Parameterwerte des eingeschränkten Objekts.

Für einige Parameter können Verfeinerungen jedoch additiv sein, d. h., die Werte aus dem Basisobjekt werden in Verbindung mit den Werten aus dem verfeinerten Objekt verwendet.

Die folgenden Parameter sind additiv:

Hier sehen Sie beispielsweise eine Ansicht mit der Dimension name und dem Parameter link:

view: carriers {
  sql_table_name: flightstats.carriers ;;

  dimension: name {
    sql: ${TABLE}.name ;;
    type: string
    link: {
      label: "Google {{ value }}"
      url: "http://www.google.com/search?q={{ value }}"
      icon_url: "http://google.com/favicon.ico"
    }
  }
}

Hier sehen Sie eine Verfeinerung der Ansicht carriers mit der Dimension name mit verschiedenen Werten für den Parameter link:


include: "/views/carriers.view.lkml"

view: +carriers {
  label: "Refined carriers"

  dimension: name {
    sql: ${TABLE}.name ;;
    type: string
    link: {
      label: "Dashboard for {{ value }}"
      url: "https://docsexamples.dev.looker.com/dashboards/307?Carrier={{ value }}"
      icon_url: "https://www.looker.com/favicon.ico"
    }
  }
}

In der verfeinerten Ansicht „carriers“ sind die beiden link-Parameter additiv. Die Dimension „name“ zeigt also beide Links an.

Suchfilter werden der Reihe nach

Ein Objekt kann mehrmals und an mehreren Stellen verfeinert werden. So können Looker-Entwickler Verfeinerungen auf vielfältige Weise einsetzen. Dies bedeutet aber auch, dass Entwickler sehr genau darauf achten müssen, in welcher Reihenfolge die Optimierungen angewendet werden:

  • Innerhalb eines Projekts werden Verfeinerungen in der Reihenfolge angewendet, in der die zugehörigen Dateien eingefügt wurden. Verfeinerungen aus zuletzt eingefügten Dateien überschreiben Verfeinerungen aus zuvor eingefügten Dateien.
  • Innerhalb einer einzelnen Datei werden die Verfeinerungen Zeile für Zeile von oben nach unten angewendet. Verfeinerungen mit der höchsten Zeilennummer werden zuletzt angewendet und überschreiben bei Konflikten alle früheren Verfeinerungen.

Die folgende Ansichtsdatei enthält beispielsweise zwei Optimierungen der Ansicht faa_flights. Die erste Aufschlüsselung blendet eine Dimension (hidden: yes) aus und die zweite Aufschlüsselung zeigt die Dimension (hidden: no) an. Bei solchen Konflikten hat die Aufschlüsselung, die sich am weitesten unten in der Datei befindet, Vorrang:

include: "//e_faa_original/views/faa_flights.view.lkml"

view: +faa_flights {
  dimension: carrier {
    hidden: yes
  }
}

view: +faa_flights {
  dimension: carrier {
    hidden: no
  }
}

Das Gleiche gilt, wenn Sie mehrere Dateien in ein Projekt einbinden: Die Verfeinerungen in der letzten Datei, die in den Includes aufgeführt ist, haben Vorrang. Wenn eine Modelldatei beispielsweise folgende Dateien enthält:

include: "/refinements/distance_analysis.lkml"
include: "/refinements/finishing_touches.lkml"

Alle Suchfilter in der Datei distance_analysis.lkml werden zuerst angewendet. Anschließend werden alle Suchfilter in der Datei finishing_touches.lkml angewendet. Bei Konflikten haben die Suchfilter in der letzten Datei (finishing_touches.lkml) Vorrang.

final: yes verwenden, um weitere Verfeinerungen zu verhindern

Wie bereits beschrieben, kann dasselbe Objekt mehrmals an mehreren Stellen verfeinert werden. Die letzte Verfeinerung überschreibt alle vorherigen Verfeinerungen.

Wenn eine Einschränkung als endgültige Einschränkung für die Ansicht oder das Explore betrachtet werden soll, können Sie ihr das Flag final: yes hinzufügen. Die Looker IDE gibt einen LookML-Fehler zurück, wenn es vorhandene Verfeinerungen gibt, die nach dieser abschließenden Verfeinerung angewendet werden, oder wenn ein Entwickler versucht, einen neuen Verfeinerung hinzuzufügen, der nach dieser abschließenden Verfeinerung angewendet wird. Die zweite Verfeinerung in dieser Ansichtsdatei würde beispielsweise zu einem LookML-Fehler führen, da die vorherige Verfeinerung das Flag final: yes hat:

include: "//e_faa_original/views/faa_flights.view.lkml"

view: +faa_flights {
  final: yes
  dimension: carrier {
    hidden: yes
  }
}

view: +faa_flights {
  dimension: carrier {
    hidden: no
  }
}

Wenn Sie einem Suchfilter das Flag final: yes hinzufügen, können Sie prüfen, ob die Optimierungen in der gewünschten Reihenfolge angewendet werden.

Verfeinerungen können Erweiterungen enthalten

Fortgeschrittene LookML-Entwickler möchten vielleicht einen extends-Parameter in einem LookML-Verfeinerung verwenden, der das erweiterte Objekt dem zu verfeinernden Objekt hinzufügt.

So fassen Sie das Verhalten von extends und Suchfiltern zusammen:

  • Wenn Sie ein Objekt erweitern, wird eine neue Kopie des Objekts erstellt und dann darauf aufgebaut. Sie können beispielsweise eine Basisansicht erstellen, in der alle Felder definiert werden, und dann mehrere neue Ansichten erstellen, die die Basisansicht erweitern. Jede dieser neuen Ansichten enthält eine Kopie der Basisansicht. Dort können Entwickler verschiedene Felder, Filter oder andere Eigenschaften hinzufügen, um die Basisansicht zu ändern. Die Idee ist, dass Sie mit einem Basisobjekt beginnen und es dann auf unterschiedliche Weise in mehreren anderen Objekten verwenden. Auf der Dokumentationsseite Code mit Erweiterungen wiederverwenden finden Sie umfassende Informationen zur Verwendung von Erweiterungen.
  • Durch das Verfeinern eines Objekts wird dem Objekt eine Ebene mit Änderungen hinzugefügt. Anders als beim Erweitern werden dabei jedoch keine mehrfachen Kopien des Objekts erstellt. Die Idee ist, auf einem Basisobjekt aufzubauen, ohne seinen ursprünglichen LookML-Code zu ändern.

Als Beispiel für die standardmäßige Verwendung von Verfeinerungen sehen Sie hier ein Explore mit dem Namen orders und das Explore +orders, mit dem es verfeinert wird:

explore: orders {
  view_name: orders
  # other Explore parameters
}

explore: +orders {
  label: "Orders Information"
  # other Explore parameters to build on the original Explore
}

Außerdem können Sie eine Einschränkung hinzufügen, die eine extends enthält. Hier ist dasselbe orders-Explore, das wir im Beispiel verwendet haben. Zusätzlich gibt es jedoch ein Basis-Explore mit dem Namen users_base. Jetzt hat der Suchfilter +orders einen extends-Parameter, der das users_base bereitstellt:


explore: users_base {
  view_name: users
  extension: required
  # other Explore parameters
}

explore: orders {
  view_name: orders
  # other Explore parameters
}

explore: +orders {
  label: "Orders Information"
  extends: [users_base]
  # other Explore parameters to build on the original Explore
}

Das Besondere daran ist, dass die +orders-Einschränkung eine extends enthält. Das users_base-Explore wird jetzt von der +orders-Ansicht erweitert.

So implementiert Looker extends innerhalb von Optimierungen

Das Erweitern eines Objekts in einer Verfeinerung ist ein erweitertes LookML-Konzept. Bevor Sie extends in einer Verfeinerung verwenden, sollten Sie mit den folgenden Themen vertraut sein:

  • Implementierung von extends in Looker: Wenn ein LookML-Element sowohl im erweitertened-Objekt als auch im erweitertening-Objekt definiert ist, wird die Version im erweiterten Objekt verwendet, es sei denn, der Parameter ist additiv. Weitere Informationen finden Sie auf der Dokumentationsseite Code mit „extends“ wiederverwenden.
  • So implementiert Looker Verfeinerungen: Wenn ein LookML-Element in mehreren Verfeinerungen definiert ist, überschreibt die letzte Verfeinerung vorherige Verfeinerungen. Weitere Informationen finden Sie auf dieser Seite im Abschnitt Optimierungen werden in der Reihenfolge angewendet.

Außerdem sollten Sie verstehen, wie Looker diese Prinzipien kombiniert, um extends für Optimierungen zu implementieren. Dies ist die Reihenfolge, in der Looker implementiert wird. Im Falle von Konflikten überschreibt jeder Schritt den vorherigen:

  1. Werte aus dem extends, der im Objekt angegeben ist
  2. Werte aus dem extends, die in Suchfilter des Objekts angegeben wurden
  3. Werte aus dem Objekt
  4. Werte aus den Verfeinerungen des Objekts

Hier ist ein Beispiel zur Veranschaulichung, bei dem der Wert des Parameters label bei jedem Implementierungsschritt folgt:

explore: orders_base {
  label: "Orders Base"
  view_name: orders
  extension: required
}

explore: users_base {
  label: "Users Base"
  view_name: users
  extension: required
}

explore: orders {
  label: "Orders"
  extends: [orders_base]
}

explore: +orders {
  label: "Orders Refined"
  extends: [users_base]
}

So implementiert Looker in diesem Beispiel den Wert von label für den Explore orders:

  1. Werte aus dem im Objekt angegebenen extends Da das orders-Explore einen extends-Parameter hat, beginnt Looker mit den LookML-Elementen des erweiterten Objekts, in diesem Fall des orders_base-Explores. An dieser Stelle ist der label-Wert „Bestellbasis“.
  2. Werte aus dem extends, die in den Verfeinerungen des Objekts angegeben sind Da orders eine Verfeinerung und die Verfeinerung einen extends-Parameter hat, wendet Looker LookML-Elemente aus der Erweiterung der Verfeinerung an, in diesem Fall das users_base-Explore. An dieser Stelle ist der label-Wert „Nutzerbasis“.
  3. Werte aus dem Objekt Nachdem alle Erweiterungen identifiziert wurden, wendet Looker Elemente aus dem erweiterbaren Objekt an. In diesem Fall ist dies das Explore orders. Bei Konflikten hat das erweiterte Objekt Vorrang. Der Wert für label ist jetzt „Bestellungen“.
  4. Werte aus den Optimierungen des Objekts. Abschließend wendet Looker Elemente aus allen Verfeinerungen des orders-Explores an. Falls Konflikte auftreten, hat das Suchfilterobjekt Vorrang. Der Wert für label ist jetzt „Orders Refined“.

Suchfilter: extends ist additiv

Wie im Abschnitt Parameter zum Überschreiben von Suchfiltern auf dieser Seite beschrieben, überschreiben Suchfilter in der Regel die ursprünglichen Einstellungen eines Objekts. Das ist beim Parameter extends nicht der Fall. Bei Verwendung von extends in einem Suchfilter wird der Wert im Parameter extends an die Liste der Elemente angehängt, die im ursprünglichen Objekt oder in vorherigen Verfeinerungen, falls vorhanden, erweitert wurden. Bei Konflikten hat das letzte Element in der Kette der Erweiterungen Vorrang.

Hier sehen Sie beispielsweise ein Basis-Explore namens orders_base und ein orders-Explore, das die Basis erweitert. Außerdem gibt es die users_base-Erkundung und die +orders-Eingrenzung, die users_base erweitern:

explore: orders_base {
  view_name: orders
  extension: required
  # other Explore parameters
}

explore: users_base {
  view_name: users
  extension: required
  # other Explore parameters
}

explore: orders {
  extends: [orders_base]
  # other Explore parameters to build on the base Explore
}

explore: +orders {
  extends: [users_base]
  # other Explore parameters to build on the base Explores
}

Mit dem orders-Explore wird der orders_base erweitert. Mit den +orders-Optimierungen wird der users_base der Liste extends hinzugefügt. Das Ergebnis ist, dass das +orders-Explore jetzt sowohl orders_base als auch users_base erweitert, als ob dies der ursprüngliche LookML-Code für das Explore wäre:

explore: orders {
  extends: [orders_base, users_base]
}

Bei Konflikten erhält das letzte Element in der Erweiterungskette Priorität. In diesem Beispiel würden die Elemente in users_base alle in Konflikt stehenden Elemente in orders_base überschreiben.

Das Konzept der Erweiterung mehrerer Objekte gleichzeitig wird auf der Dokumentationsseite Code mit „extends“ wiederverwenden erläutert.

Noch ein Hinweis: In diesem Beispiel spielt die Reihenfolge der explore-Parameter keine Rolle. Bei mehreren Verfeinerungen desselben Objekts spielt die Reihenfolge der Verfeinerungen eine Rolle. Wie im Abschnitt Verfeinerungen werden der Reihe nach angewendet auf dieser Seite beschrieben, werden vorherige Verfeinerungen durch die letzte Verfeinerung in einer Datei überschrieben.

Verfeinerungen in LookML-Projekten verwenden

So optimieren Sie Ansichten und Explores in Ihrem Projekt:

  1. Wählen Sie die Ansicht oder das Explore aus, das Sie verfeinern möchten.
  2. Entscheiden Sie, wo Sie die Optimierungen unterbringen möchten. Sie können Verfeinerungen in einer vorhandenen LookML-Datei hinzufügen oder separate LookML-Dateien für Ihre Verfeinerungen erstellen. Ein Beispiel zum Erstellen generischer LookML-Dateien finden Sie unter Weitere Projektdateien im Abschnitt Datentestdatei erstellen.
  3. Verwenden Sie den Parameter include, um Ihre Verfeinerungen in das Modell einzubinden:
    • Die Datei, in der Sie Ihre Verfeinerungen schreiben, muss die Dateien der LookML enthalten, die Sie verfeinern möchten. Die Looker IDE gibt Warnungen aus, wenn Sie versuchen, ein nicht enthaltenes Objekt zu optimieren.
    • Fügen Sie in Ihrer Modelldatei die Dateien ein, in denen Ihre Verfeinerungen definiert sind. Sie können Dateien kombinieren und Einbindungen auf sehr kreative Weise verwenden. Weitere Informationen finden Sie im Abschnitt Mit Suchfiltern Ebenen zu Ihrem Modell hinzufügen auf dieser Seite.

Beispiel

Die Verfeinerung von LookML-Objekten ist eine einfache Möglichkeit, Ansichten und Explores anzupassen, ohne das ursprüngliche LookML bearbeiten zu müssen. Das ist besonders praktisch, wenn die Ansichten und Explores in Ihrem Projekt schreibgeschützt sind, z. B. bei Dateien, die aus anderen Projekten importiert wurden. Hier ein Beispiel für die Optimierung einer explorativen Datenanalyse.

Hier ist der LookML-Code für das Explore aircraft:


explore: aircraft {
  join: aircraft_types {
    type: left_outer
    sql_on: ${aircraft.id} = ${aircraft_types.id} ;;
    relationship: many_to_one
  }

  join: aircraft_engine_types {
    type: left_outer
    sql_on: ${aircraft.id} = ${aircraft_engine_types.id} ;;
    relationship: many_to_one
  }
}

Dieses explorative Analysetool enthält mehrere Ansichten, von denen jede viele Dimensionen hat.

Nun wird die Explore-Datei aircraft in ein anderes LookML-Projekt namens e_faa_refined importiert. Im Projekt e_faa_refined können Sie mit einer Verfeinerung das explorative Analysetool aircraft erheblich vereinfachen.

Da es sich bei aircraft Explore um eine importierte Datei handelt, können Sie sie nicht direkt bearbeiten. Stattdessen können Sie einen Suchfilter hinzufügen. Hier ist ein Beispiel für eine separate Datei namens refinements.lkml, die diese LookML enthält:

include: "//e_faa_original/Explores/aircraft.explore.lkml"

explore: +aircraft {
  label: "Aircraft Simplified"
  fields: [aircraft.aircraft_serial, aircraft.name, aircraft.count]
}

Die Datei refinements.lkml enthält Folgendes:

  • Den include-Parameter, um die ursprüngliche aircraft.explore.lkml-Datei aus dem importierten Projekt zu importieren. Weitere Informationen dazu, wie auf importierte Projektdateien verwiesen wird, finden Sie auf der Dokumentationsseite Dateien aus anderen Projekten importieren.
  • Optimierungen des Explores „aircraft“:
    • Das Zeichen + vor dem Namen des Explores gibt an, dass es sich um eine Verfeinerung eines vorhandenen Explores handelt.
    • Durch den Parameter label wird das Label des Explores in „Vereinfachtes Flugzeug“ geändert.
    • Der Parameter fields gibt an, dass im Explore nur drei Felder angezeigt werden.

Das Endergebnis sieht so aus, als ob dies die ursprünglichen aircraft-Explore- und aircraft-Ansichten wäre:

explore: aircraft {
  label: "Aircraft Simplified"
  }

view: aircraft {
  sql_table_name: flightstats.aircraft ;;

  dimension: aircraft_serial {
    type: string
    sql: ${TABLE}.aircraft_serial ;;
  }

  dimension: name {
    type: string
    sql: ${TABLE}.name ;;
  }

  measure: count {
    type: count
  }
}

Ein Beispiel dafür, wie Sie mithilfe von Verfeinerungen eine einzelne Ansicht für mehrere Anwendungsfälle anpassen, finden Sie im Rezept Codewiederverwendbarkeit mit DRY LookML maximieren: Eine einzelne Basisansicht für mehrere Anwendungsfälle anpassen.

Andere Anwendungsfälle für Optimierungen

Wie bereits erwähnt, sind Verfeinerungen ideal für die Anpassung von schreibgeschützten LookML-Objekten wie Looker-Blöcken oder importierten Dateien.

Sobald Sie jedoch ein Gefühl dafür bekommen, wie Sie Verfeinerungen hinzufügen und in Ihre Modelle einbinden, können Sie mit Ihren Projekten sehr coole Dinge tun, wie in den folgenden Beispielen beschrieben.

Analysen mithilfe von Optimierungen hinzufügen

Sie können Suchfilter verwenden, um Ihrem Modell Analysen hinzuzufügen, ohne die ursprünglichen LookML-Dateien zu berühren. Wenn es beispielsweise ein Projekt gibt, in dem die Ansichten und Explores aus Tabellen in Ihrer Datenbank generiert und in einer LookML-Datei namens faa_basic.lkml gespeichert werden, können Sie eine faa_analysis.lkml-Datei erstellen, in der Sie Verfeinerungen zum Hinzufügen von Analysen verwenden. Hier ein Beispiel für eine neue abgeleitete Tabelle namens distance_stats mit einer Entfernungsanalyse. In diesem Beispiel sind Optimierungen des vorhandenen flights-Explores aus der Datei faa_basic.lkml zu sehen, bei denen die abgeleitete Tabelle distance_stats mit dem flights-Explore zusammengeführt wird. Außerdem wurde die vorhandene Ansicht flights am Ende des Beispiels optimiert, um neue Felder aus der Analyse hinzuzufügen:

include: "faa_basic.lkml"

explore: +flights {
  join: distance_stats {
    relationship: one_to_one
    type: cross
  }
}

view: distance_stats {
  derived_table: {
    explore_source: flights {
      bind_all_filters: yes
      column: distance_avg {field:flights.distance_avg}
      column: distance_stddev {field:flights.distance_stddev}
    }
  }
  dimension: avg {
    type:number
    sql: CAST(${TABLE}.distance_avg as INT64) ;;
  }
  dimension: stddev {
    type:number
    sql: CAST(${TABLE}.distance_stddev as INT64) ;;
  }
}
view: +flights {
  measure: distance_avg {
    type: average
    sql: ${distance} ;;
  }
  measure: distance_stddev {
    type: number
    sql: STDDEV(${distance}) ;;
  }
  dimension: distance_tiered2 {
    type: tier
    sql: ${distance} ;;
    tiers: [500,1300]
  }
}

Ihrem Modell mithilfe von Verfeinerungen Ebenen hinzufügen

Ein weiterer interessanter Anwendungsfall für Verfeinerungen ist das Hinzufügen von Ebenen zu Ihrem Projekt. Sie können mehrere Suchfilterdateien erstellen und diese dann strategisch einbinden, um Ebenen hinzuzufügen.

Im FAA-Projekt gibt es beispielsweise eine faa_raw.lkml-Datei, die alle Ansichten und Explores enthält, die aus Tabellen in Ihrer Datenbank generiert wurden. Diese Datei enthält eine Ansicht für jede Tabelle in der Datenbank mit jeweils einer Dimension für jede Datenbankspalte.

Zusätzlich zur Rohdatei können Sie eine faa_basic.lkml-Datei erstellen, um eine neue Ebene mit grundlegenden Verfeinerungen hinzuzufügen, z. B. Joins zu Ihren Explores oder Messwerte zu Ihren Ansichten, wie hier:

include: "faa_raw.lkml"

explore: +flights {
  join: carriers {
    sql_on: ${flights.carrier} = ${carriers.name} ;;
  }
}

view: +flights {
  measure: total_seats {
    type: sum
    sql: ${aircraft_models.seats} ;;
  }
}

Anschließend können Sie eine faa_analysis.layer.lkml-Datei hinzufügen, um eine neue Ebene mit Analysen hinzuzufügen. Ein Beispiel für eine Analysedatei finden Sie im Unterabschnitt Verfeinerungen zum Hinzufügen von Analysen verwenden.

Fügen Sie dann einfach alle Verfeinerungsdateien in die Modelldatei ein. Sie können der Modelldatei auch Verfeinerungen hinzufügen, um Ihre Ansichten auf die Datenbanktabellen zu verweisen, auf die Sie verweisen möchten:

connection: "publicdata_standard_sql"

include: "faa_raw.lkml"
include: "faa_basic.lkml"
include: "faa_analysis.lkml"

view: +flights {
  sql_table_name: lookerdata.faa.flights;;
}
view: +airports {
  sql_table_name: lookerdata.faa.airports;;
}
view: +aircraft {
  sql_table_name: lookerdata.faa.aircraft;;
}
view: +aircraft_models{
  sql_table_name: lookerdata.faa.aircraft_models;;
}
view: +carriers {
  sql_table_name: lookerdata.faa.carriers;;
}

Sie können diese Modelldatei duplizieren und auf andere Datenbanktabellen verweisen. Oder Sie fügen verschiedene, von Ihnen erstellte Suchfilterdateien hinzu, um andere Ebenen zu definieren, die Sie in Ihrem Modell verwenden möchten.

Verfeinerungen für PDTs verwenden

Wie im Abschnitt Suchfilter im Vergleich zu Erweiterungen auf dieser Seite beschrieben, erstellt eine Erweiterung eine neue Kopie des Objekts, das erweitert wird. Im Fall von persistenten abgeleiteten Tabellen (PDTs) sollten Sie keine Erweiterungen verwenden, da mit jeder Erweiterung einer PDT eine neue Kopie der Tabelle in Ihrer Datenbank erstellt wird.

Sie können der Ansicht der PDT jedoch Verfeinerungen hinzufügen, da durch Verfeinerungen keine neue Kopie des verfeinerten Objekts erstellt wird.

Metadaten zum Anzeigen von Suchfiltern für ein Objekt verwenden

Sie können in der Looker IDE auf einen explore- oder view-Parameter klicken und im Metadatenbereich nach Verfeinerungen für das Objekt suchen. Weitere Informationen finden Sie auf der Dokumentationsseite Metadaten für LookML-Objekte.

Wichtige Punkte

Projekte mit Lokalisierung

Beachten Sie beim Verfeinern eines Objekts, dass die Lokalisierungsregeln auch für Ihre Optimierungen gelten. Wenn Sie ein Objekt verfeinern und dann neue Bezeichnungen oder Beschreibungen definieren, sollten Sie Lokalisierungsdefinitionen in den Gebietsschema-Zeichenfolgendateien Ihres Projekts angeben. Weitere Informationen finden Sie auf der Dokumentationsseite Ihr LookML-Modell lokalisieren.