Maximierung der Codewiederverwendbarkeit mit DRY LookML: Anpassen einer einzigen Basisansicht für mehrere Anwendungsfälle

Stellen Sie sich vor, Sie haben viele Nutzende, die sich ein Explore teilen, aber je nach Team oder Region unterschiedliche Anwendungsfälle haben. Jeder Nutzer möchte nur die Felder sehen, die für seinen jeweiligen Anwendungsfall gelten. Um den unterschiedlichen Anforderungen Ihrer Nutzer gerecht zu werden, können Sie LookML-Verfeinerungen verwenden, um vorhandene Ansichten und Explores anzupassen, ohne die ursprüngliche LookML ändern zu müssen. Anschließend können Sie diese verfeinerten Ansichten und Explores in separate, dedizierte Modelldateien einbinden, die an die unterschiedlichen Anforderungen Ihrer Nutzer angepasst sind.

Diese Seite enthält ein Beispiel für die Verwendung von LookML-Verfeinerungen, um eine einzelne Basisansicht anzupassen und unterschiedliche Explores für zwei verschiedene Teams in Ihrem Unternehmen zu erstellen. Sie enthält auch Beispiele für das Ausblenden und Hinzufügen von Feldern in verfeinerten Inhalten.

Produkte

Vorbereitung

Beispiel: Mehrere benutzerdefinierte Explores aus derselben Basisansicht erstellen

Angenommen, Sie haben ein Explore Verkäufe, das Daten zu Kunden, Käufen, Versand und Standort enthält. Die Marketing- und Logistikteams Ihres Unternehmens müssen sich diese Daten ansehen, aber sie konzentrieren sich jeweils auf andere Felder im Explore Vertrieb.

Sie möchten im Field Picker „Explore“ nur die Felder anzeigen, die für jedes Team nützlich sind, um das Erkunden zu erleichtern. Dazu können Sie zwei verschiedene Optimierungen der Datenansicht Sales (Verkaufsanalyse) und der Ansicht sales definieren, auf der sie basiert. Im Explore des Marketingteams können Felder mit Bezug zu Kunden und Kauftrends angezeigt werden, während im Explore des Logistikteams Felder mit Bezug zu Versand und Standort angezeigt werden können. Außerdem haben Sie die Möglichkeit, jeder verfeinerten Ansicht neue Felder hinzuzufügen, die den Anforderungen des jeweiligen Teams entsprechen.

Derzeit werden im Field Picker für das Explore Sales alle Felder der Ansicht Sales angezeigt:

Die Ansicht „Verkäufe“ enthält die Felder für Erstellung, Auslieferung, Rückgabe und Versanddatum sowie die Felder „ID“, „Gewinn“, „Status“, „Durchschnittlicher Sonderangebotspreis“, „Gesamtverkaufspreis“ und „Anzahl“.

Im Field Picker werden auch alle Felder aus der Ansicht Users (Nutzer) angezeigt:

Die Ansicht „Nutzer“ enthält Felder für Alter, Ort, Land, Erstellungsdatum, E-Mail-Adresse, Vor- und Nachname, ID, Bundesland, Postleitzahl und Anzahl.

