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:
-
Definieren Sie eine Filtervorlage von
type: date
für jeden Zeitrahmen, der in Ihrem Explore, Look oder Dashboard als Nur-Filter-Feld angezeigt wird. -
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. -
Erstellen Sie einen gefilterten Messwert, der auf die Dimension
yesno
mit der Bedingungvalue = "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:
-
Erstellen Sie die folgende
yesno
-Dimension: - 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.