filters

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ámetro explore_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

view: view_name {
measure: field_name {
filtros: [dimension_name: "filterexpression", dimension_name: "filter expression", ... ]
}
}
Jerarquía
filters
Tipos de campos posibles
Medir

Acepta
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:

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