Filter (für Felder)

Auf dieser Seite wird auf den Parameter filters verwiesen, der Teil einer Messung ist.

filters kann auch als Teil einer nativen abgeleiteten Tabelle verwendet werden, wie auf der Dokumentationsseite zum Parameter explore_source beschrieben.

filters kann auch als Teil eines Dashboards verwendet werden. Weitere Informationen finden Sie auf der Dokumentationsseite Dashboard-Parameter.

filters kann 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: count
  • type: count_distinct
  • type: sum
  • type: 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"]
}