Para comparar uma métrica filtrada por vários períodos no mesmo Look ou painel, use medidas filtradas. As medidas filtradas permitem aplicar um filtro fixado no código diretamente em uma medição, em vez de aplicar um filtro a uma consulta inteira.
Se você tinha um número limitado de períodos que gostaria de comparar, poderia definir algumas medidas com filtros de período fixados no código (por exemplo, "este ano" e "ano passado") e mostrá-los em uma Análise, um Look ou um dashboard. Você também pode levar essa abordagem um passo adiante para tornar as comparações de período dinâmicas (ou medições que mudam com os períodos especificados pelos usuários em Análises, Looks ou painéis) usando filtros com modelo em medições filtradas.
Visão geral do padrão
De modo geral, essa abordagem envolve três componentes:
-
Defina um filtro de modelo de
type: date
para cada período que vai aparecer como um campo somente para filtro no seu recurso Análise detalhada, Análise ou painel. -
Crie uma dimensão do tipo
yesno
para vincular ao filtro com modelo. Assim, quando um usuário selecionar um valor para o campo somente filtro, a dimensãoyesno
vai retornar "sim" para registros que atendam às condições do filtro. -
Crie uma medida filtrada que faça referência à dimensão
yesno
com a condiçãovalue = "yes"
. Isso garante que a medida só agregue registros que atendam à condição de período especificada no filtro definido na etapa 1.
Essa lógica permite que os usuários criem análises e visualizações que comparam valores de períodos diferentes, como a Análise detalhada a seguir:
Os usuários podem alterar os valores nos filtros Período A e Período B e afetar apenas os valores de Contagem de pedidos A e Contagem de pedidos B. Contagem de pedidos A e Contagem de pedidos B são medidas com filtros que fazem referência às condições de período nos filtros de período. O Período A afeta os valores de Contagem de pedidos A, e o Período B afeta os valores de Contagem de pedidos B.
A seção a seguir mostra o LookML para este exemplo.
O LookML
O LookML a seguir pressupõe que você tem um grupo de dimensões com um período de tempo raw
chamado created_raw
:
dimension_group: created { type: time timeframes: [ raw, time, date, ] sql: ${TABLE}.created_at ;; }
O LookML para comparar medidas de contagem (Contagem de pedidos A e Contagem de pedidos B) filtrado por dois períodos dinâmicos (Período A e Período B) com base em created_raw
tem esta aparência:
## filter determining time range for all "A" measures filter: timeframe_a { type: date_time } ## flag for "A" measures to only include appropriate time range dimension: group_a_yesno { hidden: yes type: yesno sql: {% condition timeframe_a %} ${created_raw} {% endcondition %} ;; } ## filtered measure A measure: count_a { type: count filters: [group_a_yesno: "yes"] } ## filter determining time range for all "B" measures filter: timeframe_b { type: date_time } ## flag for "B" measures to only include appropriate time range dimension: group_b_yesno { hidden: yes type: yesno sql: {% condition timeframe_b %} ${created_raw} {% endcondition %} ;; } measure: count_b { type: count filters: [group_b_yesno: "yes"] }
Você pode usar essa lógica para criar quantas comparações de período forem necessárias.
Como filtrar uma consulta inteira com períodos dinâmicos
As medidas filtradas não aplicam uma condição de filtro aos resultados gerais da consulta. Para limitar os resultados gerais da consulta dentro dos períodos especificados, faça o seguinte:
-
Crie a seguinte dimensão
yesno
- Filtrar os valores de dimensão por "yes" em Análises, Looks ou dashboards:
dimension: is_in_time_a_or_b { group_label: "Time Comparison Filters" type: yesno sql: {% condition timeframe_a %} ${created_raw} {% endcondition %} OR {% condition timeframe_b %} ${created_raw} {% endcondition %} ;; }
Isso evita que o banco de dados verifique mais dados do que o necessário para a consulta e pode ajudar no desempenho e nos custos da consulta.