Analyse von Zeitrahmen und Zeitrahmen mit 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 Kennzahlen 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 wollten, könnten Sie einige Messwerte mit hartcodierten Zeitraumfiltern definieren (z. B. „Dieses Jahr“ und „Letztes Jahr“) und diese in einem Explore, Look oder 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 einen gefilterten Messwert, der 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 haben nur Auswirkungen auf die Werte für Anzahl der Bestellungen A und Anzahl der Bestellungen B. Anzahl der Aufträge A und Anzahl der Aufträge B sind Messungen mit Filtern, die auf die Zeitrahmenbedingungen in den Zeitraumfiltern verweisen. Zeitraum A wirkt sich auf die Werte für Bestellmenge A aus und Zeitraum B auf die Werte für Bestellmenge B.

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

LookML

Im folgenden LookML-Code wird davon ausgegangen, dass Sie eine Dimensionsgruppe mit einem raw-Zeitrahmen namens created_raw haben:

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

Der LookML-Code für den Vergleich von Anzahlmesswerten – Orders Count A und Orders Count B – gefiltert nach zwei dynamischen Zeitrahmen – Timeframe A und Timeframe B (Zeitrahmen B) auf Grundlage von 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

Gefilterte Messungen wenden keine Filterbedingung auf die Gesamtabfrageergebnisse an. Wenn Sie die Gesamtabfrageergebnisse innerhalb der angegebenen Zeitrahmen 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 %} ;;
  }

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