filters

Esta página se refere ao parâmetro filters que faz parte de uma medida.

A filters também pode ser usada como parte de uma tabela derivada nativa, descrita na página de documentação do parâmetro explore_source.

filters também pode ser usado como parte de um painel, descrito na página de documentação Parâmetros do painel.

filters também pode ser usado como parte de um elemento do painel. Um exemplo representativo de uso é mostrado na página de documentação dos elementos de gráfico de colunas.

Uso

view: view_name {
measure: field_name {
filter: [dimension_name: "filter expression", dimension_name: "filter expression", ... ]
}
}
Hierarquia
filters
Tipos de campo possíveis
Medir

Aceita
Um conjunto de nomes de dimensão e expressões de filtro correspondentes do Looker

Definição

filters é uma lista opcional de expressões de filtro que são aplicadas a um cálculo de medida. Ela funciona apenas com os seguintes tipos de medida que realizam a agregação:

  • type: count
  • type: count_distinct
  • type: sum
  • type: average

A sintaxe dos filtros é a seguinte:

filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]

Consulte a notação de filtro do Looker para ver detalhes sobre como escrever expressões de filtro válidas. Coloque toda a expressão de filtro entre aspas, conforme mostrado nos exemplos a seguir.

Também é possível usar filters com parâmetros líquidos e filtros modelados para criar medidas filtradas dinâmicas com um valor de filtro que pode mudar dinamicamente com base na entrada do usuário em um painel ou uma aparência. Com essa abordagem, os usuários podem selecionar valores de filtro que se aplicam apenas a uma medida específica, sem filtrar a consulta inteira em uma cláusula WHERE global. Para mais informações, consulte a seção Como criar uma medida dinâmica filtrada mais adiante nesta página.

Examples

Há muitas maneiras de usar filters como medida. Os exemplos abaixo descrevem algumas soluções para casos de uso comuns:

Como filtrar por vários campos

Nesse exemplo, a medida contabiliza IDs diferentes que foram criados nos últimos sete dias e não são de usuários com contas desativadas. Este exemplo também ilustra como adicionar vários filtros a um campo. Cada expressão de filtro requer o próprio 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
}

Como filtrar uma dimensão yesno

Como outro exemplo, considere os dados que incluem uma linha por pessoa, seja um funcionário normal ou um prestador de serviços. Há um campo, is_contractor, do tipo yesno, que contém yes se a pessoa for um prestador de serviços. Essa medida contabilizará apenas as linhas para prestadores de serviços:

measure: contractor_count {
  type: count
  filters: [is_contractor: "yes"]
}

Adicionar vários valores de filtro

No próximo exemplo, a expressão filters contém vários valores. A medida contará todas as linhas que corresponderem a qualquer um dos quatro valores no campo state:

measure: customers_by_state {
  type: count
  filters: [state: "California, Nevada, Washington, Oregon"]
}

Como adicionar condições de filtro numérico

Neste exemplo, o filtro recebe um valor numérico. A medida vai adicionar apenas pedidos com um price maior que 100:

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

Como usar a sintaxe de filtro avançado

Neste exemplo, o filtro recebe um intervalo de valores numéricos. A medida somará os pedidos totais de clientes na faixa etária de 18 a 25 anos:

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

Criar uma medida dinâmica filtrada

Neste exemplo, um filtro oferece ao usuário a opção de ver uma contagem de pedidos (filtrados pelo status que o usuário escolher) em um filtro de aparência ou painel:

Primeiro, crie um campo somente de filtro que permita ao usuário selecionar um valor:

  filter: status_filter {
    type: string
    suggest_dimension: status
  }

Em seguida, crie uma dimensão oculta que use filtros de modelo para capturar a seleção do usuário do campo anterior somente de filtros. Essa dimensão retornará yes sempre que um valor for selecionado no campo de filtro:

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

Por fim, crie uma medida que filtre a dimensão type: yesno:

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

Se um usuário escolher não selecionar um valor para o campo de filtro, o SQL será definido como 1=1 por padrão, o que não afetará os valores de medida.

Desafios comuns

Não use o filters com medidas de type: number

Muitos usuários tentam usar o filters com medidas de type: number, o que não 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} ;;
}

Em vez disso, aplique um parâmetro filters a qualquer uma das medidas individuais que compõem a medida de type: number, da seguinte maneira:

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