Analyse von Zeiträumen im Vergleich zu Analysen mit Zeiträumen mithilfe von Filtervorlagen

Wenn Sie einen Messwert vergleichen möchten, der in einem Blick oder Dashboard nach mehreren Zeiträumen gefiltert ist, können Sie gefilterte Messwerte verwenden. Mit gefilterten Messwerten können Sie einen hartcodierten Filter direkt auf einen Messwert anwenden, anstatt einen Filter auf eine gesamte Abfrage anzuwenden.

Wenn Sie nur eine begrenzte Anzahl von Zeiträumen vergleichen möchten, können Sie einige Messwerte mit hartcodierten Zeitrahmenfiltern (z. B. „Dieses Jahr“ und „Letztes Jahr“) definieren und in einem explorativen Datenanalysetool, einem Look oder einem Dashboard anzeigen. Sie können diesen Ansatz auch noch weiterführen, um Zeitrahmenvergleiche dynamisch zu gestalten – oder Messwerte, die sich in Explores, Lookbooks oder Dashboards mit von Nutzern angegebenen Zeiträumen ändern. Dazu verwenden Sie Filtervorlagen in gefilterten Messwerten.

Muster – Übersicht

Dieser Ansatz umfasst drei Komponenten:

  1. Definieren Sie für jeden Zeitraum einen Vorlagenfilter für type: date, der in Ihrem Explore, Look oder Dashboard als reines Filterfeld angezeigt wird.
  2. Erstellen Sie eine Dimension vom Typ yesno, die mit dem Vorlagenfilter verknüpft wird. Wenn ein Nutzer einen Wert für das reine Filterfeld auswählt, gibt die Dimension yesno für Datensätze, die die Filterbedingungen erfüllen, „Ja“ zurück.
  3. Erstellen Sie ein gefiltertes Messwert, das auf die Dimension yesno mit der Bedingung value = "yes" verweist. So werden nur Datensätze zusammengefasst, die die im Filter in Schritt 1 angegebene Zeitrahmenbedingung erfüllen.

Mit dieser Logik können Nutzer Analysen und Visualisierungen erstellen, in denen Werte aus verschiedenen Zeiträumen verglichen werden, z. B. der folgende Explore:

Nutzer können die Werte in den Filtern Zeitraum A und Zeitraum B ändern und sich so nur auf die Werte für Anzahl der Bestellungen A und Anzahl der Bestellungen B auswirken. Anzahl der Bestellungen A und Anzahl der Bestellungen B sind Messwerte mit Filtern, die auf die Zeitrahmenbedingungen in den Zeitrahmenfiltern verweisen. Zeitraum A wirkt sich auf die Werte für Anzahl der Bestellungen A aus und Zeitraum B auf die Werte für Anzahl der Bestellungen B.

Im folgenden Abschnitt finden Sie die LookML für dieses Beispiel.

LookML

In der folgenden LookML-Anweisung wird davon ausgegangen, dass Sie eine Dimensionsgruppe mit einem raw-Zeitraum namens created_raw haben:

  dimension_group: created {
    type: time
    timeframes: [
      raw,
      time,
      date,
    ]
    sql: ${TABLE}.created_at ;;
  }
  

Die LookML zum Vergleichen von Zählmesswerten – Anzahl der Bestellungen A und Anzahl der Bestellungen B – gefiltert nach zwei dynamischen Zeiträumen – Zeitraum A und Zeitraum B – basierend auf created_raw, sieht so aus:

  ## filter determining time range for all "A" measures
  filter: timeframe_a {
    type: date_time
  }

## flag for "A" measures to only include appropriate time range dimension: group_a_yesno { hidden: yes type: yesno sql: {% condition timeframe_a %} ${created_raw} {% endcondition %} ;; }

## filtered measure A measure: count_a { type: count filters: [group_a_yesno: "yes"] }

## filter determining time range for all "B" measures filter: timeframe_b { type: date_time }

## flag for "B" measures to only include appropriate time range dimension: group_b_yesno { hidden: yes type: yesno sql: {% condition timeframe_b %} ${created_raw} {% endcondition %} ;; }

measure: count_b { type: count filters: [group_b_yesno: "yes"] }

Mit dieser Logik können Sie beliebig viele Zeitrahmenvergleiche erstellen.

Eine gesamte Abfrage mit dynamischen Zeiträumen filtern

Bei gefilterten Messwerten wird keine Filterbedingung auf die gesamten Abfrageergebnisse angewendet. Wenn Sie die Gesamtzahl der Abfrageergebnisse innerhalb der angegebenen Zeiträume begrenzen möchten, haben Sie folgende Möglichkeiten:

  1. Erstellen Sie die folgende yesno-Dimension:
  2. So filtern Sie die Dimensionswerte in Explores, Suchanfragen oder Dashboards nach „Ja“:

  dimension: is_in_time_a_or_b {
    group_label: "Time Comparison Filters"
    type: yesno
    sql:
      {% condition timeframe_a %} ${created_raw} {% endcondition %} OR
      {% condition timeframe_b %} ${created_raw} {% endcondition %} ;;
  }

So wird verhindert, dass die Datenbank mehr Daten als für die Abfrage erforderlich durchsucht. Dies kann sich positiv auf die Leistung und die Abfragekosten auswirken.