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:
-
Definieren Sie für jeden Zeitraum einen Vorlagenfilter für
type: date
, der in Ihrem Explore, Look oder Dashboard als reines Filterfeld angezeigt wird. -
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 Dimensionyesno
für Datensätze, die die Filterbedingungen erfüllen, „Ja“ zurück. -
Erstellen Sie einen gefilterten Messwert, der auf die Dimension
yesno
mit der Bedingungvalue = "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:
-
Erstellen Sie die folgende
yesno
-Dimension: - 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.