Filter

Diese Seite bezieht sich auf den Parameter filters, der Teil einer Kennung 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, wie auf der Dokumentationsseite zu den Dashboard-Parametern beschrieben.

filters kann auch als Teil eines Dashboard-Elements verwendet werden. Ein repräsentatives Beispiel für seine Verwendung finden Sie auf der Dokumentationsseite für Spaltendiagrammelemente.

Nutzung

view: view_name {
measure: field_name {
filter: [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 Berechnungsberechnung angewendet werden. Es funktioniert nur mit den folgenden Messtypen, 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", ...]

Weitere Informationen zum Schreiben gültiger Filterausdrücke finden Sie unter Filternotation von Looker. Platzieren Sie den gesamten Filterausdruck wie in den folgenden Beispielen in Anführungszeichen.

Sie können auch filters mit Liquid-Parametern und Vorlagenfiltern verwenden, um dynamische gefilterte Messwerte mit einem Filterwert zu erstellen, der sich basierend auf der Nutzereingabe in einem Dashboard oder Look dynamisch ändern kann. Bei diesem Ansatz können Nutzer Filterwerte auswählen, die nur für einen bestimmten Messwert gelten, ohne die gesamte Abfrage in einer globalen WHERE-Klausel zu filtern. Weitere Informationen finden Sie im Abschnitt Dynamische gefilterte Messwerte erstellen weiter unten auf dieser Seite.

Beispiele

Es gibt viele Möglichkeiten, filters für Messwerte zu verwenden. Die folgenden Beispiele beschreiben einige Lösungen für häufige Anwendungsfälle:

Nach mehreren Feldern filtern

In diesem Beispiel werden die IDs gezählt, die in den letzten sieben Tagen erstellt wurden und nicht von Nutzern mit deaktivierten Konten stammen. Dieses Beispiel zeigt auch, wie Sie einem Feld mehrere Filter hinzufügen. Jeder Filterausdruck erfordert einen eigenen vollständigen filters-Parameter:

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 Dimension „yesno“ filtern

Ein weiteres Beispiel sind Daten, die eine Zeile pro Person enthalten, die entweder ein regulärer Mitarbeiter oder ein Auftragnehmer ist. Es gibt ein Feld namens is_contractor vom Typ yesno, das yes enthält, wenn die Person ein Auftragnehmer ist. Bei 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. Mit dem Messwert 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"]
}

Bedingungen für numerische Filter hinzufügen

In diesem Beispiel erhält der Filter einen numerischen Wert. Dadurch werden nur Bestellungen mit einer price von mehr als 100 hinzugefügt:

measure: total_amt_large_orders {
  type: sum
  filters: [orders.price: ">100"]
  sql: ${orders.price} ;;
}

Erweiterte Filtersyntax verwenden

In diesem Beispiel erhält der Filter einen Bereich numerischer Werte. Bei der Messung wird die Gesamtzahl der Bestellungen von Kunden in der Altersgruppe der 18- bis 25-Jährigen berücksichtigt:

measure: sales_18_to_25 {
  type: sum
  filters: [customers.age: ">=18 AND <=25"]
  sql: ${orders.price} ;;
}

Dynamische gefilterte Messwerte erstellen

In diesem Beispiel kann ein Nutzer die Anzahl der Bestellungen anhand eines vom Nutzer ausgewählten Status nach einem Look- oder Dashboard-Filter filtern:

Erstellen Sie zuerst ein Nur-Filter-Feld, in dem der Nutzer einen Wert auswählen kann:

  filter: status_filter {
    type: string
    suggest_dimension: status
  }

Erstellen Sie als Nächstes eine ausgeblendete Dimension, die anhand von Vorlagenfiltern die Nutzerauswahl aus dem vorherigen Feld, das nur zum Filtern dient, erfasst. Diese Dimension gibt yes zurück, wenn ein Wert im Filterfeld ausgewählt wird:

  dimension: status_satisfies_filter {
    type: yesno
    hidden: yes
    sql: {% condition status_filter %} ${status} {% endcondition %} ;;
  }

Erstellen Sie abschließend einen Messwert, mit dem nach der Dimension type: yesno gefiltert wird:

  measure: count_dynamic_status {
    type: count
    filters: [status_satisfies_filter: "yes"]
  }

Wenn ein Nutzer keinen Wert für das Feld „Nur Filter“ auswählt, ist der Standardwert 1=1. Das hat keine Auswirkungen auf die Messwerte.

Häufige Herausforderungen

filters nicht mit Maßen von type: number verwenden

Viele Nutzer versuchen, filters mit Maßen von type: number zu verwenden, was nicht funktioniert:

# 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 jede der einzelnen Messungen an, die den Messwert type: number ausmachen:

# 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"]
}