Auf dieser Seite wird auf den Parameter
filtersverwiesen, der Teil einer Messung ist.
filterskann auch als Teil einer nativen abgeleiteten Tabelle verwendet werden, wie auf der Dokumentationsseite zum Parameterexplore_sourcebeschrieben.
filterskann auch als Teil eines Dashboards verwendet werden. Weitere Informationen finden Sie auf der Dokumentationsseite Dashboard-Parameter.
filterskann auch als Teil eines Dashboard-Elements verwendet werden. Ein repräsentatives Beispiel für die Verwendung finden Sie auf der Dokumentationsseite für Säulendiagrammelemente.
Nutzung
view: view_name {
measure: field_name {
filters: [dimension_name: "filter expression", dimension_name: "filter expression", ... ]
}
}
|
Hierarchie
filters |
Mögliche Feldtypen
Messen
Akzeptiert
Eine Reihe von Dimensionsnamen und entsprechenden Looker-Filterausdrücken
|
Definition
filters ist eine optionale Liste von Filterausdrücken, die auf eine Messwertberechnung angewendet werden. Sie funktioniert nur mit den folgenden Messungstypen, die eine Aggregation durchführen:
type: counttype: count_distincttype: sumtype: average
Die Syntax für Filter lautet:
filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]
Informationen zum Schreiben gültiger Filterausdrücke finden Sie unter Filternotation von Looker. Setzen Sie den gesamten Filterausdruck in Anführungszeichen, wie in den folgenden Beispielen gezeigt.
Sie können filters auch mit Liquid-Parametern und Vorlagenfiltern verwenden, um dynamische gefilterte Measures mit einem Filterwert zu erstellen, der sich dynamisch basierend auf Nutzereingaben in einem Dashboard oder Look ändern kann. So können Nutzer Filterwerte auswählen, die nur für eine bestimmte Messung gelten, ohne die gesamte Abfrage in einer globalen WHERE-Klausel zu filtern. Weitere Informationen finden Sie weiter unten auf dieser Seite im Abschnitt Dynamischen gefilterten Messwert erstellen.
Beispiele
Es gibt viele Möglichkeiten, filters für Messungen zu verwenden. Die folgenden Beispiele zeigen einige Lösungen für gängige Anwendungsfälle.
Nach mehreren Feldern filtern
In diesem Beispiel werden eindeutige IDs gezählt, die in den letzten sieben Tagen erstellt wurden und nicht von Nutzern mit deaktivierten Konten stammen. In diesem Beispiel wird auch gezeigt, wie einem Feld mehrere Filter hinzugefügt werden. Für jeden Filterausdruck ist ein eigener vollständiger filters-Parameter erforderlich:
measure: this_week_count {
type: count_distinct
sql: ${TABLE}.id ;;
filters: [created_date: "7 days", user.status: "-disabled"]
# Reference fields from other joined views with view_name.field_name syntax
# Minus sign means "not" in this case, but check notation docs for details
}
Nach einer yesno-Dimension filtern
Ein weiteres Beispiel: Daten mit einer Zeile pro Person, die entweder ein regulärer Mitarbeiter oder ein Auftragnehmer ist. Es gibt ein Feld is_contractor vom Typ yesno, das yes enthält, wenn die Person ein Auftragnehmer ist. Mit dieser Maßnahme werden nur Zeilen für Auftragnehmer gezählt:
measure: contractor_count {
type: count
filters: [is_contractor: "yes"]
}
Mehrere Filterwerte hinzufügen
Im nächsten Beispiel enthält der Ausdruck filters mehrere Werte. In der Messung werden alle Zeilen gezählt, die mit einem der vier Werte im Feld state übereinstimmen:
measure: customers_by_state {
type: count
filters: [state: "California, Nevada, Washington, Oregon"]
}
NULL-Werte filtern
In diesem Beispiel werden mit der Messung eindeutige IDs gezählt, die in den letzten sieben Tagen erstellt wurden, und es wird ein Wert im Feld user.email_address eingeschlossen, der nicht NULL ist:
measure: this_week_count_with_email {
type: count_distinct
sql: ${TABLE}.id ;;
filters: [created_date: "7 days", user.email_address: "-NULL"]
}
Da das Feld user.email_address vom Typ string ist, wird die "-NULL"-Syntax verwendet. Weitere Informationen finden Sie auf der Dokumentationsseite Looker-Filterausdrücke.
Numerische Filterbedingungen hinzufügen
In diesem Beispiel erhält der Filter einen numerischen Wert. Mit der Maßnahme werden nur Bestellungen mit einem price von mehr als 100 hinzugefügt:
measure: total_amt_large_orders {
type: sum
filters: [orders.price: ">100"]
sql: ${orders.price} ;;
}
Bedingungen mit AND kombinieren
In diesem Beispiel wird für den Messwert ein Filterausdruck mit dem Operator AND verwendet, um die Gesamtzahl der Bestellungen von Kunden im Alter von 18 bis 25 Jahren zu berechnen:
measure: sales_18_to_25 {
type: sum
filters: [customers.age: ">=18 AND <=25"]
sql: ${orders.price} ;;
}
Bedingungen mit Kommas kombinieren
In diesem Beispiel wird mit dem Messwert ein Filterausdruck mit dem Operator , verwendet, um die Gesamtzahl der Bestellungen von Kunden zu berechnen, die jünger als 25 oder älter als 65 sind:
measure: sales_less_25_or_greater_65 {
type: sum
filters: [customers.age: "<25, >65"]
sql: ${orders.price} ;;
}
Dynamische gefilterte Measure erstellen
In diesem Beispiel kann ein Nutzer mit einem Filter die Anzahl der Bestellungen sehen, die nach dem von ihm ausgewählten Status gefiltert werden. Das ist in einem Look- oder Dashboardfilter möglich:
Erstellen Sie zuerst ein Nur-Filter-Feld, mit dem der Nutzer einen Wert auswählen kann:
filter: status_filter {
type: string
suggest_dimension: status
}
Erstellen Sie als Nächstes eine ausgeblendete Dimension, in der Vorlagenfilter verwendet werden, um die Nutzerauswahl aus dem vorherigen reinen Filterfeld zu erfassen. Für diese Dimension wird yes zurückgegeben, wenn im Filterfeld ein Wert ausgewählt ist:
dimension: status_satisfies_filter {
type: yesno
hidden: yes
sql: {% condition status_filter %} ${status} {% endcondition %} ;;
}
Erstellen Sie zum Schluss einen Messwert, der nach der Dimension type: yesno filtert:
measure: count_dynamic_status {
type: count
filters: [status_satisfies_filter: "yes"]
}
Wenn ein Nutzer keinen Wert für das Nur-Filter-Feld auswählt, wird im SQL-Code standardmäßig 1=1 verwendet, was sich nicht auf die Messwertwerte auswirkt.
Häufige Herausforderungen
filters nicht mit Messwerten von type: number verwenden
Viele Nutzer versuchen, filters mit Messwerten von type: number zu verwenden. Das funktioniert nicht:
# Will NOT work
measure: total_food_profit {
type: number
sql: ${total_revenue} - ${total_cost} ;;
filters: [segment: "food"]
}
measure: total_revenue {
type: sum
sql: ${revenue} ;;
}
measure: total_cost {
type: sum
sql: ${cost} ;;
}
Wenden Sie stattdessen einen filters-Parameter auf einen der einzelnen Messwerte an, aus denen der Messwert für type: number besteht:
# Will work
measure: total_food_profit {
type: number
sql: ${total_food_revenue} - ${total_food_cost} ;;
}
measure: total_food_revenue {
type: sum
sql: ${revenue} ;;
filters: [segment: "food"]
}
measure: total_food_cost {
type: sum
sql: ${cost} ;;
filters: [segment: "food"]
}