Comparación entre el análisis de período y el de período con filtros de plantillas

Para comparar una métrica filtrada por varios períodos en el mismo aspecto o panel, puedes usar medidas filtradas. Las medidas filtradas te permiten aplicar un filtro codificado directamente a una medida, en lugar de aplicar un filtro a una consulta completa.

Si tienes una cantidad limitada de períodos que te interesa comparar, puedes definir algunas medidas con filtros de períodos codificados (por ejemplo, "este año" y "el año pasado") y mostrarlas en Explorar, una vista o un panel. También puedes llevar este enfoque un paso más allá para hacer que las comparaciones de períodos sean dinámicas, o bien medidas que cambian con los períodos especificados por los usuarios en Exploraciones, Looks o paneles, con el uso de filtros de plantillas en medidas filtradas.

Descripción general del patrón

En términos generales, este enfoque implica tres componentes:

  1. Define un filtro de plantilla de type: date para cada período que aparecerá como un campo solo de filtro en tu exploración, búsqueda o panel.
  2. Crea una dimensión de tipo yesno para vincularla al filtro de plantillas de modo que, cuando un usuario seleccione un valor para el campo de solo filtro, la dimensión yesno devuelva "sí" para los registros que cumplan con las condiciones del filtro.
  3. Crea una medición filtrada que haga referencia a la dimensión yesno con la condición value = "yes". Esto garantiza que la medición solo agregue registros que cumplan con la condición del período que se especifica en el filtro que se define en el paso 1.

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

Los usuarios pueden cambiar los valores de los filtros Período A y Período B, y solo afectar los valores de Cantidad de pedidos A y Cantidad de pedidos B. Cantidad de pedidos A y Cantidad de pedidos B son medidas con filtros que hacen referencia a las condiciones del período en los filtros de período. El período A afecta los valores de Cantidad de pedidos A, y el período B afecta los valores de Cantidad de pedidos B.

En la siguiente sección, se proporciona el código LookML para este ejemplo.

El código LookML

En la siguiente expresión LookML, se supone que tienes un grupo de dimensiones con un período raw llamado created_raw:

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

El código LookML para comparar las medidas de recuento (Cantidad de pedidos A y Cantidad de pedidos B) filtradas por dos períodos dinámicos (Período A y Período B) según created_raw se ve de la siguiente manera:

  ## 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 períodos como necesites.

Cómo filtrar una consulta completa con períodos dinámicos

Las medidas filtradas no aplican una condición de filtro a los resultados generales de la consulta. Si deseas limitar los resultados generales de la consulta dentro de los períodos 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:

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

Esto evita que la base de datos analice más datos de los necesarios para la consulta y puede ayudar con el rendimiento y el costo de la consulta.