LookML-Optimierungen

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:

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:

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 von final: 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:

  1. Werte aus dem im Objekt angegebenen extends
  2. Werte aus dem in Suchfilter des Objekts angegebenen extends
  3. Werte aus dem Objekt
  4. 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:

  1. Werte aus der im Objekt angegebenen extends. Da orders Explore den Parameter extends hat, beginnt Looker mit den LookML-Elementen des erweiterten Objekts. In diesem Fall ist das orders_base Explore. An dieser Stelle lautet der label-Wert "Orders Base".
  2. Werte aus den extends, die in Suchfiltern des Objekts angegeben sind. Da orders einen Suchfilter hat und der Suchfilter einen extends-Parameter hat, wendet Looker dann LookML-Elemente aus der Erweiterung an, in diesem Fall die users_base-Erkundung. An dieser Stelle lautet der label-Wert "Users Base".
  3. 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 Wert label ist jetzt "Orders".
  4. Werte aus den Suchfiltern des Objekts. Schließlich wendet Looker Elemente aus allen Verfeinerungen der orders-Erkundung an. Bei Konflikten gewinnt das Suchfilterobjekt. Der Wert label 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 ordersErweitern 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:

  1. Wählen Sie die Datenansicht oder den Tab „Erkunden“ aus, die Sie verfeinern möchten.
  2. 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.
  3. 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ünglichen aircraft.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“:
    • Mit dem +-Zeichen vor dem Namen „Entdecken“ wird eine Optimierung der vorhandenen Suche angezeigt.
    • Durch den Parameter label wird das Label „Erkunden“ in „Vereinfachtes Flugzeug“ geändert.
    • Der Parameter fields gibt an, dass in der Ansicht nur drei Felder angezeigt werden.

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.