Análisis de periodos con filtros basados en plantillas

Para comparar una métrica filtrada por varios periodos en el mismo Look o panel de control, puede usar medidas filtradas. Las medidas filtradas te permiten aplicar un filtro codificado directamente a una medida, en lugar de aplicar un filtro a toda una consulta.

Si solo te interesaba comparar un número limitado de periodos, podías definir algunas medidas con filtros de periodo codificados (por ejemplo, "este año" y "el año pasado") y mostrarlas en un Exploración, un Look o un panel de control. También puedes ir un paso más allá y hacer que las comparaciones de periodos sean dinámicas, o bien que las medidas cambien en función de los periodos especificados por los usuarios en Exploraciones, Looks o paneles de control, mediante filtros basados en plantillas en medidas filtradas.

Descripción general de los patrones

A grandes rasgos, este enfoque consta de tres componentes:

  1. Define un filtro basado en plantilla de type: date para cada periodo que aparecerá como un campo solo para filtros en tu Exploración, Look o panel de control.
  2. Cree una dimensión de tipo yesno para vincularla al filtro de plantilla de forma que, cuando un usuario seleccione un valor para el campo solo para filtros, la dimensión yesno devuelva "sí" en los registros que cumplan las condiciones del filtro.
  3. Crea una medida filtrada que haga referencia a la dimensión yesno con la condición value = "yes". De esta forma, la medida solo agrega los registros que cumplen la condición del periodo especificada en el filtro definido en el paso 1.

Esta lógica permite a los usuarios crear análisis y visualizaciones que comparan valores de diferentes periodos, como la siguiente exploración:

Los usuarios pueden cambiar los valores de los filtros Periodo A y Periodo B, y solo afectarán a los valores de Número de pedidos A y Número de pedidos B. Recuento de pedidos A y Recuento de pedidos B son medidas con filtros que hacen referencia a las condiciones de periodo de los filtros de periodo. Periodo A influye en los valores de Número de pedidos A, y Periodo B influye en los valores de Número de pedidos B.

En la siguiente sección se proporciona el LookML de este ejemplo.

LookML

El siguiente LookML da por hecho que tienes un grupo de dimensiones con un periodo raw llamado created_raw:

  dimension_group: created {
    type: time
    timeframes: [
      raw,
      time,
      date,
    ]
    sql: ${TABLE}.created_at ;;
  }
  

El LookML para comparar medidas de recuento (Recuento de pedidos A y Recuento de pedidos B) filtradas por dos periodos dinámicos (Periodo A y Periodo B) en función de created_raw tiene este aspecto:

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

Puedes usar esta lógica para crear tantas comparaciones de periodos como necesites.

Filtrar una consulta completa con periodos dinámicos

Las medidas filtradas no aplican una condición de filtro a los resultados generales de la consulta. Si quieres limitar los resultados generales de la consulta en los periodos especificados, puedes hacer lo siguiente:

  1. Crea la siguiente dimensión yesno
  2. Filtra los valores de dimensión por "sí" en Exploraciones, Looks o paneles de control:

  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 %} ;;
  }

De esta forma, se evita que la base de datos analice más datos de los necesarios para la consulta, lo que puede mejorar el rendimiento y reducir el coste de la consulta.