Análise de período versus período usando filtros de modelo

Para comparar uma métrica filtrada por vários períodos no mesmo Look ou painel, use medidas filtradas. Com as medidas filtradas, você pode aplicar um filtro codificado diretamente a uma medida, em vez de aplicar um filtro a uma consulta inteira.

Se você tivesse um número limitado de períodos que gostaria de comparar, poderia definir algumas medidas com filtros de período codificados (por exemplo, "este ano" e "ano passado") e exibi-las em uma Análise detalhada, um Look ou um painel. Você também pode usar essa abordagem para tornar as comparações de períodos dinâmicas, ou seja, medidas que mudam de acordo com os períodos especificados pelos usuários em Análises detalhadas, Análises ou painéis, usando filtros de modelo em medidas filtradas.

Visão geral do padrão

Em um alto nível, essa abordagem envolve três componentes:

  1. Defina um filtro de modelo de type: date para cada período que vai aparecer como um campo somente filtro no seu recurso Análise detalhada, Análise ou painel.
  2. Crie uma dimensão do tipo yesno para vincular ao filtro de modelo. Assim, quando um usuário selecionar um valor para o campo somente filtro, a dimensão yesno vai retornar "sim" para os registros que atendem às condições do filtro.
  3. Crie uma medida filtrada que faça referência à dimensão yesno com a condição value = "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 mudar 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. Período A afeta os valores de Contagem de pedidos A, e 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ê tenha um grupo de dimensão com um período 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) filtradas 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íodos 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. Se você quiser limitar os resultados da consulta geral dentro dos períodos especificados, faça o seguinte:

  1. Crie a seguinte dimensão yesno
  2. Filtre os valores da dimensão por "sim" em Análises detalhadas, Análises ou painéis:

  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 impede que o banco de dados analise mais dados do que o necessário para a consulta e pode ajudar com a performance e o custo da consulta.