Übersicht
Mit LookML-Optimierungen können Sie eine vorhandene Ansicht oder ein Explore anpassen, ohne die zugehörige LookML-Datei zu bearbeiten. Das ist ideal für:
- Projekte mit Looker-Blöcken, die vordefinierte LookML-Codeteile verwenden
- Projekte, in denen Dateien aus anderen Projekten importiert werden
- 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 an beiden Stellen Anpassungen vornehmen möchten (Speichen-Hub-Konfigurationen)
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 flights
-Ansicht wie im folgenden Beispiel verfeinern: Verwenden Sie den Parameter view
mit demselben Ansichtsnamen, fügen Sie aber vor dem Namen ein Pluszeichen (+
) hinzu, um anzugeben, 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 eine beliebige LookML-Datei im Projekt eingefügt werden, z. B. in eine Modell- oder Ansichtsdatei oder in eine eigene LookML-Datei. Weitere Informationen finden Sie im Abschnitt Verfeinerungen in Ihrem 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.
Weitere Informationen zur Implementierung finden Sie im Abschnitt Beispiel.
Verfeinerungen im Vergleich zu Erweiterungen
Looker unterstützt auch die Erweiterung von LookML-Objekten. Das Erweitern ist nützlich, wenn Sie eine neue Kopie einer vorhandenen Ansicht oder explorativen Datenanalyse erstellen möchten, um ihr neue Objekte hinzuzufügen. Sie können beispielsweise eine Basisansicht erstellen, in der alle Felder definiert sind, und dann mehrere neue Ansichten erstellen, die die Basisansicht erweitern. Diese neuen Ansichten können dann so geändert werden, dass bestimmte Felder in der Basisansicht ausgeblendet werden oder Definitionen oder Labels für die Felder aus der Basisansicht geändert werden.
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. Verfeinerungen eignen sich 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 neuen 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 finden Sie auf dieser Seite im Abschnitt Verfeinerungen können Erweiterungen enthalten.
Mit den Verfeinerungen werden die meisten Parameter überschrieben.
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 werden die Daten durch die Einschränkungen addiert, anstatt überschrieben zu werden. Weitere Informationen finden Sie auf dieser Seite im Abschnitt Einige Parameter sind additiv.
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:
Für Dimensionen und Messwerte:
Für Parameter:
Für abgeleitete Tabellen:
Aufrufe:
extends
(Weitere Informationen finden Sie auf dieser Seite im Abschnitt Optimierungextends
sind additiv.)
Für explorative Datenanalysen:
access_filter
aggregate_table
extends
(Weitere Informationen finden Sie auf dieser Seite im Abschnitt Optimierungswerteextends
sind additiv.)join
query
Hier sehen Sie beispielsweise eine Ansicht mit einer name
-Dimension mit einem link
-Parameter:
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 carriers
-Ansicht mit einer name
-Dimension, die unterschiedliche Werte für den Parameter link
hat:
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 übergeordneten carriers
-Ansicht sind die beiden link
-Parameter additiv, sodass in der Dimension name
beide Links angezeigt werden.
Suchfilter werden der Reihe nach angewendet.
Ein Objekt kann mehrmals und an mehreren Stellen verfeinert werden. So können Looker-Entwickler Verfeinerungen auf vielfältige Weise nutzen. 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.
In der folgenden Ansichtsdatei gibt es beispielsweise zwei Verfeinerungen der faa_flights
-Ansicht. 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 weiter unten in der Datei steht, 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. Angenommen, eine Modelldatei enthält die folgenden Dateien:
include: "/refinements/distance_analysis.lkml"
include: "/refinements/finishing_touches.lkml"
Alle Verfeinerungen in der Datei distance_analysis.lkml
werden zuerst angewendet, gefolgt von allen Verfeinerungen in der Datei finishing_touches.lkml
. Bei Konflikten haben die Verfeinerungen in der letzten Datei, finishing_touches.lkml
, Vorrang.
final: yes
verwenden, um weitere Verfeinerungen zu verhindern
Wie bereits beschrieben, kann dasselbe Objekt an mehreren Stellen mehrmals verfeinert werden. Die letzte Verfeinerung überschreibt alle vorherigen Verfeinerungen.
Wenn Sie eine Einschränkung haben, die 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 letzten Verfeinerung angewendet würden, oder wenn ein Entwickler versucht, eine neue Verfeinerung hinzuzufügen, die nach dieser letzten Verfeinerung angewendet würde. 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 einer Einschränkung das Flag final: yes
hinzufügen, können Sie prüfen, ob die Einschränkungen in der gewünschten Reihenfolge angewendet werden.
Verfeinerungen können Erweiterungen enthalten
Fortgeschrittene LookML-Entwickler können einen extends
-Parameter in einer LookML-Verfeinerung verwenden, um dem zu verfeinernden Objekt das erweiterte Objekt hinzuzufügen.
So lässt sich das Verhalten von extends
und die Verfeinerungen zusammenfassen:
- 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 sind, 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. Sie beginnen mit einem Basisobjekt und verwenden es dann auf unterschiedliche Weise in mehreren anderen Objekten. Eine ausführliche Erläuterung der Funktionsweise von extends finden Sie auf der Dokumentationsseite Code mit extends wiederverwenden.
- Durch das Optimieren eines Objekts wird dem Objekt eine weitere Ebene von Änderungen hinzugefügt. Im Gegensatz zum Erweitern werden dabei jedoch keine mehrere Kopien des Objekts erstellt. Das Ziel besteht darin, auf einem Basisobjekt aufzubauen, ohne die ursprüngliche LookML zu ändern.
Hier ein Beispiel für die Standardnutzung von Verfeinerungen: ein Explore namens orders
und das +orders
-Explore, das es verfeinert:
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-Diagramm. Außerdem gibt es ein Basis-Explore namens users_base
. Die +orders
-Verfeinerung hat jetzt einen extends
-Parameter, der users_base
einbezieht:
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 bedeutet, dass die Ansicht +orders
das Explore users_base
jetzt erweitert.
So werden extends
in Looker in Verfeinerungen implementiert
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 erweiterten als auch im erweiternden 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. - Implementierung von Verfeinerungen in Looker: Wenn ein LookML-Element in mehreren Verfeinerungen definiert ist, werden die vorherigen Verfeinerungen durch die letzte Verfeinerung überschrieben. Weitere Informationen finden Sie auf dieser Seite im Abschnitt Optimierungen werden in der Reihenfolge angewendet.
Schließlich sollten Sie wissen, wie Looker diese Prinzipien kombiniert, um extends
für Verfeinerungen zu implementieren. In Looker wird die folgende Reihenfolge implementiert. Bei Konflikten wird jeder Schritt durch den vorherigen überschrieben:
- Werte aus dem im Objekt angegebenen
extends
- Werte aus dem
extends
, die in den Verfeinerungen des Objekts angegeben wurden - Werte aus dem Objekt
- Werte aus den Verfeinerungen des Objekts
Hier ein Beispiel, das den Wert des Parameters label
in den einzelnen Schritten der Implementierung verfolgt:
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 label
für das Explore orders
:
- Werte aus dem im Objekt angegebenen
extends
Da dasorders
-Explore einenextends
-Parameter hat, beginnt Looker mit den LookML-Elementen des erweiterten Objekts, in diesem Fall desorders_base
-Explores. In diesem Fall ist der Wert fürlabel
„Orders Base“. - Werte aus dem
extends
, die in den Verfeinerungen des Objekts angegeben sind Daorders
eine Verfeinerung und diese Verfeinerung einenextends
-Parameter hat, wendet Looker LookML-Elemente aus der Erweiterung der Verfeinerung an, in diesem Fall dasusers_base
-Explore. In diesem Fall lautet derlabel
-Wert „Nutzerbasis“. - Werte aus dem Objekt Nachdem alle Erweiterungen berücksichtigt wurden, wendet Looker Elemente aus dem erweiterten Objekt an, in diesem Fall das
orders
-Explore. Bei Konflikten hat das erweiterte Objekt Vorrang. Der Wert fürlabel
ist jetzt „Bestellungen“. - Werte aus den Verfeinerungen des Objekts Abschließend wendet Looker Elemente aus allen Verfeinerungen des
orders
-Explores an. Bei Konflikten hat das Objekt mit den Spezifikationen Vorrang. Der Wert fürlabel
ist jetzt „Orders Refined“.
Optimierung extends
ist additiv
Wie im Abschnitt Parameter durch Einschränkungen überschreiben auf dieser Seite beschrieben, werden die ursprünglichen Einstellungen eines Objekts in der Regel durch Einschränkungen überschrieben. Das ist beim Parameter extends
nicht der Fall. Wenn extends
in einer Verfeinerung verwendet wird, wird der Wert im Parameter extends
der Liste der Elemente angehängt, die im ursprünglichen Objekt oder in vorherigen Verfeinerungen erweitert wurden (falls vorhanden). 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 explorative Datenanalyse users_base
und die +orders
-Verfeinerung, die 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
}
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 wäre dies die ursprüngliche LookML für das Explore:
explore: orders {
extends: [orders_base, users_base]
}
Bei Konflikten hat das letzte Element in der Kette der Erweiterungen Vorrang. 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 jedoch 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 verfeinern Sie Ansichten und Explores in Ihrem Projekt:
- Wählen Sie die Ansicht oder das Explore aus, das Sie verfeinern möchten.
- 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.
- 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. In der Looker-IDE werden Warnungen angezeigt, wenn Sie versuchen, ein Objekt zu verfeinern, das nicht enthalten ist.
- Fügen Sie in Ihrer Modelldatei die Dateien ein, in denen Ihre Verfeinerungen definiert sind. Sie können Dateien kombinieren und Einschlüsse auf sehr kreative Weise verwenden. Weitere Informationen finden Sie auf dieser Seite im Abschnitt Mit Verfeinerungen Ebenen zum Modell hinzufügen.
Beispiel
LookML-Objekte zu verfeinern, ist eine einfache Möglichkeit, Ansichten und Explores anzupassen, ohne die ursprüngliche LookML bearbeiten zu müssen. Das ist besonders praktisch, wenn Ihre Datenansichten und explorativen Datenanalysen in Ihrem Projekt nur 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 die LookML für die explorative Datenanalyse 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
}
}
Diese explorative Datenanalyse 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 eine Einschränkung 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:
- Der Parameter
include
, um die ursprünglicheaircraft.explore.lkml
-Datei aus dem importierten Projekt einzufügen. Weitere Informationen zum Verweis auf importierte Projektdateien finden Sie auf der Dokumentationsseite Dateien aus anderen Projekten importieren. - Verfeinerungen bei der explorativen Datenanalyse für
aircraft
:- Das Zeichen
+
vor dem Namen des Explores gibt an, dass es sich um eine Verfeinerung eines vorhandenen Explores handelt. - Mit dem Parameter
label
wird das Label des explorativen Datenanalysetools in „Vereinfachte Flugzeuge“ geändert. - Der Parameter
fields
gibt an, dass im Explore nur drei Felder angezeigt werden.
- Das Zeichen
Das Endergebnis sieht so aus, als wäre es die ursprüngliche aircraft
-Suchanfrage und aircraft
-Ansicht:
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.
Weitere Anwendungsfälle für Optimierungen
Wie bereits erwähnt, eignen sich Verfeinerungen ideal zur 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 Verfeinerungen hinzufügen
Mithilfe von Verfeinerungen können Sie Ihrem Modell Analysen hinzufügen, ohne die ursprünglichen LookML-Dateien zu ändern. Wenn in einem Projekt beispielsweise 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 Analysen mithilfe von Verfeinerungen hinzufügen. 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. Unten im Beispiel wird die vorhandene flights
-Ansicht 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 Rasterdateien erstellen und dann strategisch einbinden, um Ebenen hinzuzufügen.
Im FAA-Projekt gibt es beispielsweise eine faa_raw.lkml
-Datei mit allen Ansichten und Explores, die aus Tabellen in Ihrer Datenbank generiert wurden. Diese Datei enthält eine Ansicht für jede Tabelle in der Datenbank, jeweils mit 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} ;;
}
}
Sie können dann 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 Abschnitt Mit Verfeinerungen Analysen hinzufügen.
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 verschiedene Datenbanktabellen verweisen oder verschiedene Verfeinerungsdateien einschließen, die Sie erstellt haben, um andere Ebenen in Ihrem Modell zu definieren.
Verfeinerungen für PDTs verwenden
Wie im Abschnitt Optimierungen im Vergleich zu Erweiterungen auf dieser Seite beschrieben, wird durch eine Erweiterung eine neue Kopie des erweiterten Objekts erstellt. Bei persistenten abgeleiteten Tabellen (PDTs) sollten Sie keine Erweiterungen verwenden, da bei jeder Erweiterung einer PDT eine neue Kopie der Tabelle in Ihrer Datenbank erstellt wird.
Sie können der Ansicht des PDT jedoch Einschränkungen hinzufügen, da durch Einschränkungen keine neue Kopie des zu verfeinernden Objekts erstellt wird.
Mit Metadaten Verfeinerungen für ein Objekt aufrufen
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 auch die Lokalisierungsregeln auf Ihre Verfeinerungen angewendet werden. 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.