En esta página, se hace referencia al parámetro
filtersque forma parte de una medida.
filterstambién se puede usar como parte de una tabla derivada nativa, como se describe en la página de documentación del parámetroexplore_source.
filterstambién se puede usar como parte de un panel, como se describe en la página de documentación Parámetros del panel.
filterstambié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
view: view_name {
measure: field_name {
filters: [dimension_name: "filter expression", dimension_name: "filter expression", ... ]
}
}
|
Jerarquía
filters |
Tipos de campos posibles
Medir
Acepta
Es un conjunto de nombres de dimensiones y 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 medidas. Solo funciona con los siguientes tipos de medidas que realizan la agregación:
type: counttype: count_distincttype: sumtype: 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 de filtros de Looker para obtener detalles sobre cómo escribir expresiones de filtro válidas. Coloca toda la expresión de filtro entre comillas, como se muestra en los siguientes ejemplos.
También puedes usar filters con parámetros de Liquid y filtros basados en plantillas para crear mediciones filtradas dinámicas con un valor de filtro que puede cambiar de forma dinámica según la entrada del usuario en un panel o una vista. Este enfoque permite a los usuarios seleccionar valores de filtro que solo se aplican a una métrica específica, sin filtrar toda la consulta en una cláusula WHERE global. Consulta la sección Crea una medida filtrada dinámica más adelante en esta página para obtener información de referencia.
Ejemplos
Existen muchas formas de usar filters para las métricas. En los siguientes ejemplos, se describen algunas soluciones para casos de uso comunes.
Cómo filtrar en varios campos
En este ejemplo, la medida contará los IDs distintos que se crearon en los últimos siete días y que no pertenecen a usuarios con cuentas inhabilitadas. En este ejemplo, también se ilustra 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
}
Cómo filtrar por una dimensión de yesno
Como otro ejemplo, considera los datos que incluyen una fila por persona, que puede ser un empleado regular o un contratista. Hay un campo, is_contractor, de tipo yesno, que contiene yes si la persona es contratista. Esta medida solo contabilizará las filas de 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 contabilizará todas las filas que coincidan con cualquiera de los cuatro valores del campo state:
measure: customers_by_state {
type: count
filters: [state: "California, Nevada, Washington, Oregon"]
}
Cómo filtrar valores de NULL
En este ejemplo, la métrica contará los IDs distintos que se crearon en los últimos siete días y se incluirá un valor en el campo user.email_address que no sea NULL:
measure: this_week_count_with_email {
type: count_distinct
sql: ${TABLE}.id ;;
filters: [created_date: "7 days", user.email_address: "-NULL"]
}
Debido a que el campo user.email_address es de tipo string, se usa la sintaxis "-NULL". Consulta la página de documentación Expresiones de filtro de Looker para obtener más información.
Cómo agregar condiciones de filtro numéricas
En este ejemplo, el filtro recibe un valor numérico. La medida solo agregará los pedidos que tengan un price superior a 100:
measure: total_amt_large_orders {
type: sum
filters: [orders.price: ">100"]
sql: ${orders.price} ;;
}
Cómo usar AND para combinar condiciones
En este ejemplo, la medida usa una expresión de filtro con el operador AND para calcular los pedidos totales de los clientes del grupo etario de 18 a 25 años:
measure: sales_18_to_25 {
type: sum
filters: [customers.age: ">=18 AND <=25"]
sql: ${orders.price} ;;
}
Cómo usar comas para combinar condiciones
En este ejemplo, la medida usa una expresión de filtro con el operador , para calcular la cantidad total de pedidos de los clientes menores de 25 años o mayores de 65:
measure: sales_less_25_or_greater_65 {
type: sum
filters: [customers.age: "<25, >65"]
sql: ${orders.price} ;;
}
Cómo crear una medición filtrada dinámica
En este ejemplo, un filtro le brinda al usuario la opción de ver un recuento de pedidos (filtrados por el estado que elija el usuario) en un filtro de Look o panel:
Primero, crea un campo solo para filtros que permita al usuario seleccionar un valor:
filter: status_filter {
type: string
suggest_dimension: status
}
A continuación, crea una dimensión oculta que aproveche los filtros basados en plantillas para capturar la selección del usuario del campo anterior solo de filtro. Esta dimensión devolverá sí 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 según la dimensión type: yesno:
measure: count_dynamic_status {
type: count
filters: [status_satisfies_filter: "yes"]
}
Si un usuario decide no seleccionar un valor para el campo de solo filtro, el valor predeterminado del SQL será 1=1, lo que no afectará los valores de la medida.
Desafíos habituales
No uses filters con medidas de type: number
Muchos usuarios intentan usar filters con medidas de type: number, lo que 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 componen la medida de type: number, de la siguiente manera:
# 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"]
}