filtros (para campos)

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, como se describe en la página de documentación del parámetro explore_source.

filters también se puede usar como parte de un panel, como 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

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: 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 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á 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"]
}