Ü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:
- Projekte mit Looker Blocks, die vordefinierte LookML-Elemente verwenden
- Projekte, die Dateien aus anderen Projekten importieren
- Projekte, bei denen Sie häufig Dateien aus Tabellen in Ihrer Datenbank generieren müssen
- Situationen, in denen Sie LookML zwischen Modellen oder Projekten teilen und gleichzeitig Anpassungen an jedem Ort vornehmen möchten (Hub-and-Spoke-Konfigurationen)
Angenommen, Ihr Projekt enthält die folgende Ansichtsdatei:
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.
Bei dieser Optimierung wird der vorhandenen Ansicht flights
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.
Der Verfeinerung kombiniert mit dem ursprünglichen LookML-Code führt zu dem Ergebnis, als ob dies der ursprüngliche LookML-Code für die Ansicht wäre:
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, so als hätten Sie sie der ursprünglichen Ansichtsdatei hinzugefügt.
Ausführliche Informationen zur Implementierung finden Sie im Abschnitt Beispiel.
Verfeinerungen im Vergleich zu „Erweitert“
Looker unterstützt auch die Erweiterung von LookML-Objekten. Das Erweitern ist nützlich, wenn Sie eine neue Kopie einer vorhandenen Ansicht oder eines vorhandenen Explores 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.
Optimierungen sind nützlich, wenn Sie eine vorhandene Ansicht oder ein Explore mit einigen Änderungen oder Anpassungen bestimmter Objekte ändern, aber keine Kopien der Ansicht oder des Explores 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 im Abschnitt Beispiel auf dieser Seite.
Für die meisten Anwendungsfälle sind Verfeinerungen eine einfachere und übersichtlichere Alternative zu extends
.
Fortgeschrittene LookML-Entwickler möchten möglicherweise den extends
-Parameter in einem LookML-Verfeinerung verwenden. Weitere Informationen erhalten Sie im Abschnitt Suchfilter können Erweiterungen enthalten auf dieser Seite.
Suchfilter überschreiben die meisten Parameter
In den meisten Fällen überschreibt eine Suchoptimierung die ursprünglichen Einstellungen eines Objekts. 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
}
}
Da der letzte Suchfilter Vorrang hat, 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 der Suchfilter denselben Parameter wie das zu optimierende Objekt enthält, werden die Parameterwerte des verfeinerten Objekts durch die Suchfilter überschrieben.
Optimierungen können jedoch für einige Parameter additiv sein. Das bedeutet, dass die Werte des Basisobjekts zusammen mit den Werten aus dem verfeinerten Objekt verwendet werden.
Die folgenden Parameter sind additiv:
Für Dimensionen und Messwerte:
Parameter:
Für abgeleitete Tabellen:
Für Ansichten:
extends
(Weitere Informationen finden Sie im Abschnitt Suchfilterextends
sind additiv auf dieser Seite.)
Für Explores:
access_filter
aggregate_table
extends
(Weitere Informationen finden Sie im Abschnitt Suchfilterextends
sind additiv auf dieser Seite.)join
query
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 mehrfach und an mehreren Stellen verfeinert werden, sodass Looker-Entwickler Verfeinerungen auf viele kreative Weise nutzen können. Das bedeutet aber auch, dass Entwickler die Reihenfolge, in der Verfeinerungen angewendet werden, genau beachten müssen:
- Innerhalb eines Projekts werden Suchfilter in der Reihenfolge angewendet, in der ihre Dateien enthalten sind. Suchfilter der zuletzt enthaltenen Dateien überschreiben Suchfilter der zuvor enthaltenen Dateien.
- Innerhalb einer einzelnen Datei werden Verfeinerungen Zeile für Zeile abwärts angewandt. Suchfilter mit der höchsten Zeilennummer werden zuletzt angewendet und überschreiben alle früheren Suchfilter, falls Konflikte bestehen.
Die folgende Ansichtsdatei enthält beispielsweise zwei Optimierungen der Ansicht faa_flights
. Der erste Suchfilter blendet eine Dimension aus (hidden: yes
) und der zweite Suchfilter zeigt die Dimension (hidden: no
). Bei solchen Konflikten hat die Suchfilter, die in der Datei am weitesten unten liegen, Vorrang:
include: "//e_faa_original/views/faa_flights.view.lkml"
view: +faa_flights {
dimension: carrier {
hidden: yes
}
}
view: +faa_flights {
dimension: carrier {
hidden: no
}
}
Die Logik für die Einbeziehung mehrerer Dateien in ein Projekt ist ähnlich: Suchfilter in der letzten unter den Einfügungen aufgeführten Datei 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 Sie einen Suchfilter haben, der als endgültige Verfeinerung für die Ansicht oder das Explore betrachtet werden soll, können Sie dem Suchfilter 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. Der zweite Suchfilter in dieser Ansichtsdatei würde beispielsweise einen LookML-Fehler erzeugen, da der vorherige Suchfilter das Flag final: yes
enthält:
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.
Suchfilter 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:
- Beim Erweitern eines Objekts wird eine neue Kopie des Objekts erstellt und 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. Entwickler können von dort aus verschiedene Felder, Filter oder andere Eigenschaften hinzufügen, um den Inhalt der 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
}
Darüber hinaus können Sie einen Suchfilter hinzufügen, der ein extends
enthält. Aufbauend auf dem Beispiel ist hier das gleiche orders
-Explore. 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 dabei ist, dass der Suchfilter +orders
eine extends
enthält. Das Ergebnis ist, dass die Ansicht „+orders
“ jetzt das Explore „users_base
“ erweitert.
So implementiert Looker extends
innerhalb von Optimierungen
Das Erweitern eines Objekts innerhalb einer Verfeinerung ist ein erweitertes LookML-Konzept. Bevor Sie extends
in einer Suchfilter verwenden, sollten Sie mit 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 erweiterten Erweiterungen wiederverwenden. - So implementiert Looker Verfeinerungen: Wenn ein LookML-Element in mehreren Verfeinerungen definiert ist, überschreibt die letzte Verfeinerung vorherige Verfeinerungen. Weitere Informationen finden Sie im Abschnitt Suchfilter werden der Reihe nach angewendet auf dieser Seite.
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:
- Werte aus dem
extends
, der im Objekt angegeben ist - Werte aus dem
extends
, die in Suchfilter des Objekts angegeben wurden - Werte aus dem Objekt
- 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
:
- Werte aus dem
extends
, der im Objekt angegeben ist. Da dasorders
-Explore einenextends
-Parameter hat, beginnt Looker mit den LookML-Elementen aus dem Objekt, das erweitert wird. In diesem Fall ist dies dasorders_base
-Explore. An dieser Stelle ist derlabel
-Wert „Bestellbasis“. - Werte aus dem
extends
, die in Optimierungen des Objekts angegeben wurden. Daorders
einen Suchfilter und der Verfeinerung einenextends
-Parameter hat, wendet Looker dann LookML-Elemente aus der Erweiterung des Suchfilters an. In diesem Fall ist das das Exploreusers_base
. An dieser Stelle ist derlabel
-Wert „Nutzerbasis“. - 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
. Wenn Konflikte bestehen, hat das erweiterbare Objekt Vorrang. Jetzt ist derlabel
-Wert „Orders“. - Werte aus den Optimierungen des Objekts. Schließlich wendet Looker Elemente aus allen Verfeinerungen des
orders
-Explores an. Falls Konflikte auftreten, hat das Suchfilterobjekt Vorrang. Jetzt lautet der Wertlabel
also „Verfeinert Bestellungen“.
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. Dies trifft nicht auf den Parameter extends
zu. 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 erhält das letzte Element in der Erweiterungskette Priorität.
Hier sehen Sie beispielsweise ein Basis-Explore mit dem Namen orders_base
und ein orders
-Explore, das die Basis erweitert. Außerdem gibt es einen users_base
-Explore und den +orders
-Suchfilter, der users_base
erweitert:
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
}
Das Explore orders
erweitert den orders_base
, dann fügt die Suchfilter +orders
die users_base
zur extends
-Liste hinzu. 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 überschreiben die Elemente in users_base
alle in Konflikt stehenden Elemente in orders_base
.
Das Konzept der gleichzeitigen Erweiterung mehrerer Objekte wird auf der Dokumentationsseite Code mit Erweiterungen wiederverwenden erläutert.
Noch ein letzter 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 Suchfilter werden der Reihenfolge nach angewendet auf dieser Seite beschrieben, überschreibt die letzte Verfeinerung in einer Datei vorherige Verfeinerungen.
Verfeinerungen in Ihrem LookML-Projekt verwenden
So optimieren Sie Ansichten und Explores in Ihrem Projekt:
- Wählen Sie die Ansicht oder das Explore aus, die Sie eingrenzen möchten.
- Entscheiden Sie, wo Ihre Optimierungen gespeichert werden sollen. Sie können in jeder vorhandenen LookML-Datei Verfeinerungen hinzufügen oder separate LookML-Dateien für Ihre Verfeinerungen erstellen. Ein Beispiel zum Erstellen generischer LookML-Dateien finden Sie auf der Dokumentationsseite Informationen zu anderen Projektdateien unter Datentestdatei erstellen.
- Verwenden Sie den Parameter
include
, um die Optimierungen in Ihr Modell zu integrieren:- In der Datei, in die Sie Ihre Optimierungen schreiben, müssen Sie die Dateien des LookML-Codes angeben, den Sie verfeinern. Die Looker IDE gibt Warnungen aus, wenn Sie versuchen, ein nicht enthaltenes Objekt zu optimieren.
- Fügen Sie die Dateien, in denen Ihre Optimierungen definiert sind, in Ihre Modelldatei ein. 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 die 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 ist ein Beispiel für die Optimierung eines Explores.
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 Explore enthält mehrere Ansichten, die jeweils viele Dimensionen haben.
Jetzt importiert ein weiteres LookML-Projekt namens e_faa_refined
die Explore-Datei aircraft
. Im Projekt e_faa_refined
können Sie einen Suchfilter verwenden, um das aircraft
-Explore erheblich zu vereinfachen.
Da das aircraft
-Explore eine importierte Datei ist, können Sie es nicht direkt bearbeiten. Stattdessen können Sie einen Suchfilter hinzufügen. Hier ist ein Beispiel für eine separate Datei namens refinements.lkml
, die diesen LookML-Code 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ünglicheaircraft.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 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 für die Verwendung von Verfeinerungen zur Anpassung einer einzelnen Ansicht für mehrere Anwendungsfälle finden Sie im Cookbook-Rezept Die Wiederverwendbarkeit von Code 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.
Wenn Sie jedoch mit dem Hinzufügen von Verfeinerungen und deren Einbindung in Ihre Modelle vertraut sind, 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 mit dem Namen faa_basic.lkml
gespeichert werden, können Sie eine faa_analysis.lkml
-Datei erstellen, in der Sie Optimierungen verwenden, um Analysen hinzuzufügen. Hier ist ein Beispiel für eine neue abgeleitete Tabelle namens distance_stats
mit einer Entfernungsanalyse. Dieses Beispiel zeigt eine Verfeinerung des vorhandenen flights
-Explores aus der faa_basic.lkml
-Datei, die die abgeleitete Tabelle distance_stats
mit dem flights
-Explore verbindet. 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]
}
}
Ebenen mit Suchfiltern zu Ihrem Modell 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 einfügen, 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.
Neben der Rohdatei können Sie eine faa_basic.lkml
-Datei erstellen, um eine neue Ebene mit grundlegenden Optimierungen hinzuzufügen. So können Sie beispielsweise Joins zu Ihren Explores hinzufügen oder Messwerte zu Ihren Ansichten hinzufügen. Beispiel:
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.
Nun müssen Sie nur noch alle Suchfilterdateien in die Modelldatei aufnehmen. Sie können die Modelldatei auch verwenden, um Verfeinerungen hinzuzufü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 die Verfeinerungen des Objekts aufrufen. 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 LookML-Modell lokalisieren.