Todos los productos
Search
Centro de documentos

Simple Log Service:Función window funnel

Última actualización: Sep 02, 2026

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.

Importante

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 function

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.

Importante
  • 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:

  • ARRAY['A', 'B', 'C']

  • ARRAY[event_id='A', event_id='B', event_id='C']

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:

  • pv: explorar producto.

  • cart: agregar al carrito.

  • buy: comprar producto.

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 levels para 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 levels para 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 漏斗函数