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:
-
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. -
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ónyesno
muestre "sí". para los registros que cumplen las condiciones del filtro. -
Crea una medición filtrada que haga referencia a la dimensión
yesno
con la condiciónvalue = "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:
-
Cree la siguiente dimensión de
yesno
- 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.