In diesem fortgeschrittenen Thema wird davon ausgegangen, dass der Leser über gute ML-Kenntnisse verfügt.
Übersicht
Mit LookML-Optimierungen können Sie eine vorhandene Ansicht oder Erkunden anpassen, ohne die LookML-Datei zu bearbeiten, die sie enthält. Das ist ideal für:
- Projekte mit Looker Blocks, die vorgefertigte Teile von LookML verwenden
- Projekte, die Dateien aus anderen Projekten importieren
- Projekte, in denen Sie häufig Dateien aus Tabellen in Ihrer Datenbank generieren müssen
- Situationen, in denen Sie LookML zwischen Modellen oder Projekten teilen und an jedem Ort Anpassungen 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
wie unten gezeigt optimieren: Verwenden Sie den Parameter view
mit demselben Datenansichtsnamen, fügen Sie jedoch vor dem Namen ein Pluszeichen (+
) hinzu, um anzugeben, dass es sich um die Optimierung einer vorhandenen Datenansicht handelt.
Durch diesen Suchfilter wird der vorhandenen flights
-Datenansicht eine Dimension air_carrier
hinzugefügt:
view: +flights {
dimension: air_carrier {
type: string
sql: ${TABLE}.air_carrier ;;
}
}
Dieser Suchfilter kann in jeder LookML-Datei im Projekt enthalten sein, z. B. in einer Modelldatei, einer Ansichtsdatei oder in einer eigenen dedizierten LookML-Datei. Weitere Informationen zur Funktionsweise finden Sie im Abschnitt Optimierungen im LookML-Projekt verwenden.
Der Suchfilter kombiniert mit dem ursprünglichen LookML hat das Endergebnis so, als wäre es das ursprüngliche LookML für die Ansicht:
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.
Detaillierte Informationen zur Implementierung finden Sie im Beispiel unten.
Optimierungen im Vergleich zu Erweiterungen
Looker unterstützt auch das Verlängern von LookML-Objekten. Eine Erweiterung ist nützlich, wenn Sie eine neue Kopie einer vorhandenen Ansicht oder „Erkunden“ erstellen und somit neue Objekte hinzufügen möchten. Sie können beispielsweise eine Basisansicht erstellen, in der alle Ihre Felder definiert sind, 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 in der Basisansicht zu ändern.
Suchfilter sind hilfreich, wenn Sie eine vorhandene Ansicht oder „Erkunden“ mit einigen Feinabstimmungen oder Anpassungen an bestimmten Objekten ändern, aber keine Kopien der Ansicht oder des explorativen Analysetools erstellen möchten. Optimierungen sind ideal, wenn die Basisansicht oder der Tab „Entdecken“ nicht geändert werden können oder nicht und für das Erstellen einer neuen Ansicht oder des explorativen Analysetools umfangreiche Änderungen an anderen LookML-Referenzen erforderlich sind. Ein Beispiel für diesen Anwendungsfall finden Sie auf dieser Seite im Abschnitt Beispiel.
In den meisten Anwendungsfällen sind Optimierungen eine einfachere und sauberere Alternative zu extends
.
Fortgeschrittene LookML-Entwickler können den Parameter extends
in einem LookML-Suchfilter verwenden. Weitere Informationen finden Sie im Abschnitt Suchfilter können Erweiterungen enthalten auf dieser Seite.
Suchfilter überschreiben die meisten Parameter
Es ist wichtig zu beachten, dass in den meisten Fällen ein Suchfilter die ursprünglichen Einstellungen eines Objekts überschreibt. Im folgenden Beispiel hat die ursprüngliche Ansicht eine ausgeblendete Dimension (hidden: yes
):
view: faa_flights {
dimension: carrier {
hidden: yes
}
}
Und in einer anderen Datei gibt es eine Optimierung dieser Dimension mit hidden: no
:
include: "/views/faa_flights.view.lkml"
view: +faa_flights {
dimension: carrier {
hidden: no
}
}
Der letzte Suchfilter hat Vorrang, daher wird hidden: no
angewendet und die Dimension wird in der endgültigen Ansicht angezeigt.
In einigen Fällen werden Optimierungen additiv und nicht überschrieben. Im Abschnitt Einige Parameter sind additiv auf dieser Seite finden Sie weitere Informationen.
Einige Parameter sind additiv
Wenn der Suchfilter denselben Parameter wie das zu verfeinernde Objekt enthält, überschreibt das Suchfilter die Parameter des erweiterten Objekts.
Verfeinerungen können jedoch für einige Parameter additiv sein. Das heißt, 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 Maßeinheiten:
Für Aufrufe:
extends
(Weitere Informationen finden Sie im Abschnitt Suchfilterextends
auf dieser Seite.
Für „Entdecken“:
access_filter
aggregate_table
extends
(Weitere Informationen finden Sie im Abschnitt Suchfilterextends
auf dieser Seite.join
query
Hier ist ein Beispiel für eine Ansicht mit der Dimension name
und einem 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"
}
}
}
Und hier eine Verfeinerung der Ansicht carriers
mit einer Dimension name
, 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 erweiterten Ansicht carriers
sind die beiden Parameter link
additiv. Die Dimension name
enthält dann beide Links. Die Dimension in einem Tab „Entdecken“ sieht so aus:
Suchfilter werden in der richtigen Reihenfolge angewendet
Ein Objekt kann mehrmals und an mehreren Stellen optimiert werden, sodass die Looker-Entwickler Suchfilter auf vielfältige Weise einsetzen können. Das bedeutet aber auch, dass Entwickler sich genau überlegen müssen, in welcher Reihenfolge Optimierungen vorgenommen werden:
- Innerhalb eines Projekts werden Suchfilter in der Reihenfolge angewendet, in der ihre Dateien enthalten sind. Suchfilter aus zuletzt enthaltenen Dateien überschreiben Suchfilter aus zuvor enthaltenen Dateien.
- Innerhalb einer einzelnen Datei werden Suchfilter Zeile für Zeile nach unten angewendet. Suchfilter mit der höchsten Zeilennummer werden zuletzt angewendet und überschreiben alle früheren Suchfilter, falls es Konflikte gibt.
Mit dem Flag
final: yes
können Sie prüfen, ob die Optimierungen in der erwarteten Reihenfolge angewendet werden. Weitere Informationen finden Sie im Abschnitt Verwendung vonfinal: yes
zur Verhinderung weiterer Optimierungen.
In der folgenden Ansichtsdatei gibt es beispielsweise zwei Optimierungen der Ansicht faa_flights
. Mit dem ersten Suchfilter wird eine Dimension (hidden: yes
) ausgeblendet und mit dem zweiten Suchfilter wird die Dimension (hidden: no
) ausgeblendet. Bei Konflikten wie diesem hat der Suchfilter, der am weitesten 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
}
}
Die Logik für das Einbeziehen mehrerer Dateien in ein Projekt ist ähnlich: Suchfilter in der letzten Datei, die in den Einschlussbereichen aufgeführt ist, haben Vorrang. Beispiel: Eine Modelldatei enthält folgende Dateien:
include: "/refinements/distance_analysis.lkml"
include: "/refinements/finishing_touches.lkml"
Alle Suchfilter in der distance_analysis.lkml
werden zuerst angewendet, dann werden alle Suchfilter in der Datei finishing_touches.lkml
angewendet. Bei Konflikten haben die Suchfilter in der letzten Datei finishing_touches.lkml
Vorrang.
Da Suchfilter die Reihenfolge von einschließenden Elementen nutzen, sollten Sie bei diesen keine Platzhalter verwenden. Im Allgemeinen ist es am besten, Platzhalter mit Ansichten nicht zu verwenden, vor allem, wenn Ihr Projekt eine große Anzahl von Ansichtsdateien hat oder wenn Ihr Projekt persistente abgeleitete Tabellen (PDTs) verwendet. Insbesondere bei Suchfiltern wird die Verwendung von Platzhaltern in Ihren Includen jedoch nicht empfohlen.
Mit final: yes
weitere Suchfilter vermeiden
Wie zuvor beschrieben, kann dasselbe Objekt an mehreren Stellen mehrmals verfeinert werden. Dabei werden die letzten Suchfilter alle vorherigen Suchfilter überschrieben.
Wenn Sie einen Suchfilter als endgültigen Suchfilter für die Datenansicht oder den Suchfilter definieren möchten, können Sie dem Suchfilter das Flag final: yes
hinzufügen. Die Looker-IDE gibt einen LookML-Fehler zurück, wenn es vorhandene Suchfilter gibt, die nach diesem letzten Suchfilter angewendet werden würden, oder wenn ein Entwickler versucht, einen neuen Suchfilter hinzuzufügen, der nach diesem letzten Suchfilter angewendet wird. Der zweite Suchfilter in dieser Ansichtsdatei würde beispielsweise einen LookML-Fehler verursachen, da der vorherige Suchfilter 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 überprüfen, ob die Suchfilter in der gewünschten Reihenfolge angewendet werden.
Suchfilter können Erweiterungen enthalten
Fortgeschrittene LookML-Entwickler können einen extends
-Parameter innerhalb eines LookML-Suchfilters verwenden, mit dem das erweiterte Objekt dem zu optimierenden Objekt hinzugefügt wird.
So fassen Sie das Verhalten von extends
und Suchfiltern zusammen:
- Durch die Erweiterung eines Objekts wird eine neue Kopie des Objekts erstellt und darauf aufgebaut. Sie können beispielsweise eine Basisansicht erstellen, in der alle Ihre Felder definiert sind, und dann mehrere neue Ansichten erstellen, die die Basisansicht erweitern. Jede dieser neuen Ansichten enthält eine Kopie der Basisansicht. Entwickler können dann verschiedene Felder, Filter oder andere Eigenschaften hinzufügen, um die Inhalte 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 Erweiterung wiederverwenden finden Sie alle Informationen zur Verwendung von Erweiterungen.
- Wenn Sie ein Objekt optimieren, wird eine zusätzliche Bearbeitungsebene hinzugefügt. Anders als beim Erweitern werden dabei nicht mehrere Kopien des Objekts erstellt. Der Grundgedanke ist, auf einem Basisobjekt aufzubauen, ohne das ursprüngliche LookML zu ändern.
Hier ein Beispiel für die standardmäßige Verwendung von Suchfiltern: Hier findest du eine Erkundung namens orders
und die Erkundung +orders
mit dieser Optimierung:
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 kannst du einen Suchfilter hinzufügen, der ein extends
enthält. Aufbauend auf diesem Beispiel ist hier die orders
-Erkundung. Darüber hinaus gibt es noch den Basis- Erkundungsnamen users_base
und der Suchfilter +orders
hat jetzt einen extends
-Parameter, der den users_base
einbindet:
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 der +orders
-Suchfilter eine extends
enthält. Das Ergebnis ist, dass die Ansicht +orders
jetzt die users_base
explorative Datenanalyse erweitert.
So implementiert Looker extends
in Suchfiltern
Das Erweitern eines Objekts innerhalb eines Suchfilters ist ein fortgeschrittenes LookML-Konzept. Bevor Sie extends
in einem Suchfilter verwenden, sollten Sie sich mit Folgendem auskennen:
- Implementierung von
extends
durch Looker: Wenn sowohl im Objekt „expand“ ed als auch im Objekt „expand“ ing ein LookML-Element definiert ist, wird die Version im Erweiterungsobjekt verwendet, sofern der Parameter nicht additiv ist. Weitere Informationen finden Sie auf der Dokumentationsseite Code mit Erweiterungen wiederverwenden. - So implementiert Looker Suchfilter: Wenn ein LookML-Element in mehreren Suchfiltern definiert ist, überschreibt der letzte Suchfilter vorherige Suchfilter. Weitere Informationen
Außerdem sollten Sie verstehen, wie Looker diese Prinzipien kombiniert, um extends
in Suchfiltern zu verwenden. Hier ist die von Looker implementierte Reihenfolge, wobei bei Konflikten jeweils der vorherige Schritt überschrieben wird:
- Werte aus dem im Objekt angegebenen
extends
- Werte aus dem in Suchfilter des Objekts angegebenen
extends
- Werte aus dem Objekt
- Werte aus den Suchfiltern des Objekts
Das folgende Beispiel veranschaulicht den Wert des Parameters label
in jedem Schritt der Implementierung:
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 den Wert von label
für die orders
-explorative Datenanalyse in diesem Beispiel:
- Werte aus der im Objekt angegebenen
extends
. Daorders
Explore den Parameterextends
hat, beginnt Looker mit den LookML-Elementen des erweiterten Objekts. In diesem Fall ist dasorders_base
Explore. An dieser Stelle lautet derlabel
-Wert "Orders Base". - Werte aus den
extends
, die in Suchfiltern des Objekts angegeben sind. Daorders
einen Suchfilter hat und der Suchfilter einenextends
-Parameter hat, wendet Looker dann LookML-Elemente aus der Erweiterung an, in diesem Fall dieusers_base
-Erkundung. An dieser Stelle lautet derlabel
-Wert "Users Base". - Werte aus dem Objekt. Nachdem Sie jetzt alle Erweiterungen angesprochen haben, wendet Looker Elemente aus dem erweiterten Objekt an – in diesem Fall
orders
. Bei Konflikten gewinnt das Erweiterungsobjekt. Der Wertlabel
ist jetzt "Orders". - Werte aus den Suchfiltern des Objekts. Schließlich wendet Looker Elemente aus allen Verfeinerungen der
orders
-Erkundung an. Bei Konflikten gewinnt das Suchfilterobjekt. Der Wertlabel
lautet jetzt „Bestellungen verfeinert“.
Der Suchfilter extends
ist ein Zusatz.
Wie im Abschnitt Parameter zum Überschreiben von Suchfiltern auf dieser Seite beschrieben, überschreiben Suchfilter in der Regel die ursprünglichen Einstellungen eines Objekts. Das gilt nicht für den Parameter extends
. Wenn extends
in einem Suchfilter verwendet wird, wird der Wert im Parameter extends
an die Liste von Elementen angehängt, die im ursprünglichen Objekt oder in vorherigen Suchfiltern erweitert wurden. Bei Konflikten wird dem letzten Element in der Erweiterungskette Vorrang eingeräumt.
Hier sehen Sie beispielsweise die Basis- Erkundung orders_base
und die Erkundung orders
, die die Basis erweitert. Darüber hinaus gibt es eine users_base
- Erkundung und einen +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
}
Mit der Funktion orders
Erweitern orders_base
erweitern die +orders
Suchfilter die users_base
zur Liste extends
. Das Ergebnis ist, dass +orders
Explore jetzt sowohl orders_base
als auch users_base
erweitert, so als wäre dies das ursprüngliche LookML für den Explore:
explore: orders {
extends: [orders_base, users_base]
}
Bei Konflikten wird dem letzten Element in der Erweiterungskette Vorrang eingeräumt. In diesem Beispiel würden die Elemente in users_base
alle in Konflikt stehenden Elemente in orders_base
überschreiben.
Wie Sie mehrere Objekte auf einmal erweitern, wird auf der Dokumentationsseite Code mit Erweiterungen wiederverwenden erläutert.
Eine letzte Sache, die zu beachten ist: In diesem Beispiel spielt die Reihenfolge der explore
-Parameter keine Rolle. Bei mehreren Suchfiltern desselben Objekts spielt die Reihenfolge jedoch eine Rolle. Wie auf dieser Seite im Abschnitt Suchfilter in der angegebenen Reihenfolge angewendet beschrieben, überschreibt der letzte Suchfilter in einer Datei frühere Suchfilter.
Suchfilter in Ihrem LookML-Projekt verwenden
So verfeinerst du die Ansicht und die explorativen Datenanalysen in deinem Projekt:
- Wählen Sie die Datenansicht oder den Tab „Erkunden“ aus, die Sie verfeinern möchten.
- Entscheiden Sie, wo die Suchfilter gespeichert werden sollen. Sie können Suchfilter in jeder vorhandenen LookML-Datei hinzufügen oder separate LookML-Dateien für Ihre Suchfilter 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 Ihre Suchfilter in Ihr Modell zu integrieren:- In die Datei, in die Sie Ihre Suchfilter schreiben, müssen Sie auch die Dateien der LookML einfügen, die Sie verfeinern möchten. Die Looker-IDE gibt Warnungen aus, wenn Sie versuchen, ein Objekt zu verfeinern, das nicht enthalten ist.
- Nehmen Sie in Ihre Modelldatei die Dateien auf, in denen die Suchfilter definiert sind. Sie haben die Möglichkeit, Dateien und Creatives auf kreative Weise zu kombinieren. Weitere Informationen finden Sie auf dieser Seite im Abschnitt Mit Ebenen Optimierungen für Ihr Modell vornehmen.
Beispiel
Mit LookML-Objekten können Sie ganz einfach Ansichten und Entdeckungen anpassen, ohne die ursprünglichen LookML-Objekte bearbeiten zu müssen. Das ist besonders dann nützlich, wenn Ihre Datenansichten und die Funktionen „Erkunden“ in Ihrem Projekt schreibgeschützt sind, z. B. mit Dateien, die aus anderen Projekten importiert wurden. Hier ist ein Beispiel für die Optimierung eines explorativen Analysetools.
Hier ist die LookML für die aircraft
-Erkundung:
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
}
}
Dieser Tab enthält mehrere Datenansichten, von denen jede viele Dimensionen hat.
Jetzt wird die Datei aircraft
Explore durch ein anderes LookML-Projekt namens e_faa_refined
importiert. Im Projekt e_faa_refined
können Sie mithilfe eines Suchfilters das Erkunden von aircraft
erheblich vereinfachen.
Da es sich bei aircraft
um eine importierte Datei handelt, können Sie sie nicht direkt bearbeiten. Stattdessen können Sie einen Suchfilter hinzufügen. Hier 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
zum Importieren der ursprünglichenaircraft.explore.lkml
-Datei aus dem importierten Projekt. Details dazu, wie Sie auf importierte Projektdateien verweisen, finden Sie auf der Dokumentationsseite Dateien aus anderen Projekten importieren. - Optimierungen der
aircraft
-Funktion „Entdecken“:
Das Endergebnis ist, als ob dies die ursprüngliche aircraft
-Erkundungs- und aircraft
-Ansicht 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
}
}
Andere Anwendungsfälle für Suchfilter
Wie bereits erwähnt, sind Verfeinerungen ideal, um schreibgeschützte LookML-Objekte wie Looker Blocks oder importierte Dateien anzupassen.
Sobald Sie jedoch den Eindruck gewonnen haben, dass Sie Optimierungen vorgenommen und in Ihre Modelle aufgenommen haben, können Sie mit Ihren Projekten äußerst coole Dinge erstellen, wie in den folgenden Beispielen beschrieben.
Analysen mithilfe von Suchfiltern hinzufügen
Sie können Suchfilter verwenden, um Analysen zu Ihrem Modell hinzuzufügen, ohne die ursprünglichen LookML-Dateien zu berühren. Wenn beispielsweise ein Projekt besteht, bei dem die Ansichten und explorativen Datenanalysen 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 sehen Sie ein Beispiel für eine neue abgeleitete Tabelle namens distance_stats
mit einer Entfernungsanalyse. Dieses Beispiel zeigt eine Optimierung der vorhandenen flights
-explorativen Datenanalyse aus der Datei faa_basic.lkml
, die die abgeleitete Tabelle distance_stats
mit der flights
-Erkundung zusammenführt. Außerdem wird unten im Beispiel die vorhandene Ansicht flights
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 mithilfe von Suchfiltern zu Ihrem Modell hinzufügen
Ein weiterer interessanter Anwendungsfall für Suchfilter ist das Hinzufügen von Ebenen zu Ihrem Projekt. Sie können mehrere Suchfilterdateien erstellen und diese dann strategisch hinzufügen, um Ebenen hinzuzufügen.
Im FAA-Projekt gibt es beispielsweise die Datei faa_raw.lkml
, die alle Ansichten und Entdeckungen 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 Größe für jede Datenbankspalte.
Zusätzlich zur Rohdatei können Sie eine faa_basic.lkml
-Datei erstellen, um eine neue Ebene mit grundlegenden Suchfiltern hinzuzufügen, z. B. um Joins zu Ihren Entdeckungen hinzuzufügen oder um Ansichten zu Ihren Ansichten hinzuzufügen:
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 die Datei faa_analysis.layer.lkml
hinzufügen, um eine neue Ebene mit Analysen hinzuzufügen. Ein Beispiel für eine Analysedatei finden Sie im Unterabschnitt Optimierungen zum Hinzufügen von Analysen verwenden.
Jetzt müssen Sie nur alle Dateien zur Verfeinerung in die Modelldatei aufnehmen. Sie können mit der Modelldatei auch Suchfilter 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. Sie können aber auch verschiedene Dateien zur Verfeinerung einbinden, die Sie zur Definition anderer Ebenen in Ihrem Modell erstellt haben.
Optimierungen für PDTs verwenden
Wie auf dieser Seite im Abschnitt Verbesserungen im Vergleich zu Erweiterungen auf dieser Seite beschrieben, wird mit einer Erweiterung eine neue Kopie des zu erweiternden Objekts erstellt. Im Fall von persistenten abgeleiteten Tabellen (PDTs) sollten Sie keine Erweiterungen verwenden, da jede Erweiterung eines PDT eine neue Kopie der Tabelle in Ihrer Datenbank erstellt.
Sie können jedoch Suchfilter zur Ansicht des PDT hinzufügen, da Suchfilter keine neue Kopie des zu verfeinernden Objekts erstellen.
Metadaten zum Einsehen von Suchfiltern für ein Objekt verwenden
Sie können in der Looker-IDE auf einen explore
- oder einen view
-Parameter klicken und über den Metadatenbereich Suchfilter aufrufen. Weitere Informationen finden Sie auf der Dokumentationsseite Metadaten für LookML-Objekte.
Wichtige Punkte
Projekte mit Lokalisierung
Wenn Sie ein Objekt optimieren, gelten die Lokalisierungsregeln auch für Ihre Suchfilter. Wenn Sie ein Objekt optimieren und dann neue Labels oder Beschreibungen definieren, sollten Sie Lokalisierungsdefinitionen in den Gebietsschema-Stringdateien Ihres Projekts angeben. Weitere Informationen finden Sie auf der Dokumentationsseite LookML-Modell lokalisieren.