Sie können die Ansicht sales verfeinern, um zwei separate Explores zu erstellen, die nur die Felder enthalten, die für die Marketing- und Logistikteams von Interesse sind. Gehen Sie dazu so vor:

  1. Erstellen Sie eine neue LookML-Datei, in diesem Beispiel eine Datei namens base_analysis.lkml, die den LookML-Code für das Sales-Explore enthält, das auf der Ansicht sales und der verknüpften users-Ansicht basiert. Da Sie das grundlegende Explore von sales und die entsprechenden Ansichten verwenden möchten, um ein benutzerdefiniertes Explore für jedes Team zu erstellen, können Sie alle gemeinsam genutzten Felder und Eigenschaften an einem einzigen Ort definieren, z. B. in einer einzigen Datei.

    
    # base_analysis.lkml
    
    include: "views/sales.view.lkml"
    include: "views/inventory_items.view.lkml"
    include: "views/users.view.lkml"
    
    explore: sales {
      join: inventory_items {
        type: left_outer
        sql_on: ${sales.inventory_item_id} = ${inventory_items.id} ;;
        relationship: many_to_one
      }
    
      join: users {
        type: left_outer
        sql_on: ${sales.user_id} = ${users.id} ;;
        relationship: many_to_one
      }
    }
    
  2. Erstellen Sie zwei separate Dateien für die Verfeinerungen des Sales-Explores, das Sie für jedes Team definieren. Sie können die Dateien marketing_analysis.lkml und logistics_analysis.lkml nennen. Der unten gezeigte LookML-Code verfeinert das Basis-Explore des Typs sales, wie es zuvor in der Datei base_analysis.lkml definiert wurde, um das Label Sales Analysis for Marketing Team (Verkaufsanalyse für Marketingteam) in einer neuen Datei namens marketing_analysis.lkml hinzuzufügen. Mit der Anweisung include: "/base/base_analysis.lkml" wird auf den Inhalt der Datei base_analysis.lkml innerhalb der Datei marketing_analysis.lkml verwiesen.

    
    # marketing_analysis.lkml
    
    include: "/base/base_analysis.lkml"
    
    explore: +sales {
      label: "Sales Analysis for Marketing Team"
    }
    
    
  3. Erstellen Sie für jedes Team eine separate Modelldatei, z. B. ecommerce_marketing.model und ecommerce_logistics.model. Indem Sie die verschiedenen Optimierungen in separaten Modellen für jedes Team aufführen, können Sie denselben Satz von Ansichten und Explores mehrmals optimieren, ohne die Anpassungen zu überschreiben, die Sie für den Anwendungsfall eines Teams vorgenommen haben. Weitere Informationen finden Sie auf der Dokumentationsseite LookML-Verfeinerungen.

  4. Fügen Sie mit dem Parameter include marketing_analysis.lkml in das Modell ecommerce_marketing.model und logistics_analysis.lkml im Modell ecommerce_logistics.model ein.

  5. Fügen Sie den Dateien marketing_analysis.lkml und logistics_analysis.lkml bei Bedarf weitere Suchfilter hinzu. Sie können beispielsweise unnötige Felder ausblenden und den optimierten Explores für jedes Team neue Felder hinzufügen.

Optional kann ein Looker-Administrator den Modellzugriff für jedes dedizierte Modell konfigurieren, um bestimmten Teams den Zugriff auf Explore-Ebene zu gewähren.

Unnötige Felder in den optimierten Explores ausblenden

Sie können die Ansicht sales in der Datei marketing_analysis.lkml wie folgt verfeinern, um die Dimensionsgruppen Zurückgegeben, Versendet, Zugestellt und Erstellt sowie die Dimension Status auszublenden, da diese Felder vom Marketingteam nicht verwendet werden:


# marketing_analysis.lkml

include: "/base/base_analysis.lkml"

explore: +sales {
  label: "Sales Analysis for Marketing Team"
}

view: +sales
  dimension_group: returned {
    hidden: yes
  }

  dimension_group: shipped {
    hidden: yes
  }

  dimension_group: delivered {
    hidden: yes
  }

  dimension_group: created {
    hidden: yes
  }

  dimension: status {
    hidden: yes
  }
}

Analog können Sie die folgende LookML in der Datei logistics_analysis.lkml verwenden, um Felder auszublenden, die das Logistikteam nicht benötigt (z. B. Gewinn, Sonderangebotspreis und Durchschnittlicher Verkaufspreis):


# logistics_analysis.lkml

include: "/base/base_analysis.lkml"

explore: +sales {
  label: "Sales Analysis for Logistics Team"
}

view: +sales {
  dimension: profit {
    hidden: yes
  }

  dimension: sale_price {
    hidden: yes
  }

  measure: average_sale_price {
    hidden: yes
  }
}

Da das Logistikteam keine personenbezogenen Daten über Kunden wie Namen, Alter oder E-Mail-Adresse benötigt, können Sie auch einen Suchfilter für die verknüpfte users-Ansicht in der logistics_analysis.lkml-Datei hinzufügen, um diese Felder aus dem Explore auszublenden:

  view: +users {
    dimension: age {
    hidden: yes
  }

  dimension: email {
    hidden: yes
  }

  dimension: first_name {
    hidden: yes
  }

  dimension: last_name {
    hidden: yes
  }

  dimension_group: created {
    hidden: yes
  }
}

