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âmetroexplore_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
measure: field_name {
filter: [dimension_name: "filter expression", dimension_name: "filter expression", ... ]
}
}
Hierarquia
filters |
Tipos de campo possíveis
MedirAceita
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 em vários campos
- Como filtrar uma dimensão
yesno
- Adicionar vários valores de filtro
- Como adicionar condições de filtro numérico
- Usar a sintaxe de filtro avançado
- Como criar uma medida filtrada dinâmica
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"]
}