La función window funnel analiza el comportamiento del usuario, el tráfico de aplicaciones y las conversiones de objetivos del producto mediante el seguimiento de eventos secuenciales dentro de una ventana de tiempo deslizante.
La función window funnel admite las dos sintaxis a continuación.
Si desea usar cadenas en instrucciones analíticas, debe encerrarlas entre comillas simples (''). Las cadenas sin comillas o entre comillas dobles ("") indican nombres de campo o de columna. Por ejemplo,
'status'
indica la cadena status, mientras que
status
o
"status"
indican el campo de registro status.
|
Función |
Sintaxis |
Descripción |
Compatibilidad con SQL |
Compatibilidad con SPL |
|
window_funnel(sliding_window, timestamp, event_id, ARRAY[event_list01, event_list02...]) |
Busca una cadena de eventos dentro de una ventana de tiempo deslizante y calcula el número máximo de eventos consecutivos en dicha cadena. Use esta sintaxis si ya existe una columna de eventos (event_id) definida en sus datos. |
√ |
× |
|
|
window_funnel(sliding_window, timestamp, ARRAY[event_id=event_list01, event_id=event_list02...]) |
Busca una cadena de eventos dentro de una ventana de tiempo deslizante y calcula el número máximo de eventos consecutivos en dicha cadena. Use esta sintaxis para definir valores de eventos personalizados y no enumerados, lo que ofrece mayor flexibilidad. |
√ |
× |
Funcionamiento
La función window funnel busca una cadena de eventos dentro de una ventana de tiempo deslizante, identifica la secuencia coincidente más larga desde el inicio de la cadena y devuelve la longitud de esa secuencia.
La función usa el siguiente algoritmo:
Comienza con el primer evento de la cadena definida, establece el contador de eventos en 1 y abre la ventana deslizante.
Dentro de la ventana deslizante, si los eventos subsiguientes ocurren en el orden correcto, el contador se incrementa.
Si la secuencia se interrumpe, la búsqueda actual finaliza, el contador deja de incrementarse y comienza una nueva búsqueda.
Una vez completadas todas las búsquedas, si se encontraron varias coincidencias, la función devuelve el valor más alto del contador, que representa la longitud de la cadena de eventos coincidente más larga.
Por ejemplo, suponga una ventana de tiempo deslizante de 100 segundos y una cadena de eventos: Evento 1 -> Evento 2 -> Evento 3 -> Evento 4 -> Evento 5. Si la secuencia real es Evento 1 -> Evento 2 -> Evento 4 -> Evento 5 -> Evento 1 -> Evento 3, la función devuelve 2 porque la secuencia coincidente más larga que comienza con el Evento 1 es Evento 1 -> Evento 2.
La búsqueda debe comenzar con el primer evento de la cadena definida. Por ejemplo, si la secuencia real de eventos es Evento 2 -> Evento 3 -> Evento 4, la función devuelve 0.
La búsqueda requiere un orden estricto y no puede omitir eventos. Por ejemplo, en la secuencia Evento 1 -> Evento 2 -> Evento 4, la coincidencia se detiene después del Evento 2 porque se omitió el Evento 3. Por lo tanto, el Evento 4 no se cuenta.

Sintaxis
La función window funnel admite las dos sintaxis a continuación.
-
Si ya existe una columna de eventos (event_id) definida en sus datos, use la siguiente sintaxis:
window_funnel(sliding_window, timestamp, event_id, ARRAY[event_list01, event_list02...]) -
Para definir valores de eventos personalizados y no enumerados, use la siguiente sintaxis:
window_funnel(sliding_window, timestamp, ARRAY[event_id=event_list01, event_id=event_list02...])
Parámetros
|
Parámetro |
Descripción |
|
sliding_window |
La ventana de tiempo deslizante, en segundos. El valor debe ser de tipo bigint. |
|
timestamp |
La marca de tiempo, en segundos. El valor debe ser de tipo bigint. Se recomienda usar el campo de registro integrado __time__. |
|
event_id |
El campo de registro que representa un evento, como A, B o C. El valor debe ser de tipo varchar. |
|
event_list |
La cadena de eventos personalizada para buscar, la cual puede contener hasta 32 eventos. El valor debe ser de tipo array. Ejemplos:
|
Ejemplos
Una tienda de comercio electrónico ejecuta una promoción y usa la función window funnel para analizar el rendimiento de conversión. La ruta de conversión consta de tres pasos: explorar producto, agregar al carrito y comprar producto. Simple Log Service recopila registros para estos eventos.
El siguiente ejemplo muestra los campos en una entrada de registro: behavior_type:pv, category_id:149192, item_id:2073959, timestamp:1511860012 y user_id:137617.
|
Campo de registro |
Descripción |
|
behavior_type |
El tipo de comportamiento del usuario. Valores válidos:
|
|
category_id |
El ID de categoría del producto. |
|
item_id |
El ID del producto. |
|
timestamp |
La hora en que ocurrió el comportamiento del usuario. |
|
user_id |
El ID del usuario. |
Ejemplo 1
Analice el comportamiento de compra de los usuarios dentro de una ventana de 24 horas.
-
Instrucción de consulta
* | SELECT user_id, window_funnel( 86400, timestamp, ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy'] ) AS levels GROUP BY user_id ORDER BY user_id LIMIT 1000 -
Resultados
El valor
levelspara el usuario 24 es 3, lo que indica que completó la ruta completa: exploró un producto, lo agregó al carrito y lo compró.El valor
levelspara el usuario 14 es 2, lo que indica que exploró un producto y lo agregó al carrito, pero no completó la compra.
La consulta devuelve 1,000 registros en una tabla con dos columnas: user_id y levels.
Ejemplo 2
Analice cuántos usuarios completaron cada paso del embudo.
-
Instrucción de consulta
* | SELECT levels, count, sum(count) over( ORDER BY levels DESC ) AS total FROM ( SELECT levels, count(1) AS count FROM ( SELECT user_id, window_funnel( 86400, timestamp, ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy'] ) AS levels FROM log GROUP BY user_id ) GROUP BY levels ORDER BY levels ) -
Resultados
513,194 usuarios exploraron un producto y 138,491 de ellos abandonaron después de este paso.
374,703 usuarios agregaron un producto al carrito y 198,642 de ellos abandonaron después de este paso.
176,061 usuarios compraron un producto.
Ejemplo 3
Calcule las tasas de conversión para la promoción.
Tasa de conversión absoluta: el porcentaje del total de usuarios que completaron un paso específico.
Tasa de conversión relativa: el porcentaje de usuarios que completaron un paso específico respecto a quienes completaron el paso anterior.
-
Instrucción de consulta
* | SELECT *, 100.0 * total /(sum(count) over()) AS "absolute conversion rate", if( lag(total, 1, 0) over() = 0, 100, (100.0 * total / lag(total, 1, 0) over()) ) AS "relative conversion rate" FROM ( SELECT levels, count, sum(count) over( ORDER BY levels DESC ) AS total FROM ( SELECT levels, count(1) AS count FROM ( SELECT user_id, window_funnel( 86400, timestamp, ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy'] ) AS levels FROM log GROUP BY user_id ) GROUP BY levels ) ORDER BY levels ) -
Resultados
La consulta devuelve una tabla con cinco columnas: levels, count, total, absolute conversion rate y relative conversion rate. Por ejemplo, en el nivel 2, la tasa de conversión absoluta es de aproximadamente 72.72%. En el nivel 3, el paso final, la tasa de conversión absoluta es de aproximadamente 34.17% y la tasa de conversión relativa es de aproximadamente 46.99%.
Gráfico de embudo