Neue Felder zu den optimierten Explores hinzufügen

In der optimierten Ansicht sales können Sie auch neue Felder erstellen, die für das Marketingteam von Interesse sind. Sie können beispielsweise Felder für Durchschnittlicher Verkaufspreis, Gesamtverkaufspreis und Durchschnittliche Ausgaben pro Nutzer in der optimierten Ansicht sales hinzufügen:

Die Ansicht Verkäufe enthält ID, Gewinn, Verkaufspreis und Anzahl sowie die neuen Felder „Durchschnittlicher Verkaufspreis“, „Durchschnittliche Ausgaben pro Nutzer“ und „Gesamtverkaufspreis“.

Mit dem folgenden LookML-Code können Sie diese Felder zur verfeinerten sales-Ansicht in der marketing_analysis.lkml-Datei hinzufügen:


# marketing_analysis.lkml

view: +sales {
  measure: average_sale_price {
    type: average
    value_format_name: usd
    sql: ${sale_price} ;;
    drill_fields: [detail*]
  }

  measure: total_sale_price {
    type: sum
    value_format_name: usd
    sql: ${sale_price} ;;
    drill_fields: [detail*]
  }

  measure: average_spend_per_user {
    type: number
    value_format_name: usd
    sql: 1.0 * ${total_sale_price} / NULLIF(${users.count},0) ;;
    drill_fields: [detail*]
  }
}

Die von Ihnen erstellte Marketing-Explore enthält die neuen Felder in der Ansicht Verkäufe zusätzlich zu den Feldern in der verbundenen Ansicht Nutzer. Die Dimensionsgruppen Zurückgegeben, Versendet, Zugestellt und Erstellt und die Dimension Status sind ausgeblendet, da sie vom Marketingteam nicht benötigt werden.

Ebenso können Sie für das Logistikteam neue Felder erstellen, die für das Logistikteam nützlich sind, z. B. Versandzeit-Buckets und Durchschnittliche Versandzeit:

Im Bereich „Erkunden“ des Logistikteams werden jetzt die neuen Felder „Versandzeit-Buckets“ und „Durchschnittliche Versandzeit“ sowie weitere Felder für den Versand und den Nutzerstandort aufgelistet.

Mit dem folgenden LookML-Code können Sie diese Felder zur verfeinerten sales-Ansicht in der logistics_analysis.lkml-Datei hinzufügen:


# logistics_analysis.lkml

view: +sales {
  dimension: shipping_time_buckets {
    case: {
      when: {
        sql: ${shipping_time} <= 7 ;;
        label: "One Week"
      }
      when: {
        sql: ${shipping_time} > 7 AND ${shipping_time} <= 14 ;;
        label: "Two Weeks"
      }
      when: {
        sql:  ${shipping_time} > 14 ;;
        label: "Over Two Weeks"
      }
      else: "Note Shipped"
    }
  }

  measure: average_shipping_time {
    type: average
    value_format_name: decimal_4
    sql: ${shipping_time} ;;
  }
}

Die von Ihnen erstellte Logistik-Explore enthält die neuen Felder in der Ansicht Verkäufe zusätzlich zu den Feldern in der verknüpften Ansicht Nutzer. Die Felder Gewinn, Sonderangebotspreis und Durchschnittlicher Verkaufspreis in der Ansicht Verkauf sowie die Felder Alter, E-Mail-Adresse, Vorname, Nachname und Erstellt aus dem Explore Nutzer werden ausgeblendet, da sie für das Logistikteam nicht benötigt werden.

Jedes Team hat jetzt ein Explore, das besser auf seine spezifischen Anforderungen zugeschnitten ist. Dieser Ansatz erfordert zwar etwas mehr Einrichtung im Vorfeld, aber wenn Sie die Kerndaten an einem Ort aufbewahren, können Sie deren Auffindbarkeit und Verwendung vereinfachen.