Übersicht
Mit LookML-Verfeinerungen können Sie eine vorhandene Ansicht oder ein vorhandenes Explore anpassen, ohne die LookML-Datei zu bearbeiten, die sie enthält. Das ist ideal für:
- Projekte mit Looker Blocks, die vorgefertigte LookML-Elemente verwenden
- Projekte, in denen Dateien aus anderen Projekten importiert werden
- Projekte, in denen Sie häufig Dateien aus Tabellen in Ihrer Datenbank generieren müssen
- Situationen, in denen Sie LookML zwischen Modellen oder Projekten freigeben möchten, während Sie an jedem Ort Anpassungen vornehmen (Hub-and-Spoke-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 Ansicht flights
wie im folgenden Beispiel verfeinern: Verwenden Sie den Parameter view
mit demselben Ansichtsnamen, fügen Sie aber ein Pluszeichen (+
) vor dem Namen ein, um anzugeben, dass es sich um eine Verfeinerung einer vorhandenen Ansicht handelt.
Durch diese Optimierung wird der vorhandenen Ansicht flights
die Dimension air_carrier
hinzugefügt:
view: +flights {
dimension: air_carrier {
type: string
sql: ${TABLE}.air_carrier ;;
}
}
Diese Optimierung kann in jeder LookML-Datei im Projekt erfolgen, z. B. in einer Modelldatei, einer Ansichtsdatei oder in einer eigenen LookML-Datei. Weitere Informationen finden Sie im Abschnitt Verfeinerungen in Ihrem LookML-Projekt verwenden.
Die Optimierung in Kombination mit dem ursprünglichen LookML führt zu einem Endergebnis, als wäre dies 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 Air Carrier (Fluggesellschaft), so als hätten Sie sie der ursprünglichen Ansichtsdatei hinzugefügt.
Weitere Informationen zur Implementierung finden Sie im Abschnitt Beispiel.
Verfeinerungen im Vergleich zu Erweiterungen
Looker unterstützt auch das Erweitern 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 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 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 ein vorhandenes Explore mit einigen Anpassungen an bestimmten Objekten ändern möchten, ohne Kopien der Ansicht oder des Explores zu erstellen. Verfeinerungen sind ideal, wenn Sie die Basisansicht oder das Basis-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 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
.
Erfahrene LookML-Entwickler können den Parameter extends
in einer LookML-Verfeinerung verwenden. Weitere Informationen finden Sie auf dieser Seite im Abschnitt Verfeinerungen können Erweiterungen enthalten.
Mit Verfeinerungen werden die meisten Parameter überschrieben
Wichtig: In den meisten Fällen werden durch eine Optimierung die ursprünglichen Einstellungen eines Objekts überschrieben. 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 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 Verfeinerungen additiv und werden nicht überschrieben. Weitere Informationen finden Sie im Abschnitt Einige Parameter sind additiv auf dieser Seite.
Einige Parameter sind additiv
In vielen Fällen, in denen die Verfeinerung denselben Parameter wie das zu verfeinernde Objekt enthält, werden die Parameterwerte des verfeinerten Objekts durch die Verfeinerung überschrieben.
Für einige Parameter können Verfeinerungen jedoch additiv sein. Das bedeutet, dass die Werte aus dem Basisobjekt in Verbindung mit den Werten aus dem verfeinerten Objekt verwendet werden.
Die folgenden Parameter sind additiv:
Für Dimensionen und Messwerte:
Für Parameter:
Für abgeleitete Tabellen:
Für Ansichten:
extends
(Weitere Informationen finden Sie auf dieser Seite im Abschnitt Verfeinerungenextends
sind additiv.)
Für Explores:
access_filter
aggregate_table
extends
(Weitere Informationen finden Sie auf dieser Seite im Abschnitt Verfeinerungenextends
sind additiv.)join
query
Hier sehen Sie beispielsweise eine Ansicht mit der Dimension name
und dem Parameter link
:
view: carriers {
sql_table_name: flightstats.carriers ;;
dimension: name {
sql: ${TABLE}.name ;;
type: string
link: {
label: "Google {{ value }}"
url: "http://www.google.com/search?q={{ value }}"
icon_url: "http://google.com/favicon.ico"
}
}
}
Hier sehen Sie eine Verfeinerung der Ansicht carriers
mit 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 optimierten carriers
-Ansicht sind die beiden link
-Parameter additiv. In der Dimension name
werden also beide Links angezeigt.
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 einsetzen. Das bedeutet aber auch, dass Entwickler sehr genau auf die Reihenfolge achten müssen, in der die Optimierungen angewendet werden:
- Innerhalb eines Projekts werden die Optimierungen in der Reihenfolge angewendet, in der ihre Dateien enthalten sind. Verfeinerungen aus Dateien, die zuletzt eingeschlossen wurden, überschreiben Verfeinerungen aus Dateien, die früher eingeschlossen wurden.
- Innerhalb einer einzelnen Datei werden die Verfeinerungen zeilenweise nach unten angewendet. Die Verfeinerungen mit der höchsten Zeilennummer werden zuletzt angewendet und überschreiben alle früheren Verfeinerungen, wenn es Konflikte gibt.
In der folgenden Ansichtsdatei gibt es beispielsweise zwei Verfeinerungen der Ansicht faa_flights
. Bei der ersten Verfeinerung wird eine Dimension (hidden: yes
) ausgeblendet, bei der zweiten wird die Dimension (hidden: no
) angezeigt. Bei solchen Konflikten hat die Verfeinerung, die in der Datei am weitesten unten 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 Sie mehrere Dateien in ein Projekt einfügen: Die Anpassungen in der letzten Datei, die in den Includes aufgeführt ist, haben Vorrang. Wenn eine Modelldatei beispielsweise die folgenden Dateien enthält:
include: "/refinements/distance_analysis.lkml"
include: "/refinements/finishing_touches.lkml"
Zuerst werden alle Änderungen in der distance_analysis.lkml
-Datei und dann alle Änderungen in der finishing_touches.lkml
-Datei angewendet. Bei Konflikten haben die Optimierungen in der letzten Datei, finishing_touches.lkml
, Vorrang.
final: yes
verwenden, um weitere Optimierungen zu verhindern
Wie bereits beschrieben, kann dasselbe Objekt mehrmals an mehreren Stellen optimiert werden. Die letzte Optimierung überschreibt alle vorherigen Optimierungen.
Wenn Sie möchten, dass eine Verfeinerung als endgültige Verfeinerung für die Ansicht oder den Explore berücksichtigt wird, können Sie 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 einen LookML-Fehler verursachen, 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 einem Refinement das Flag final: yes
hinzufügen, können Sie überprüfen, ob Ihre Refinements in der gewünschten Reihenfolge angewendet werden.
Verfeinerungen können Erweiterungen enthalten
Erfahrene LookML-Entwickler können den Parameter extends
in einer LookML-Verfeinerung verwenden, um das erweiterte Objekt dem zu verfeinernden Objekt hinzuzufügen.
Zusammenfassung des Verhaltens von extends
und Verfeinerungen:
- Wenn Sie ein Objekt erweitern, wird eine neue Kopie des Objekts erstellt, die dann als Grundlage dient. 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 Basisansicht zu ändern. Die Idee ist, dass Sie mit einem Basisobjekt beginnen und es dann auf unterschiedliche Weise in mehreren anderen Objekten verwenden. Eine ausführliche Beschreibung der Verwendung von „extends“ finden Sie auf der Dokumentationsseite Code mit „extends“ wiederverwenden.
- Beim Verfeinern eines Objekts wird dem Objekt eine Ebene mit Änderungen hinzugefügt. Im Gegensatz zum Erweitern werden jedoch keine mehreren Kopien des Objekts erstellt. Die Idee ist, auf einem Basisobjekt aufzubauen, ohne die ursprüngliche LookML zu ändern.
Hier ist ein Beispiel für die Standardverwendung von Verfeinerungen: ein Explore namens orders
und das Explore +orders
, 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 Verfeinerung hinzufügen, die extends
enthält. Hier ist dasselbe orders
-Exploration, die auf dem Beispiel basiert. Außerdem gibt es ein Basis-Explore namens users_base
. Die Verfeinerung +orders
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 hier ist, dass die +orders
-Verfeinerung eine extends
enthält. Das Ergebnis ist, dass die +orders
-Ansicht jetzt die users_base
-Schaltfläche „Erkunden“ erweitert.
So implementiert Looker extends
in Verfeinerungen
Das Erweitern eines Objekts in einer Verfeinerung ist ein fortgeschrittenes LookML-Konzept. Bevor Sie extends
in einer Verfeinerung verwenden, sollten Sie sich mit den folgenden Themen vertraut machen:
- So implementiert Looker
extends
: Wenn ein LookML-Element sowohl im erweiterten als auch im erweiternden Objekt definiert ist, wird die Version im erweiternden Objekt verwendet, sofern der Parameter nicht additive ist. Weitere Informationen finden Sie auf der Dokumentationsseite Code mit „extends“ wiederverwenden. - So werden Verfeinerungen in Looker implementiert: Wenn ein LookML-Element in mehreren Verfeinerungen definiert ist, wird es durch die letzte Verfeinerung überschrieben. Weitere Informationen finden Sie auf dieser Seite im Abschnitt Verfeinerungen werden in der Reihenfolge angewendet.
Schließlich sollten Sie verstehen, wie Looker diese Prinzipien kombiniert, um extends
zu implementieren, das für die Optimierung verwendet wird. Hier ist die Reihenfolge, in der Looker die Einstellungen implementiert. Bei Konflikten wird der vorherige Schritt jeweils überschrieben:
- Werte aus dem im Objekt angegebenen
extends
- Werte aus dem
extends
, das in den Verfeinerungen des Objekts angegeben ist - Werte aus dem Objekt
- Werte aus den Verfeinerungen des Objekts
Zur Veranschaulichung folgt hier ein Beispiel, in dem der Wert des Parameters label
in jedem Schritt der Implementierung nachvollzogen wird:
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 wird der Wert von label
für das Explore orders
in diesem Beispiel in Looker implementiert:
- Werte aus dem im Objekt angegebenen
extends
. Da dasorders
-Explore einenextends
-Parameter hat, beginnt Looker mit den LookML-Elementen des Objekts, das erweitert wird. In diesem Fall ist das dasorders_base
-Explore. An diesem Punkt ist derlabel
-Wert „Orders Base“. - Werte aus dem
extends
, das in den Verfeinerungen des Objekts angegeben ist. Daorders
eine Verfeinerung hat und die Verfeinerung einenextends
-Parameter hat, wendet Looker LookML-Elemente aus der Erweiterung der Verfeinerung an, in diesem Fall dasusers_base
-Explore. An dieser Stelle ist derlabel
-Wert „Nutzerbasis“. - Werte aus dem Objekt. Nachdem alle Erweiterungen berücksichtigt wurden, wendet Looker Elemente aus dem erweiternden Objekt an, in diesem Fall das
orders
-Explore. Bei Konflikten hat das erweiternde Objekt Vorrang. Der Wert vonlabel
ist jetzt „Orders“. - Werte aus den Verfeinerungen des Objekts. Schließlich wendet Looker Elemente aus allen Verfeinerungen des
orders
-Explores an. Bei Konflikten hat das Verfeinerungsobjekt Vorrang. Derlabel
-Wert ist jetzt „Orders Refined“.
Suchfilter extends
sind additiv
Wie im Abschnitt Parameter durch Optimierungen überschreiben auf dieser Seite beschrieben, überschreiben Optimierungen in der Regel die ursprünglichen Einstellungen eines Objekts. Das ist beim Parameter extends
nicht der Fall. Wenn extends
in einer Verfeinerung verwendet wird, wird der Wert im Parameter extends
an die Liste der Elemente angehängt, die im ursprünglichen Objekt oder in vorherigen Verfeinerungen erweitert wurden. Bei Konflikten hat das letzte Element in der Kette von Erweiterungen Vorrang.
Hier sehen Sie beispielsweise ein Basis-Explore namens orders_base
und ein orders
-Explore, das das Basis-Explore erweitert. Außerdem gibt es die users_base
-Funktion „Erkunden“ und die +orders
-Funktion „Verfeinern“, 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
}
Das orders
-Explore erweitert orders_base
. Durch die +orders
-Verfeinerungen wird users_base
der Liste extends
hinzugefügt. Das Ergebnis ist, dass das +orders
-Explore jetzt sowohl orders_base
als auch users_base
erweitert, als ob dies das ursprüngliche LookML für das Explore wäre:
explore: orders {
extends: [orders_base, users_base]
}
Bei Konflikten hat das letzte Element in der Kette von Erweiterungen Vorrang. In diesem Beispiel würden die Elemente in users_base
alle in Konflikt stehenden Elemente in orders_base
überschreiben.
Das Konzept, mehrere Objekte gleichzeitig zu erweitern, 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 in der Reihenfolge angewendet auf dieser Seite beschrieben, wird die letzte Verfeinerung in einer Datei auf vorherige Verfeinerungen angewendet.
Verfeinerungen in Ihrem LookML-Projekt verwenden
Hier sind die allgemeinen Schritte zum Verfeinern von Ansichten und Explores in Ihrem Projekt:
- Wählen Sie die Ansicht oder das Explore aus, das Sie optimieren möchten.
- Entscheiden Sie, wo Sie Ihre Optimierungen vornehmen möchten. Sie können Verfeinerungen in jeder vorhandenen LookML-Datei hinzufügen oder separate LookML-Dateien für Ihre Verfeinerungen erstellen. Ein Beispiel für das Erstellen generischer LookML-Dateien finden Sie in der Anleitung zum Erstellen einer Datentestdatei auf der Dokumentationsseite Andere Projektdateien.
- Verwenden Sie den Parameter
include
, um Ihre Optimierungen in Ihr Modell einzubinden:- In der Datei, in der Sie die Optimierungen schreiben, müssen Sie die Dateien des LookML einfügen, das Sie optimieren. In der Looker-IDE werden Warnungen angezeigt, wenn Sie versuchen, ein Objekt zu verfeinern, das nicht enthalten ist.
- Fügen Sie in Ihre Modelldatei die Dateien ein, in denen Ihre Optimierungen definiert sind. Sie können Dateien kombinieren und Includes auf sehr kreative Weise verwenden. Weitere Informationen finden Sie im Abschnitt Verfeinerungen verwenden, um Ihrem Modell Ebenen hinzuzufügen auf dieser Seite.
Beispiel
Mit LookML-Verfeinerungen lassen sich Ansichten und Explores ganz einfach anpassen, ohne dass die ursprüngliche LookML bearbeitet werden muss. Das ist besonders praktisch, wenn Ihre Ansichten und Explores in Ihrem Projekt schreibgeschützt sind, z. B. bei Dateien, die aus anderen Projekten importiert wurden. Hier sehen Sie ein Beispiel für das Verfeinern einer Analyse.
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
}
}
Diese explorative Datenanalyse enthält mehrere Ansichten, die jeweils viele Dimensionen haben.
Nun importiert ein anderes LookML-Projekt namens e_faa_refined
die Explore-Datei aircraft
. Im Projekt e_faa_refined
können Sie eine Verfeinerung verwenden, um die aircraft
-Exploration erheblich zu vereinfachen.
Da es sich bei aircraft
Explore um eine importierte Datei handelt, können Sie sie nicht direkt bearbeiten. Stattdessen können Sie eine Verfeinerung hinzufügen. Hier sehen Sie 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:
- Der Parameter
include
, um die ursprünglicheaircraft.explore.lkml
-Datei aus dem importierten Projekt abzurufen. Weitere Informationen dazu, wie auf importierte Projektdateien verwiesen wird, finden Sie auf der Dokumentationsseite Dateien aus anderen Projekten importieren. - Änderungen an der
aircraft
-Schaltfläche „Entdecken“:
Das Endergebnis ist dasselbe wie bei der ursprünglichen aircraft
-Schaltfläche „Entdecken“ und der aircraft
-Schaltfläche „Ansehen“:
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 Kochrezept Maximizing code reusability with DRY LookML: Customizing a single base view for multiple use cases.
Weitere Anwendungsfälle für Optimierungen
Wie bereits erwähnt, eignen sich Verfeinerungen ideal, um schreibgeschützte LookML-Objekte wie Looker-Blöcke oder importierte Dateien anzupassen.
Wenn Sie jedoch ein Gefühl dafür bekommen, wie Sie Verfeinerungen hinzufügen und in Ihre Modelle einbeziehen, können Sie sehr interessante Dinge mit Ihren Projekten anstellen, wie in den folgenden Beispielen beschrieben.
Analysen mit Verfeinerungen hinzufügen
Mit Verfeinerungen können Sie Ihrem Modell Analysen hinzufügen, ohne die ursprünglichen LookML-Dateien zu ändern. Wenn es beispielsweise ein Projekt gibt, in dem die Ansichten und Explores aus Tabellen in Ihrer Datenbank generiert und in einer LookML-Datei mit dem Namen faa_basic.lkml
gespeichert werden, können Sie eine faa_analysis.lkml
-Datei erstellen, in der Sie mit Verfeinerungen Analysen hinzufügen. Hier sehen Sie ein Beispiel für eine neue abgeleitete Tabelle mit dem Namen distance_stats
, die eine Distanzanalyse enthält. In diesem Beispiel wird das vorhandene Explore flights
aus der Datei faa_basic.lkml
verfeinert, indem die abgeleitete Tabelle distance_stats
mit dem Explore flights
verknüpft wird. Außerdem wird unten im Beispiel die vorhandene Ansicht flights
verfeinert, 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]
}
}
Mit Verfeinerungen Ebenen 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 Dateien für die Verfeinerung erstellen und sie dann strategisch einsetzen, 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, 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 Optimierungen hinzuzufügen, z. B. Joins zu Ihren Explores oder Messwerte zu Ihren Ansichten, wie hier gezeigt:
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 Analysen mit Verfeinerungen hinzufügen.
Dazu müssen Sie nur alle Dateien für die Verfeinerung in die Modelldatei einfügen. Sie können die Modelldatei auch verwenden, um 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 einfügen, die Sie erstellt haben, um andere Ebenen zu definieren, die Sie in Ihrem Modell verwenden möchten.
Verfeinerungen für PDTs verwenden
Wie im Abschnitt Optimierungen im Vergleich zu „extends“ auf dieser Seite beschrieben, wird durch eine Erweiterung eine neue Kopie des zu erweiternden Objekts erstellt. Bei persistenten abgeleiteten Tabellen (PDTs) sollten Sie keine Erweiterungen verwenden, da durch jede Erweiterung einer PDT eine neue Kopie der Tabelle in Ihrer Datenbank erstellt wird.
Sie können die Ansicht des benutzerdefinierten Tabellendokuments jedoch verfeinern, da dadurch keine neue Kopie des zu verfeinernden Objekts erstellt wird.
Metadaten verwenden, um Optimierungen für ein Objekt zu sehen
Sie können in der Looker IDE auf einen explore
- oder view
-Parameter klicken und im Metadatenbereich alle Änderungen am Objekt ansehen. Weitere Informationen finden Sie auf der Dokumentationsseite Metadaten für LookML-Objekte.
Wichtige Punkte
Projekte mit Lokalisierung
Wenn Sie ein Objekt verfeinern, müssen Sie beachten, dass Lokalisierungsregeln auch für Ihre Verfeinerungen gelten. Wenn Sie ein Objekt verfeinern und dann neue Bezeichnungen oder Beschreibungen definieren, sollten Sie Lokalisierungsdefinitionen in den Gebietsschema-Zeichenfolgendateien Ihres Projekts angeben. Weitere Informationen finden Sie auf der Dokumentationsseite Ihr LookML-Modell lokalisieren.