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 la misma vista o panel, puedes usar mediciones filtradas. Las mediciones filtradas te permiten aplicar un filtro codificado directamente a una medición, en lugar de aplicar un filtro a una consulta completa.

Si tenías una cantidad limitada de períodos que te interesaba comparar, puedes definir algunas mediciones con filtros de período codificados (por ejemplo, "este año" y "último año") y mostrarlos en una exploración, una vista o un panel. También puedes llevar este enfoque un poco más allá para hacer que las comparaciones de períodos sean dinámicas (o mediciones que cambien con los períodos especificados por los usuarios en Exploraciones, Looks o paneles) mediante filtros con plantillas en mediciones filtradas.

Descripción general del patrón

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

  1. Define un filtro con plantilla de type: date para cada período que aparecerá como un campo de solo filtro en Explorar, Vista o panel.
  2. Crea una dimensión de tipo yesno para vincularla al filtro con plantilla de modo que, cuando un usuario seleccione un valor para el campo de solo filtro, la dimensión yesno muestre "sí". para los registros que cumplen 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 comparen valores de diferentes períodos, como la siguiente exploración:

Los usuarios pueden cambiar los valores en los filtros Período A y Período B, y solo influirán en los valores de Recuento de pedidos A y Recuento de pedidos B. Recuento de pedidos A y Recuento de pedidos B son mediciones con filtros que hacen referencia a las condiciones de 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.

LookML

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

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

El LookML para comparar las mediciones de recuento (Orders Count A y Orders Count B) filtrados por dos períodos dinámicos (Timeframe A y Timeframe 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 mediciones filtradas no aplican una condición de filtro a los resultados generales de la búsqueda. Si deseas limitar los resultados generales de la consulta dentro de los períodos especificados, puedes hacer lo siguiente:

  1. Cree la siguiente dimensión de 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.