Überblick
Mit LookML-Suchfiltern können Sie eine vorhandene Ansicht oder explorative Datenanalyse anpassen, ohne die LookML-Datei zu bearbeiten, die sie enthält. Diese Einstellung ist ideal für:
- Projekte mit Looker Blocks, die vordefinierte LookML-Elemente verwenden
- Projekte, in denen Dateien aus anderen Projekten importiert werden
- Projekte, bei denen Sie häufig Dateien aus Tabellen in Ihrer Datenbank generieren
- 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 eingrenzen: Verwenden Sie den Parameter view
mit demselben Ansichtsnamen. Fügen Sie jedoch vor dem Namen ein Pluszeichen (+
) ein, um anzugeben, dass es sich um eine Optimierung der vorhandenen Ansicht handelt.
Durch diesen Suchfilter wird der vorhandenen flights
-Ansicht die 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 verwendet werden, z. B. in einer Modell- oder Ansichtsdatei oder in einer eigenen dedizierten LookML-Datei. Informationen zur Funktionsweise finden Sie im Abschnitt Suchfilter in einem LookML-Projekt verwenden.
Das Suchergebnis in Kombination mit dem ursprünglichen LookML ergibt das Endergebnis, als ob es das ursprüngliche LookML 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 in der ursprünglichen Ansichtsdatei selbst hinzugefügt.
Weitere Informationen finden Sie unten.
Optimierungen im Vergleich zu Erweiterungen
Looker unterstützt auch die Erweiterung von LookML-Objekten. Die Erweiterung ist hilfreich, wenn Sie eine neue Kopie einer vorhandenen Ansicht oder der Funktion „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 Datenansichten 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 den Bereich „Erkunden“ mit einigen Optimierungen oder Anpassungen an bestimmten Objekten ändern möchten, aber keine Kopien der Ansicht oder des explorativen Analysetools erstellen möchten. Suchfilter eignen sich ideal in Situationen, in denen Sie die Basisansicht oder die Funktion „Erkunden“ nicht ändern können. In Situationen, in denen das Erstellen einer neuen Ansicht oder der Funktion „Erkunden“ erforderlich ist, sind umfangreiche Änderungen an anderen LookML-Referenzen erforderlich. Ein Beispiel für diesen Anwendungsfall finden Sie im Abschnitt Beispiel auf dieser Seite.
In den meisten Fällen sind Suchfilter eine einfachere und übersichtlichere 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
}
}
In einer anderen Datei gibt es einen Suchfilter für diese Dimension mit hidden: no
:
include: "/views/faa_flights.view.lkml"
view: +faa_flights {
dimension: carrier {
hidden: no
}
}
Die letzte Optimierung hat Vorrang. Daher wird hidden: no
angewendet und die Dimension wird in der endgültigen Ansicht angezeigt.
In einigen Fällen sind Suchfilter additiv anstelle von „Überschreiben“. Weitere Informationen finden Sie im Abschnitt Einige Parameter sind additiv auf dieser Seite.
Einige Parameter sind additiv
Wenn der Suchfilter denselben Parameter wie das optimierte Objekt enthält, überschreibt die Suchfilter die Parameterwerte des raffinierten Objekts.
Einige Parameter können jedoch verfeinert werden, d. h., sie können für einige Parameter additiv werden, d. h., die Werte aus dem Basisobjekt werden in Verbindung mit den Werten des optimierten Objekts verwendet.
Die folgenden Parameter sind additiv:
Für Dimensionen und Maßnahmen:
Für Aufrufe:
extends
(Weitere Informationen findest du im Abschnitt Suchfilterextends
auf dieser Seite.)
Für explorative Datenanalysen:
access_filter
aggregate_table
extends
(Weitere Informationen findest du im Abschnitt Suchfilterextends
auf dieser Seite.)join
query
Hier sehen Sie eine Datenansicht 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"
}
}
}
Und hier ist ein Suchfilter 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 verbesserten carriers
-Ansicht sind die beiden link
-Parameter additiv, sodass die Dimension name
beide Links anzeigt.
Suchfilter werden in der angegebenen Reihenfolge angewendet
Ein Objekt kann mehrmals und an verschiedenen Orten optimiert werden, sodass Looker-Entwickler Suchfilter auf vielfältige Weise einsetzen können. Das bedeutet aber auch, dass Entwickler die Reihenfolge, in der Suchfilter angewendet werden, sehr genau berücksichtigen müssen:
- Bei einem Projekt werden Suchfilter in der Reihenfolge angewendet, in der die 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 Konflikte auftreten.
Die folgende Ansichtsdatei enthält beispielsweise zwei Verfeinerungen der faa_flights
-Ansicht. Mit dem ersten Suchfilter wird die Dimension ausgeblendet (hidden: yes
), während mit dem zweiten Suchfilter die Dimension (hidden: no
) angezeigt wird. Bei solchen Konflikten 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 ist ähnlich, wenn mehrere Dateien in ein Projekt aufgenommen werden: Optimierungen in der letzten Datei, die in den Includes enthalten ist, haben Vorrang. Beispiel: Eine Modelldatei enthält folgende Dateien:
include: "/refinements/distance_analysis.lkml"
include: "/refinements/finishing_touches.lkml"
Alle Suchfilter in distance_analysis.lkml
werden zuerst angewendet, dann werden alle Suchfilter in der Datei finishing_touches.lkml
angewendet. Im Falle von Konflikten haben die Suchfilter in der letzten Datei, finishing_touches.lkml
, Vorrang.
Mit final: yes
weitere Optimierungen verhindern
Wie bereits beschrieben, kann dasselbe Objekt an mehreren Stellen mehrmals verfeinert werden, wobei der letzte Suchfilter alle vorherigen Suchfilter überschreibt.
Wenn Sie einen Suchfilter als endgültige Suchfilter für die Datenansicht oder den Suchfilter sehen möchten, können Sie ihm den Flag final: yes
hinzufügen. Die Looker-IDE gibt einen LookML-Fehler zurück, wenn es bereits nach diesem endgültigen Suchfilter angewendete Suchfilter gibt oder wenn ein Entwickler einen neuen Suchfilter hinzufügen möchte, der nach dem letzten Suchfilter angewendet wird. Beispielsweise würde der zweite Suchfilter in dieser Ansichtsdatei 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 einen Suchfilter mit dem Flag final: yes
versehen, können Sie überprüfen, ob die Suchfilter in der gewünschten Reihenfolge angewendet werden.
Suchfilter können Erweiterungen enthalten
Fortgeschrittene LookML-Entwickler möchten möglicherweise einen extends
-Parameter innerhalb eines LookML-Suchfilters verwenden, der das erweiterte Objekt dem zu verfeinernden Objekt hinzufügt.
So fassen Sie das Verhalten von extends
und Suchfiltern zusammen:
- Durch Erweiterung eines Objekts wird eine neue Kopie des Objekts erstellt und darauf aufbauend erstellt. Sie können beispielsweise eine Basisansicht erstellen, in der alle Ihre Felder definiert sind, und dann mehrere neue Datenansichten erstellen, die die Basisansicht erweitern. Jede neue Datenansicht enthält eine Kopie der Basisansicht. Von dort aus kann ein Entwickler verschiedene Felder, Filter oder andere Eigenschaften hinzufügen, um zu ändern, was in der Basisansicht enthalten ist. Die Idee ist, mit einem Basisobjekt zu beginnen und es dann in verschiedenen anderen Objekten zu verwenden. Auf der Dokumentation zum Wiederverwendung von Code mit Erweiterungen finden Sie ausführliche Informationen zur Arbeit mit Erweiterungen.
- Durch die Feinabstimmung eines Objekts wird dem Objekt eine Schicht hinzugefügt, die jedoch, im Gegensatz zu einer Erweiterung, keine Kopien des Objekts umfasst. Die Idee ist, auf einem Basisobjekt aufzubauen, ohne das ursprüngliche LookML zu ändern.
Hier ein Beispiel für die standardmäßige Verwendung von Suchfiltern: Hier befindet sich das explorative Analysetool „orders
“ und das explorative Analysetool „+orders
“:
explore: orders {
view_name: orders
# other Explore parameters
}
explore: +orders {
label: "Orders Information"
# other Explore parameters to build on the original Explore
}
Zusätzlich können Sie einen Suchfilter mit extends
hinzufügen. Hier sehen Sie ein Beispiel für das explorative Analysetool „orders
“. Außerdem gibt es das Basis-explorative Analysetool „users_base
“ und der +orders
-Suchfilter enthält jetzt den Parameter extends
, der den users_base
einfügt:
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 einen extends
enthält. Das Ergebnis ist, dass die Ansicht +orders
die users_base
Erkundung erweitert.
So implementiert Looker extends
innerhalb von Suchfiltern
Das Erweitern eines Objekts innerhalb eines Suchfilters ist ein erweitertes LookML-Konzept. Bevor Sie extends
in einem Suchfilter verwenden, sollten Sie folgende Kenntnisse haben:
- Implementierung von
extends
durch Looker: Wenn sowohl im Objekt expanded als auch im Objekt extern ein LookML-Element definiert ist, wird die Version im erweiterten Objekt 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 finden Sie auf dieser Seite im Abschnitt Suchfilter werden in der richtigen Reihenfolge angewendet.
Außerdem sollten Sie verstehen, wie Looker diese Prinzipien kombiniert, um extends
, die bei Verfeinerungen verwendet werden, zu implementieren. Hier sehen Sie die von Looker implementierte Reihenfolge. Bei Konflikten hat jeder Schritt Vorrang vor dem vorherigen.
- Werte aus der im Objekt angegebenen
extends
- Werte aus dem
extends
, der in Optimierungen des Objekts angegeben wurde - Werte aus dem Objekt
- Werte aus den Optimierungen des Objekts
Das folgende Beispiel veranschaulicht den Wert des Parameters label
in den einzelnen Schritten 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]
}
In diesem Beispiel implementiert Looker den Wert von label
für das explorative Analysetool orders
:
- Werte aus dem
extends
, der im Objekt angegeben ist. Daorders
Explore den Parameterextends
hat, startet Looker mit den LookML-Elementen des Objekts, das erweitert wird, in diesem Fall demorders_base
-Feature. An diesem Punkt ist derlabel
-Wert „Orders Base“ (Bestellungsbasis) angegeben. - Werte aus der
extends
, die bei Optimierungen des Objekts angegeben wurden. Daorders
einen Suchfilter enthält und der Suchfilter einenextends
-Parameter hat, wendet Looker anschließend LookML-Elemente aus der Erweiterung des Suchfilters an. Das ist in diesem Fall dasusers_base
-Feature. An diesem Punkt ist der Wert vonlabel
„Nutzerbasis“. - Werte aus dem Objekt. Nachdem alle Erweiterungen bearbeitet wurden, wendet Looker Elemente aus dem erweiterten Objekt an. In diesem Fall ist das die
orders
-Erkundung. Bei Konflikten gewinnt das Erweiterungsobjekt. Derlabel
-Wert ist jetzt „Orders“. - Werte aus den Optimierungen des Objekts: Schließlich wendet Looker Elemente aus allen Suchfiltern des
orders
-explorativen Analysetools an. Bei Konflikten gewinnt das Suchfilterobjekt. Der Wert vonlabel
ist jetzt „Verfeinerte Bestellungen“.
Der Suchfilter extends
ist additiv
Wie auf dieser Seite im Abschnitt Suchfilter überschreiben: werden die ursprünglichen Einstellungen eines Objekts überschrieben. Das gilt nicht für den Parameter extends
. Wenn extends
in einem Suchfilter verwendet wird, wird der Wert im Parameter extends
an die Liste der im ursprünglichen Objekt oder in vorherigen Suchfiltern erweiterten Elemente angehängt. Im Falle von Konflikten hat das letzte Element in der Kette der Verlängerungen Vorrang.
Unten sehen Sie zum Beispiel ein Basis-Erkunden mit dem Namen orders_base
und ein exploratives Analysetool orders
, das die Basis erweitert. Außerdem gibt es eine users_base
-Entdeckung 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
}
Mit dem Parameter „orders
“ wird das orders_base
erweitert. Durch die +orders
-Optimierungen wird das users_base
der Liste extends
hinzugefügt. Das Ergebnis ist, dass +orders
Explore jetzt sowohl orders_base
als auch users_base
erweitert, als ob das das ursprüngliche LookML für das Explore wäre:
explore: orders {
extends: [orders_base, users_base]
}
Im Falle von Konflikten hat das letzte Element in der Kette der Verlängerungen Vorrang. In diesem Beispiel überschreiben die Elemente in users_base
alle in Konflikt stehenden Elemente in orders_base
.
Auf der Dokumentationsseite Code mit Erweiterungen wiederverwenden wird das Konzept von mehr als einem Objekt erweitert.
Noch eine letzte Sache: In diesem Beispiel spielt die Reihenfolge der explore
-Parameter keine Rolle. Bei mehreren Verfeinerungen desselben Objekts ist die Reihenfolge jedoch entscheidend. Wie auf dieser Seite im Abschnitt Suchfilter werden in der richtigen Reihenfolge beschrieben, überschreibt der letzte Suchfilter in einer Datei vorherige Suchfilter.
Suchfilter in Ihrem LookML-Projekt verwenden
Hier sind die allgemeinen Schritte zur Optimierung der Ansichten und Entdeckungen Ihres Projekts aufgeführt:
- Wählen Sie die Datenansicht oder das explorative Analysetool aus, das Sie verfeinern möchten.
- Wählen Sie aus, wo Ihre 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 für das Erstellen generischer LookML-Dateien finden Sie in der Anleitung zum Erstellen einer Datentestdatei auf der Seite Informationen zu anderen Projektdateien.
- Verwenden Sie den Parameter
include
, um Ihre Suchfilter in das Modell aufzunehmen:- In die Datei, in die Sie Ihre Suchfilter schreiben, müssen Sie die Dateien der LookML-Datei einschließen, die Sie verfeinern möchten. Sie erhalten Warnungen von der Looker-IDE, wenn Sie ein Objekt optimieren, das nicht enthalten ist.
- Fügen Sie der Modelldatei die Dateien hinzu, für die die Suchfilter definiert sind. Sie können Dateien und Einsatzmöglichkeiten auf sehr kreative Weise kombinieren. Weitere Informationen finden Sie im Abschnitt Mit Suchfiltern Ebenen zu Ihrem Modell hinzufügen auf dieser Seite.
Beispiel
Auf Basis von LookML-Objekten können Sie Ansichten und Explores einfach anpassen, ohne das ursprüngliche LookML bearbeiten zu müssen. Das ist besonders dann nützlich, wenn Ihre Ansichten und explorativen Datenanalysen in Ihrem Projekt schreibgeschützt sind, z. B. mit Dateien, die aus anderen Projekten importiert wurden. Hier siehst du ein Beispiel für die Optimierung einer explorativen Datenanalyse.
Hier sehen Sie das LookML für das explorative Analysetool 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 Datenansichten, von denen jede zahlreiche Dimensionen hat.
Jetzt wird mit einem anderen LookML-Projekt namens e_faa_refined
die Explore-Datei aircraft
importiert. Im Projekt e_faa_refined
können Sie einen Suchfilter verwenden, um das explorative Analysetool aircraft
erheblich zu vereinfachen.
Da die explorative Datenanalyse „aircraft
“ eine importierte Datei ist, können Sie sie nicht direkt bearbeiten. Stattdessen können Sie einen Suchfilter hinzufügen. Hier ein Beispiel für eine separate Datei mit dem Namen refinements.lkml
, die dieses 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 Einbinden der ursprünglichen Dateiaircraft.explore.lkml
aus dem importierten Projekt. Informationen dazu, wie Sie auf importierte Projektdateien verweisen, finden Sie auf der Dokumentationsseite Dateien aus anderen Projekten importieren. - Optimierungen der
aircraft
-Erkundung:- Das
+
-Zeichen vor dem Namen des explorativen Analysetools gibt an, dass ein Suchfilter nur für einen vorhandenen Suchfilter verwendet wird. - Durch den Parameter
label
wird das Label „Erkunden“ in „Vereinfachtes Flugzeug“ geändert. - Der Parameter
fields
gibt an, dass nur drei Felder im explorativen Analysetool angezeigt werden.
- Das
Das Endergebnis war, dass es die ursprüngliche aircraft
-Ansicht und die 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
}
}
Ein Beispiel für die Verwendung von Suchfiltern zum Anpassen einer einzelnen Ansicht für mehrere Anwendungsfälle finden Sie im Kochbuch-Rezept Maximierung der Codewiederverwendbarkeit mit DRY LookML.
Andere Anwendungsfälle für Optimierungen
Wie bereits erwähnt, sind Optimierungen ideal für die Anpassung schreibgeschützter LookML-Objekte wie Looker Blocks oder importierte Dateien.
Sobald Sie jedoch den Eindruck haben, dass Sie Optimierungen vorgenommen und in Ihre Modelle aufgenommen haben, können Sie mit Ihren Projekten sehr interessante Dinge erreichen, wie in den folgenden Beispielen beschrieben.
Verwenden von Suchfiltern zum Hinzufügen von Analysen
Sie können Suchfilter verwenden, um Analysen zu Ihrem Modell hinzuzufügen, ohne die ursprünglichen LookML-Dateien zu berühren. Wenn beispielsweise die Datenansichten und explorativen Datenanalysen aus Tabellen in Ihrer Datenbank generiert werden 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 mithilfe von Suchfiltern Analysen hinzufügen können. Hier ist ein Beispiel für eine neue abgeleitete Tabelle namens distance_stats
mit einer Fernanalyse. Dieses Beispiel zeigt die Verfeinerungen der vorhandenen flights
-explorativen Datenanalyse aus der Datei faa_basic.lkml
, die die abgeleitete Tabelle distance_stats
mit der Funktion „Erkunden“ in flights
verbindet. Außerdem wird unten im Beispiel die vorhandene Ansicht flights
so verfeinert, dass neue Felder aus der Analyse hinzugefügt werden:
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 Verfeinerungen ist das Hinzufügen von Ebenen zu Ihrem Projekt. Sie können mehrere Suchfilterdateien erstellen und sie dann strategisch einbinden, um Ebenen hinzuzufügen.
Beispielsweise enthält das FAA-Projekt eine faa_raw.lkml
-Datei, die alle Ansichten und Explores enthält, die aus Tabellen in Ihrer Datenbank generiert wurden. Diese Datei hat 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 Suchfiltern hinzuzufügen, z. B. Joins zu Ihren explorativen Datenanalysen oder Messwerte zu 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 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 Suchfilter verwenden, um Analysen hinzuzufügen.
Dann müssen Sie nur alle Suchfilterdateien in die Modelldatei aufnehmen. Sie können die Modelldatei auch verwenden, um Suchfilter hinzuzufügen und die 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 Sie können verschiedene Suchfilterdateien verwenden, die Sie erstellt haben, um andere Ebenen in Ihrem Modell zu definieren.
Optimierungen für PATs verwenden
Wie auf dieser Seite im Abschnitt Suchfilter im Vergleich zu Erweiterungen beschrieben, wird mit einer Erweiterung eine neue Kopie des Objekts erstellt, das erweitert wird. Im Fall von persistenten abgeleiteten Tabellen (PAT) sollten Sie keine Erweiterungen verwenden, da durch jede Erweiterung eines PDT eine neue Kopie der Tabelle in Ihrer Datenbank erstellt wird.
Sie können jedoch Suchfilter der Ansicht der PAT hinzufügen, da durch Suchfilter keine neue Kopie des zu erstellenden Objekts erstellt wird.
Anhand von Metadaten Suchfilter für ein Objekt aufrufen
Sie können in der Looker-IDE auf einen explore
- oder view
-Parameter klicken und mithilfe des Metadatenbereichs die Suchfilter für das Objekt aufrufen. Weitere Informationen finden Sie auf der Dokumentationsseite zu Metadaten für LookML-Objekte.
Wichtige Punkte
Projekte mit Lokalisierung
Wenn Sie ein Objekt verfeinern, beachten Sie, dass die Lokalisierungsregeln auch für Ihre Optimierungen gelten. 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 zum Lokalisieren des LookML-Modells.