Analyse von Zeitrahmen und Zeitrahmen mit Filtervorlagen

Wenn Sie einen Messwert vergleichen möchten, der nach mehreren Zeiträumen im selben Look oder Dashboard 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 auch einen Schritt weiter gehen, um Zeitraumvergleiche dynamisch zu gestalten – oder Messungen, die sich mit den von Nutzern in Explores, Looks oder Dashboards angegebenen Zeiträumen ändern, indem Sie Filtervorlagen in gefilterten Kennzahlen verwenden.

Musterübersicht

Grundsätzlich umfasst dieser Ansatz drei Komponenten:

  1. Definieren Sie eine Filtervorlage von type: date für jeden Zeitrahmen, der in Ihrem Explore, Look oder Dashboard als Nur-Filter-Feld angezeigt wird.
  2. Erstellen Sie eine Dimension vom Typ yesno, um sie mit der Filtervorlage zu verknüpfen. Wenn ein Nutzer dann einen Wert für das reine Filterfeld auswählt, wird für die Dimension „yesno“ der Wert „Ja“ zurückgegeben. für Datensätze, die die Filterbedingungen erfüllen.
  3. Erstellen Sie einen gefilterten Messwert, der auf die Dimension yesno mit der Bedingung value = "yes" verweist. Dadurch wird sichergestellt, dass der Messwert nur Datensätze aggregiert, die die Zeitrahmenbedingung erfüllen, die im Filter in Schritt 1 festgelegt ist.

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. Das wirkt sich nur auf die Werte für Anzahl der Bestellungen A und Anzahl der Bestellungen B aus. 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 Anzahl der Bestellungen A aus und Zeitraum B wirkt sich auf die Werte für Anzahl der Bestellungen B aus.

Der folgende Abschnitt enthält den LookML-Code 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 ;;
  }
  

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.

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. Dimensionswerte nach „Ja“ filtern in Explores, Looks oder Dashboards:

  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.