Todos os produtos
Search
Central de documentação

Simple Log Service:Função de funil de janela

Última atualização: Jul 03, 2026

A função de funil de janela analisa o comportamento do usuário, o tráfego de aplicativos e as conversões de metas de produtos ao rastrear eventos sequenciais em uma janela de tempo deslizante.

A função de funil de janela aceita as duas sintaxes a seguir.

Importante

Para usar strings em instruções analíticas, coloque-as entre aspas simples (''). Strings sem aspas ou entre aspas duplas ("") indicam nomes de campos ou colunas. Por exemplo:

'status'

indica a string status, enquanto

status

ou

"status"

indica o campo de log status.

Função

Sintaxe

Descrição

Suporte SQL

Suporte SPL

função de funil de janela

window_funnel(sliding_window, timestamp, event_id, ARRAY[event_list01, event_list02...])

Busca uma cadeia de eventos em uma janela de tempo deslizante e calcula o número máximo de eventos consecutivos nessa cadeia.

Use esta sintaxe quando já existir uma coluna de evento (event_id) definida nos dados.

×

window_funnel(sliding_window, timestamp, ARRAY[event_id=event_list01, event_id=event_list02...])

Busca uma cadeia de eventos em uma janela de tempo deslizante e calcula o número máximo de eventos consecutivos nessa cadeia.

Use esta sintaxe para definir valores de evento personalizados e não enumerados, o que oferece maior flexibilidade.

×

Como funciona

A função de funil de janela busca uma cadeia de eventos em uma janela de tempo deslizante, identifica a sequência correspondente mais longa a partir do início da cadeia e retorna o comprimento dessa sequência.

A função utiliza o seguinte algoritmo:

  • Inicia pelo primeiro evento da cadeia definida, define o contador de eventos como 1 e abre a janela deslizante.

  • Dentro da janela deslizante, se os eventos subsequentes ocorrerem na ordem correta, o contador é incrementado.

  • Se a sequência for interrompida, a busca atual termina, o contador de eventos para de incrementar e uma nova busca começa.

  • Após a conclusão de todas as buscas, se houver múltiplas correspondências, a função retorna o maior valor do contador, que representa o comprimento da cadeia de eventos correspondente mais longa.

Por exemplo, considere uma janela de tempo deslizante de 100 segundos e uma cadeia de eventos: Evento 1 -> Evento 2 -> Evento 3 -> Evento 4 -> Evento 5. Se a sequência real for Evento 1 -> Evento 2 -> Evento 4 -> Evento 5 -> Evento 1 -> Evento 3, a função retorna 2, pois a sequência correspondente mais longa iniciada no Evento 1 é Evento 1 -> Evento 2.

Importante
  • A busca deve começar com o primeiro evento da cadeia definida. Por exemplo, se a sequência real de eventos for Evento 2 -> Evento 3 -> Evento 4, a função retorna 0.

  • A busca exige uma ordem estrita e não pode pular eventos. Por exemplo, na sequência Evento 1 -> Evento 2 -> Evento 4, a correspondência para após o Evento 2 porque o Evento 3 foi ignorado. Portanto, o Evento 4 não é contabilizado.

窗口漏斗函数

Sintaxe

A função de funil de janela aceita as duas sintaxes a seguir.

  • Se já houver uma coluna de evento (event_id) definida nos dados, use a seguinte sintaxe:

    window_funnel(sliding_window, timestamp, event_id, ARRAY[event_list01, event_list02...])
  • Para definir valores de evento personalizados e não enumerados, use a seguinte sintaxe:

    window_funnel(sliding_window, timestamp, ARRAY[event_id=event_list01, event_id=event_list02...])

Parâmetros

Parâmetro

Descrição

sliding_window

A janela de tempo deslizante, em segundos. O valor deve ser do tipo bigint.

timestamp

O timestamp, em segundos. O valor deve ser do tipo bigint. Recomendamos o uso do campo de log integrado __time__.

event_id

O campo de log que representa um evento, como A, B ou C. O valor deve ser do tipo varchar.

event_list

A cadeia de eventos personalizada para correspondência, que pode conter até 32 eventos. O valor deve ser do tipo array. Exemplos:

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

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

Exemplos

Uma loja de e-commerce executa uma promoção e usa a função de funil de janela para analisar o desempenho de conversão. O caminho de conversão consiste em três etapas: visualizar produto, adicionar ao carrinho e comprar produto. O Simple Log Service coleta logs desses eventos.

O exemplo a seguir mostra os campos em uma entrada de log: behavior_type:pv, category_id:149192, item_id:2073959, timestamp:1511860012 e user_id:137617.

Campo de log

Descrição

behavior_type

O tipo de comportamento do usuário. Valores válidos:

  • pv: visualizar produto.

  • cart: adicionar ao carrinho.

  • buy: comprar produto.

category_id

O ID da categoria do produto.

item_id

O ID do produto.

timestamp

O momento em que o comportamento do usuário ocorreu.

user_id

O ID do usuário.

Exemplo 1

Analise o comportamento de compra dos usuários em uma janela de 24 horas.

  • Instrução 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

    • O valor de levels para o usuário 24 é 3, o que indica que ele completou todo o caminho: visualizou um produto, adicionou-o ao carrinho e comprou-o.

    • O valor de levels para o usuário 14 é 2, o que indica que ele visualizou um produto e o adicionou ao carrinho, mas não concluiu a compra.

    A consulta retorna 1.000 registros em uma tabela com duas colunas: user_id e levels.

Exemplo 2

Analise quantos usuários concluíram cada etapa do funil.

  • Instrução 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 usuários visualizaram um produto e 138.491 deles saíram após essa etapa.

    • 374.703 usuários adicionaram um produto ao carrinho e 198.642 deles saíram após essa etapa.

    • 176.061 usuários compraram um produto.

Exemplo 3

Calcule as taxas de conversão da promoção.

  • Taxa de conversão absoluta: a porcentagem do total de usuários que concluíram uma etapa específica.

  • Taxa de conversão relativa: a porcentagem de usuários que concluíram uma etapa específica em relação aos que concluíram a etapa anterior.

  • Instrução 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

    • A consulta retorna uma tabela com cinco colunas: levels, count, total, absolute conversion rate e relative conversion rate. Por exemplo, no nível 2, a taxa de conversão absoluta é de aproximadamente 72,72%. No nível 3, a etapa final, a taxa de conversão absoluta é de aproximadamente 34,17% e a taxa de conversão relativa é de aproximadamente 46,99%.

    • Gráfico de funil 漏斗函数