En esta página, se hace referencia al parámetro
filters
que forma parte de una medida.
filters
también se puede usar como parte de una tabla derivada nativa, que se describe en la página de documentación del parámetroexplore_source
.
filters
también se puede usar como parte de un panel, que se describe en la página de documentación Parámetros del panel.
filters
también se puede usar como parte de un elemento del panel. En la página de documentación de los elementos del gráfico de columnas, se proporciona un ejemplo representativo de su uso.
Uso
measure: field_name {
filtros: [dimension_name: "filterexpression", dimension_name: "filter expression", ... ]
}
}
Jerarquía
filters |
Tipos de campos posibles
MedirAcepta
Un conjunto de nombres de dimensiones y las expresiones de filtro de Looker correspondientes |
Definición
filters
es una lista opcional de expresiones de filtro que se aplican a un cálculo de medición. Solo funciona con los siguientes tipos de medición que realizan la agregación:
type: count
type: count_distinct
type: sum
type: average
La sintaxis de los filtros es la siguiente:
filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]
Consulta la notación del filtro de Looker para obtener detalles sobre cómo escribir expresiones de filtro válidas. Coloque la expresión de filtro completa entre comillas, como se muestra en los siguientes ejemplos.
También puedes usar filters
con parámetros líquidos y filtros basados en plantillas para crear medidas de filtro dinámico con un valor de filtro que puede cambiar dinámicamente según la entrada del usuario en un panel o en Look. Este enfoque permite a los usuarios seleccionar valores de filtro que solo se aplican a una medida específica, sin filtrar toda la consulta en una cláusula WHERE
global. Como referencia, consulte la sección Cómo crear una medida dinámica filtrada más adelante.
Ejemplos
Existen muchas formas de usar filters
para las medidas. En los siguientes ejemplos, se describen algunas soluciones para casos de uso comunes:
- Filtrado en varios campos
- Filtrado en una dimensión
yesno
- Cómo agregar varios valores de filtro
- Cómo agregar condiciones numéricas de filtro
- Usa la sintaxis de filtros avanzados
- Cómo crear una medida filtrada dinámica
Filtra según varios campos
En este ejemplo, la medida registrará los distintos ID que se crearon en los últimos siete días y que no provienen de usuarios con cuentas inhabilitadas. En este ejemplo, también se muestra cómo agregar varios filtros a un campo. Cada expresión de filtro requiere su propio parámetro filters
completo:
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
}
Filtra según una dimensión de yesno
Otro ejemplo es los datos que incluyen una fila por persona, ya sea un empleado común o un contratista. Hay un campo, is_contractor
, del tipo yesno
, que contiene yes
si la persona es un contratista. Esta medida solo contará las filas para los contratistas:
measure: contractor_count {
type: count
filters: [is_contractor: "yes"]
}
Cómo agregar varios valores de filtro
En el siguiente ejemplo, la expresión filters
contiene varios valores. La medida contará todas las filas que coincidan con cualquiera de los cuatro valores en el campo state
:
measure: customers_by_state {
type: count
filters: [state: "California, Nevada, Washington, Oregon"]
}
Agrega condiciones de filtro numérico
En este ejemplo, el filtro recibe un valor numérico. La medida agregará solo los pedidos que tengan un price
de más de 100:
measure: total_amt_large_orders {
type: sum
filters: [orders.price: ">100"]
sql: ${orders.price} ;;
}
Usa la sintaxis de filtros avanzados
En este ejemplo, el filtro recibe un rango de valores numéricos. La medida dará un total de pedidos a los clientes de entre 18 y 25 años:
measure: sales_18_to_25 {
type: sum
filters: [customers.age: ">=18 AND <=25"]
sql: ${orders.price} ;;
}
Cómo crear una medida filtrada dinámica
En este ejemplo, un filtro le brinda a un usuario la opción de ver un recuento de pedidos (filtrados por el estado que elija) en un filtro de estilo o panel.
Primero, crea un campo solo de filtro que permita al usuario seleccionar un valor:
filter: status_filter {
type: string
suggest_dimension: status
}
A continuación, cree una dimensión oculta que aproveche los filtros basados en plantillas para capturar la selección de los usuarios del campo anterior solo de filtro. Esta dimensión mostrará yes cada vez que se seleccione un valor en el campo de filtro:
dimension: status_satisfies_filter {
type: yesno
hidden: yes
sql: {% condition status_filter %} ${status} {% endcondition %} ;;
}
Por último, crea una medida que filtre la dimensión type: yesno
:
measure: count_dynamic_status {
type: count
filters: [status_satisfies_filter: "yes"]
}
Si un usuario elige no seleccionar un valor para el campo de solo filtro, SQL se establecerá de forma predeterminada en 1=1, lo que no afectará los valores de medición.
Desafíos habituales
No usar filters
con medidas de type: number
Muchos usuarios intentan usar filters
con medidas de type: number
, lo cual no funciona:
# 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} ;;
}
En su lugar, aplica un parámetro filters
a cualquiera de las medidas individuales que conforman type: number
, como se muestra a continuación:
# 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"]
}