Best Practice: Nachhaltige, wartbare LookML schreiben

Diese Best Practices spiegeln die Empfehlungen eines funktionsübergreifenden Teams erfahrener Lookers wider. Diese Erkenntnisse basieren auf jahrelanger Erfahrung in der Zusammenarbeit mit Looker-Kunden – von der Implementierung bis hin zum langfristigen Erfolg. Die Best Practices sind so konzipiert, dass sie für die meisten Nutzer und Situationen geeignet sind. Wie immer sollten Sie jedoch Ihr Urteilsvermögen nutzen, wenn Sie die Vorschläge auf dieser Seite umsetzen.

Diese Seite enthält Empfehlungen zum Schreiben einer nachhaltigen, wartbaren LookML. Diese Empfehlungen werden in den folgenden Abschnitten genauer beschrieben:

Substitutionsoperatoren verwenden

Substitutionsoperatoren sollten in allen LookML-Dateien verwendet werden. Ein LookML-Modell sollte nur einen einzigen Bezugspunkt auf ein Objekt im physischen Datenmodell haben. Alle nachfolgenden Definitionen, die auf dieses Objekt verweisen müssen, sollten dies tun, indem sie auf das bereits definierte LookML-Objekt verweisen.

Verwenden Sie beim Verweis auf die zugrunde liegende Datenbanktabelle die Syntax ${TABLE}.field_name für alle Basisdimensionen, bei denen Daten direkt aus den zugrunde liegenden Datenbankspalten abgerufen werden. Wenn sich ein Schema- oder Tabellenname ändert, kann ein Entwickler das Schema oder den Tabellennamen an einer Stelle im Parameter sql_table_name aktualisieren und durch den Rest des Codes weitergeben lassen.

Verwenden Sie die Syntax ${field_name}, wenn Sie auf Dimensionen oder Messwerte verweisen, die bereits in der LookML-Datei definiert wurden. Wenn sich der Name einer Spalte ändert, muss diese Änderung nur im Parameter sql der grundlegenden Dimension(en) aktualisiert werden. Diese Änderung wird dann automatisch auf alle anderen Felder angewendet, die auf die Spalte verweisen. Wenn sich beispielsweise der Name einer Spalte in Ihrer Datenbank von usersid in users_id ändert, müssen Sie die Referenz in Looker ändern. Wenn Sie ${field_name} verwenden, müssen Sie nur eine Zeile aktualisieren.

Wenn mehrere Dimensionen und Messwerte mit ${TABLE}.field_name auf ein vorhandenes LookML-Feld verweisen, sind viele Änderungen erforderlich. Betrachten Sie beispielsweise die Messwerte this_week_count und this_month_count im folgenden LookML-Beispielcode:

dimension: usersid {
  type: number
  sql: ${TABLE}.usersid ;; # Change here
}

measure: this_week_count {
  type: count_distinct
  sql: ${TABLE}.usersid ;; # Change here
  filters: [created_date: "7 days"]
}

measure: this_month_count {
  type: count_distinct
  sql: ${TABLE}.usersid ;; # Change here
  filters: [created_date: "1 month"]
}

Da sowohl this_week_count als auch this_month_count die Syntax ${TABLE}.usersid im Parameter sql verwenden, muss der Parameter sql für alle drei Felder aktualisiert werden.

Bei der Referenz ${field_name} ist nur eine Änderung erforderlich:

dimension: usersid {
  type: number
  sql: ${TABLE}.usersid ;; # Change here
}

measure: this_week_count {
  type: count_distinct
  sql: ${usersid} ;;       #Using ${field_name} to reference the LookML field `usersid`
  filters: [created_date: "7 days"]
}

measure: this_month_count {
  type: count_distinct
  sql: ${usersid} ;;       #Using ${field_name} to reference the LookML field `usersid`
  filters: [created_date: "1 month"]
}

Weitere Verwendungen von Substitutionsoperatoren finden Sie auf der Dokumentationsseite SQL einbinden und auf LookML-Objekte verweisen.

Feldsätze definieren

Verwenden Sie Sätze zum Verwalten wiederverwendbarer Feldlisten im Modell. Alle Listen mit Feldern, die wiederholt werden, sei es mit dem Parameter fields oder in Aufschlüsselungsfeldern, sollten in Sätze aufgenommen werden, um einen zentralen Ort im Modell zu erstellen, an dem die Feldliste aktualisiert oder Feldverweise geändert werden kann. Weitere Informationen zu Gruppen finden Sie auf der Dokumentationsseite für den Parameter set.

Codewiederholung vermeiden

Betrachten Sie LookML-Objekte als Bausteine und verwenden Sie den Parameter extends, um Objekte auf unterschiedliche Weise zu kombinieren, ohne Code zu wiederholen. Ausführliche Informationen und Beispiele für die Wiederverwendung von Code finden Sie auf der Dokumentationsseite Code mit Erweiterungen wiederverwenden. Weitere Beispiele finden Sie auf den Seiten mit der Parameterdokumentation für extends (für Datenansichten) und extends (für Explores) sowie im Communitybeitrag Joins mithilfe von Erweiterungen definieren.

Achten Sie darauf, Code nicht an mehreren Stellen zu wiederholen, damit die explorativen Datenanalysen einheitlich sind. Weitere Vorschläge dazu finden Sie im Looker-Communitybeitrag zum Vermeiden von Inkonsistenzen in Explores.

Elemente wie Kartenebenen und Werteformate zusammenführen

Definieren Sie benutzerdefinierte Kartenebenen zentral in einer LookML-Datei namens map_layers.lkml. Eine solche Datei können Sie anhand der Looker-Dokumentation zu Projektdateien erstellen. Diese Datei kann dann nach Bedarf in alle Modelle aufgenommen werden. Alternativ können Sie JSON-Dateien direkt dem Repository hinzufügen, indem Sie Datendateien per Drag-and-drop in Ihr LookML-Projekt ziehen und dort darauf verweisen.

Angenommen, Sie haben eine Kartenebenendatei namens map_layers.base.lkml, die den folgenden LookML-Code enthält:

map_layer: example_africa {
  file: "africa_file_name.json"
  property_key: "geounit"
}

map_layer: example_asia {
  file: "asia_file_name.json"
  property_key: "geounit"
}

map_layer: example_europe {
  file: "europe_file_name.json"
  property_key: "geounit"
}

Sie können die Datei „map layers“ (Kartenebenen) map_layers.base.lkml in jedes Modell im Projekt einbinden, indem Sie der gewünschten Modelldatei den LookML-Code include: "map_layers.base.lkml" hinzufügen.

Sie können alle benutzerdefinierten Wertformate zentral im Modell festlegen. Verwenden Sie den Parameter named_value_format, um benutzerdefinierte Formate im Modell festzulegen, und verweisen Sie dann mit dem Parameter value_format_name in Dimensionen und Messwerten darauf.

Entwicklungsrichtlinien erstellen

Definieren Sie Entwicklungsrichtlinien, die das Entwickeln und Skalieren eines LookML-Modells erleichtern. Im Looker-Communitybeitrag zu den Beispiel-Entwicklungsrichtlinien für LookML finden Sie eine Schritt-für-Schritt-Anleitung mit einer Liste mit Beispielentwicklungsrichtlinien. Zu den allgemeinen Richtlinien gehören Anforderungen für:

  • LookML-Dateien übersichtlich organisieren, damit sie einheitlich und einfach zu bedienen sind
  • Kommentare in allen Ansichten und Modellen verwenden, um Kontext zu dem erstellten LookML-Code hinzuzufügen
  • Dokumentation in Looker mit Markdown-Dateien erstellen