Überblick
Mit LookML-Verfeinerungen können Sie eine vorhandene Ansicht oder Explore anpassen, ohne die darin enthaltene LookML-Datei zu bearbeiten. Ideal für:
- Projekte mit Looker-Blöcken, die vordefinierte LookML-Elemente verwenden
- Projekte, die Dateien aus anderen Projekten importieren
- Projekte, in denen Sie häufig Dateien aus Tabellen in der Datenbank generieren müssen
- Situationen, in denen Sie LookML zwischen Modellen oder Projekten teilen möchten, während Sie an jedem Ort Anpassungen vornehmen (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 im folgenden Beispiel gezeigt: Verwenden Sie den Parameter view
mit demselben Ansichtsnamen, aber fügen Sie ein Pluszeichen (+
) vor dem Namen ein, um anzugeben, dass es sich um eine Optimierung einer vorhandenen Datenansicht 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 jede LookML-Datei im Projekt aufgenommen werden, z. B. in eine Modelldatei, eine Ansichtsdatei oder in eine eigene dedizierte LookML-Datei. Informationen zur Funktionsweise finden Sie im Abschnitt Verfeinerungen in Ihrem LookML-Projekt verwenden.
Der Suchfilter in Kombination mit dem ursprünglichen LookML-Code führt zum Endergebnis, als wäre dies der ursprüngliche LookML-Code 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 Air Carrier so, als hätten Sie die Dimension der ursprünglichen Ansichtsdatei selbst hinzugefügt.
Im Beispiel unten finden Sie detailliertere Informationen zur Implementierung.
Suchfilter im Vergleich zu Erweiterungen
Looker unterstützt auch das extending von LookML-Objekten. Die Erweiterung 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 Ihre 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 oder Definitionen oder Labels für die Felder aus der Basisansicht geändert werden.
Suchfilter sind nützlich, wenn Sie eine vorhandene Ansicht oder ein Explore mit einigen Optimierungen oder Anpassungen bestimmter Objekte ändern, aber keine Kopien der Ansicht oder des Explores erstellen möchten. Verfeinerungen sind ideal für Situationen, in denen Sie die Basisansicht oder das Explore nicht ändern können oder möchten, und wenn das Erstellen einer neuen Ansicht oder eines neuen Explores umfangreiche Änderungen an anderen LookML-Referenzen erfordern würde. Ein Beispiel für einen solchen Anwendungsfall finden Sie auf dieser Seite im Abschnitt Beispiel.
In den meisten Anwendungsfällen sind Optimierungen eine einfachere und sauberere Alternative zu extends
.
Erfahrene LookML-Entwickler möchten möglicherweise den extends
-Parameter in einem LookML-Verfeinerung verwenden. Weitere Informationen finden Sie auf dieser Seite im Abschnitt Suchfilter können Erweiterungen enthalten.
Suchfilter überschreiben die meisten Parameter
Beachten Sie, dass ein Suchfilter in den meisten Fällen 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 Verfeinerung dieser 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 und werden nicht überschrieben. Weitere Informationen finden Sie auf dieser Seite im Abschnitt Einige Parameter sind additiv.
Einige Parameter sind additiv
Wenn der Suchfilter denselben Parameter wie das zu verfeinernde Objekt enthält, werden in vielen Fällen die Parameterwerte des verfeinerten Objekts durch die Verfeinerung überschrieben.
Verfeinerungen können jedoch für einige Parameter additiv sein. Das bedeutet, dass die Werte aus dem Basisobjekt zusammen mit den Werten aus dem verfeinerten Objekt verwendet werden.
Die folgenden Parameter sind additiv:
Für Dimensionen und Messungen:
Für 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 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"
}
}
}
Und hier eine Optimierung der Ansicht carriers
mit einer Dimension name
, die andere 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 optimierten Ansicht carriers
sind die beiden link
-Parameter additiv, sodass die Dimension name
beide Links anzeigt.
Suchfilter werden der Reihe nach angewendet
Ein Objekt kann mehrfach und an mehreren Orten verfeinert werden, wodurch Looker-Entwickler Optimierungen auf viele kreative Weise nutzen können. Das bedeutet aber auch, dass Entwickler genau auf die Reihenfolge achten müssen, in der Suchfilter angewendet werden:
- Innerhalb eines Projekts werden Suchfilter in der Reihenfolge angewendet, in der die zugehörigen Dateien enthalten sind. Suchfilter aus zuletzt enthaltenen Dateien überschreiben die Suchfilter aus zuvor enthaltenen Dateien.
- Innerhalb einer einzelnen Datei werden Suchfilter Zeile für Zeile abwärts angewendet. Suchfilter mit der höchsten Zeilennummer werden zuletzt angewendet und überschreiben alle früheren Suchfilter, falls es zu Konflikten kommt.
Die folgende Ansichtsdatei enthält beispielsweise zwei Optimierungen der Ansicht faa_flights
. Beim ersten Suchfilter wird eine Dimension ausgeblendet (hidden: yes
), beim zweiten wird die Dimension (hidden: no
) angezeigt. Bei solchen Konflikten hat der Suchfilter, der am weitesten unten in der Datei liegt, 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 beim Einbeziehen mehrerer Dateien in ein Projekt ist ähnlich: Suchfilter in der letzten Datei, die unter „Einschließen“ aufgeführt ist, haben Vorrang. Angenommen, eine Modelldatei enthält diese Dateien:
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 Optimierungen in der Datei finishing_touches.lkml
angewendet. Bei Konflikten haben die Optimierungen in der letzten Datei (finishing_touches.lkml
) Vorrang.
final: yes
verwenden, um weitere Verfeinerungen zu verhindern
Wie bereits beschrieben, kann ein Objekt mehrmals an mehreren Stellen optimiert werden. Die letzte Optimierung überschreibt alle vorherigen Optimierungen.
Wenn Sie einen Suchfilter als endgültige Optimierung für die Ansicht oder das Explore verwenden möchten, können Sie ihm das Flag final: yes
hinzufügen. Die Looker-IDE gibt einen LookML-Fehler zurück, wenn vorhandene Verfeinerungen vorhanden sind, die nach dieser letzten Verfeinerung angewendet werden, oder wenn ein Entwickler versucht, einen neuen Suchfilter hinzuzufügen, der nach dieser letzten Verfeinerung 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 leicht überprüfen, ob die Optimierungen in der gewünschten Reihenfolge angewendet werden.
Suchfilter können Erweiterungen enthalten
Erfahrene LookML-Entwickler möchten möglicherweise einen extends
-Parameter in einer LookML-Optimierung verwenden, um das erweiterte Objekt dem zu optimierenden Objekt hinzuzufügen.
So fassen Sie das Verhalten von extends
und Suchfilter zusammen:
- Durch das Erweitern eines Objekts wird eine neue Kopie des Objekts erstellt und baut dann darauf auf. 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. Von dort kann ein Entwickler verschiedene Felder, Filter oder andere Eigenschaften hinzufügen, um die Ansicht der Basisansicht zu ändern. Die Idee dahinter ist, dass Sie mit einem Basisobjekt beginnen und es dann auf unterschiedliche Weise in mehreren anderen Objekten verwenden. Auf der Dokumentationsseite Code bei Erweiterungen wiederverwenden finden Sie eine umfassende Beschreibung der Arbeit mit Erweiterungen.
- Durch die Verfeinerung eines Objekts wird eine Ebene mit Änderungen am Objekt hinzugefügt. Im Gegensatz zum Erweitern werden jedoch bei der Verfeinerung nicht mehrere Kopien des Objekts erstellt. Die Idee ist, auf einem Basisobjekt aufzubauen, ohne sein ursprüngliches LookML zu ändern.
Als Beispiel für die Standardverwendung von Optimierungen finden Sie hier ein Explore namens orders
und das Explore +orders
, das ihn verfeinert:
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
-Element enthält. Aufbauend auf dem Beispiel sehen Sie hier dasselbe orders
-Explore. Zusätzlich gibt es ein Basis-Explore mit dem Namen users_base
. Der Suchfilter +orders
verfügt jetzt über einen extends
-Parameter, der das users_base
einbringt:
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 hat zur Folge, dass die Ansicht +orders
das Explore users_base
jetzt erweitert.
So implementiert Looker extends
in Verfeinerungen
Das Erweitern eines Objekts innerhalb eines Suchfilters ist ein erweitertes LookML-Konzept. Bevor Sie extends
in einem Suchfilter verwenden, sollten Sie sich mit den folgenden Punkten vertraut machen:
- So implementiert Looker
extends
: Wenn ein LookML-Element sowohl im erweitertened-Objekt als auch im expanding-Objekt 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 Verfeinerungen: Wenn ein LookML-Element in mehreren Verfeinerungen definiert ist, überschreibt der letzte Suchfilter frühere Verfeinerungen. Weitere Informationen finden Sie im Abschnitt Optimierungen werden der Reihe nach angewendet auf dieser Seite.
Und schließlich sollten Sie verstehen, wie Looker diese Prinzipien kombiniert, um extends
zu implementieren, das in Optimierungen verwendet wird. Hier ist die Reihenfolge, die von Looker implementiert wird. Im Fall von Konflikten wird der vorherige Schritt bei jedem Schritt überschrieben:
- Werte aus dem
extends
, der im Objekt angegeben ist - Werte aus dem
extends
, die in Suchfiltern des Objekts angegeben sind - Werte aus dem Objekt
- Werte aus den Optimierungen des Objekts
Hier ist zur Veranschaulichung ein Beispiel, das dem Wert des Parameters label
bei jedem Schritt der Implementierung 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 den Wert von label
für das Explore orders
in diesem Beispiel:
- Werte aus dem
extends
, der im Objekt angegeben ist. Da das Exploreorders
einenextends
-Parameter hat, beginnt Looker mit den LookML-Elementen des Objekts, das erweitert wird. In diesem Fall ist das das Exploreorders_base
. An dieser Stelle lautet der Wert fürlabel
„Orders Base“. - Werte aus dem
extends
, die in Suchfiltern des Objekts angegeben wurden. Daorders
einen Suchfilter und der Suchfilter einenextends
-Parameter hat, wendet Looker anschließend LookML-Elemente aus der Erweiterung des Suchfilters an, in diesem Fall das Exploreusers_base
. An dieser Stelle lautet der Wert fürlabel
„Nutzerbasis“. - Werte aus dem Objekt. Nachdem Sie alle Erweiterungen behandelt haben, wendet Looker Elemente aus dem Erweiterungsobjekt an, in diesem Fall das Explore
orders
. Bei Konflikten hat das Erweiterungsobjekt Vorrang. Der Wert vonlabel
lautet jetzt „Bestellungen“. - Werte aus den Optimierungen des Objekts. Schließlich wendet Looker Elemente aus allen Verfeinerungen des
orders
-Explores an. Bei Konflikten erhält das Suchfilterobjekt. Der Wertlabel
lautet jetzt „Orders Preferred“ (Aufträge verfeinert).
Die Suchfilter „extends
“ sind additiv
Wie im Abschnitt Parameter zum Überschreiben von Verbesserungen auf dieser Seite beschrieben, überschreiben Suchfilter in der Regel die ursprünglichen Einstellungen eines Objekts. Dies gilt nicht für den Parameter extends
. Wenn extends
in einem Suchfilter verwendet wird, wird der Wert im extends
-Parameter an die Liste der Elemente angehängt, die im ursprünglichen Objekt oder in früheren Suchfiltern (sofern vorhanden) erweitert wurden. Sollten Konflikte auftreten, wird dem letzten Element in der Erweiterungskette Priorität zugewiesen.
Hier sehen Sie beispielsweise ein Basis-Explore namens orders_base
und ein orders
-Explore, das die Basis erweitert. Darüber hinaus gibt es ein 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 orders
-Explore erweitert das orders_base
. Anschließend fügen die +orders
-Verfeinerungen users_base
der extends
-Liste hinzu. Das hat zur Folge, dass das +orders
-Explore jetzt sowohl orders_base
als auch users_base
erweitert, so als wäre dies der ursprüngliche LookML-Code für das Explore:
explore: orders {
extends: [orders_base, users_base]
}
Sollten Konflikte auftreten, wird dem letzten Element in der Erweiterungskette Priorität zugewiesen. In diesem Beispiel überschreiben die Elemente in users_base
alle in Konflikt stehenden Elemente in orders_base
.
Das Konzept, mehr als ein Objekt gleichzeitig zu erweitern, wird auf der Dokumentationsseite Code mit Erweiterungen wiederverwenden beschrieben.
Ein letzter Hinweis: In diesem Beispiel spielt die Reihenfolge der explore
-Parameter keine Rolle. In Fällen mit mehreren Suchfiltern desselben Objekts spielt die Reihenfolge der Verfeinerungen eine Rolle. Wie im Abschnitt Verfeinerungen werden der Reihe nach angewendet auf dieser Seite beschrieben, überschreibt die letzte Optimierung in einer Datei vorherige Suchfilter.
Verfeinerungen im LookML-Projekt verwenden
Hier sind die grundlegenden Schritte zur Verfeinerung von Ansichten und Explores in Ihrem Projekt aufgeführt:
- Wählen Sie die Ansicht oder das Explore aus, die bzw. das Sie verfeinern möchten.
- Entscheiden Sie, wo Sie Ihre Optimierungen speichern 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 auf der Dokumentationsseite Informationen zu anderen Projektdateien unter Datentestdatei erstellen.
- Binden Sie mit dem Parameter
include
Ihre Optimierungen in das Modell ein:- Die Datei, in die Sie Ihre Verfeinerungen schreiben, müssen die Dateien des LookML-Codes angeben, den Sie verfeinern. Die Looker-IDE gibt Warnungen aus, wenn Sie versuchen, ein nicht enthaltenes Objekt zu verfeinern.
- Nehmen Sie in Ihre Modelldatei die Dateien auf, in denen Ihre Suchfilter definiert sind. Sie können Dateien auf sehr kreative Weise kombinieren und einschließen. Weitere Informationen finden Sie im Abschnitt Verfeinerungen zum Hinzufügen von Ebenen zu Ihrem Modell verwenden auf dieser Seite.
Beispiel
Die Verfeinerung von LookML-Objekten ist eine einfache Möglichkeit, Ansichten und Explores anzupassen, ohne das ursprüngliche LookML bearbeiten zu müssen. Dies 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, von denen jede viele Dimensionen hat.
Jetzt importiert ein anderes LookML-Projekt namens e_faa_refined
die Explore-Datei aircraft
. Im e_faa_refined
-Projekt können Sie das aircraft
-Explore mithilfe einer Optimierung erheblich vereinfachen.
Da es sich bei dem Explore aircraft
um eine importierte Datei handelt, können Sie sie nicht direkt bearbeiten. Stattdessen können Sie eine Verfeinerung 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, mit dem die ursprünglicheaircraft.explore.lkml
-Datei aus dem importierten Projekt importiert wird. Weitere Informationen dazu, wie Sie auf importierte Projektdateien verweisen, finden Sie auf der Dokumentationsseite Dateien aus anderen Projekten importieren. - Optimierungen des
aircraft
-Explores:
Das Ergebnis sieht so aus, als wäre dies die ursprüngliche aircraft
-Explore- 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 für die Verwendung von Verfeinerungen zum Anpassen einer einzelnen Ansicht für mehrere Anwendungsfälle finden Sie im Cookbook-Rezept Maximizing code reusability with DRY LookML: Customize a single base view for multiple use cases.
Andere Anwendungsfälle für Optimierungen
Wie bereits erwähnt, sind Optimierungen ideal, um schreibgeschützte LookML-Objekte wie Looker-Blöcke oder importierte Dateien anzupassen.
Sobald Sie jedoch ein Gefühl dafür haben, Verfeinerungen hinzuzufügen und in Ihre Modelle aufzunehmen, können Sie mit Ihren Projekten sehr coole Dinge erreichen, wie in den folgenden Beispielen beschrieben.
Analysen mithilfe von Verfeinerungen hinzufügen
Sie können Verfeinerungen verwenden, um Analysen zu Ihrem Modell hinzuzufügen, ohne die ursprünglichen LookML-Dateien zu ändern. Wenn es beispielsweise ein Projekt gibt, bei dem die Ansichten und Explores aus Tabellen in Ihrer Datenbank generiert und in einer LookML-Datei namens faa_basic.lkml
gespeichert werden, können Sie eine faa_analysis.lkml
-Datei erstellen, in der Sie Verfeinerungen zum Hinzufügen von Analysen verwenden. Hier sehen Sie ein Beispiel für eine neue abgeleitete Tabelle namens distance_stats
mit einer Entfernungsanalyse. Dieses Beispiel zeigt eine Verfeinerung des vorhandenen Explores flights
aus der Datei faa_basic.lkml
, die die abgeleitete Tabelle distance_stats
mit dem Explore flights
verbindet. Am Ende des Beispiels wurde außerdem die vorhandene Ansicht flights
um neue Felder aus der Analyse ergänzt:
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 mit Verfeinerungen Ebenen hinzufügen
Ein weiterer interessanter Anwendungsfall für Verfeinerungen ist das Hinzufügen von Ebenen zu Ihrem Projekt. Sie können mehrere Suchfilterdateien erstellen und diese dann strategisch einschließen, um Ebenen hinzuzufügen.
Im FAA-Projekt gibt es beispielsweise die Datei faa_raw.lkml
, 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, jede mit einer Dimension für jede Datenbankspalte.
Zusätzlich zur RAW-Datei können Sie eine faa_basic.lkml
-Datei erstellen, um eine neue Ebene mit grundlegenden Optimierungen hinzuzufügen, z. B. JOINs zu Ihren Explores oder Messungen zu Ihren Ansichten:
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.
Von dort aus 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 verschiedene Verfeinerungsdateien hinzufügen, die Sie erstellt haben, um andere Ebenen in Ihrem Modell zu definieren.
Verfeinerungen für PATs 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 nichtflüchtigen abgeleiteten Tabellen (PDTs) sollten Sie keine Erweiterungen verwenden, da mit jeder Erweiterung einer PAT eine neue Kopie der Tabelle in der Datenbank erstellt wird.
Sie können jedoch Verfeinerungen zur Ansicht der PAT hinzufügen, da diese keine neue Kopie des zu verfeinernden Objekts erstellen.
Suchfilter für ein Objekt mithilfe von Metadaten aufrufen
Sie können in der Looker-IDE auf einen explore
- oder view
-Parameter klicken und im Metadatenbereich alle Suchfilter für das Objekt 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 auch für die Verfeinerungen die Lokalisierungsregeln gelten. Wenn Sie ein Objekt verfeinern und dann neue Bezeichnungen oder Beschreibungen definieren, sollten Sie Lokalisierungsdefinitionen in den Sprachstringdateien Ihres Projekts angeben. Weitere Informationen finden Sie auf der Dokumentationsseite LookML-Modell lokalisieren.