Tous les produits
Search
Centre de documentation

Simple Log Service:Fonction window funnel

Dernière mise à jour :Aug 19, 2026

La fonction window funnel analyse le comportement des utilisateurs, le trafic des applications et les conversions d'objectifs produits en suivant des événements séquentiels au sein d'une fenêtre temporelle glissante.

La fonction window funnel prend en charge les deux syntaxes suivantes.

Important

Si vous souhaitez utiliser des chaînes de caractères dans les instructions d'analyse, vous devez les entourer de guillemets simples (''). Les chaînes non entourées de guillemets ou entourées de guillemets doubles ("") indiquent des noms de champs ou de colonnes. Par exemple,

'status'

indique la chaîne de caractères « status », tandis que

status

ou

"status"

indique le champ de journal « status ».

Fonction

Syntaxe

Description

Prise en charge SQL

Prise en charge SPL

Fonction window funnel

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

Recherche une chaîne d'événements au sein d'une fenêtre temporelle glissante et calcule le nombre maximal d'événements consécutifs dans cette chaîne.

Utilisez cette syntaxe si une colonne d'événement (event_id) est déjà définie dans vos données.

×

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

Recherche une chaîne d'événements au sein d'une fenêtre temporelle glissante et calcule le nombre maximal d'événements consécutifs dans cette chaîne.

Utilisez cette syntaxe pour définir des valeurs d'événement personnalisées et non énumérées, offrant ainsi une plus grande flexibilité.

×

Fonctionnement

La fonction window funnel recherche une chaîne d'événements au sein d'une fenêtre temporelle glissante, identifie la séquence correspondante la plus longue à partir du début de la chaîne et renvoie la longueur de cette séquence.

La fonction utilise l'algorithme suivant :

  • Elle commence par le premier événement de la chaîne définie, initialise le compteur d'événements à 1 et ouvre la fenêtre glissante.

  • Au sein de la fenêtre glissante, si les événements suivants se produisent dans l'ordre correct, le compteur s'incrémente.

  • Si la séquence est interrompue, la recherche actuelle se termine, le compteur d'événements cesse de s'incrémenter et une nouvelle recherche débute.

  • Une fois toutes les recherches terminées, si plusieurs correspondances ont été trouvées, la fonction renvoie la valeur la plus élevée du compteur, qui représente la longueur de la chaîne d'événements correspondante la plus longue.

Par exemple, supposons une fenêtre temporelle glissante de 100 secondes et une chaîne d'événements Événement 1 -> Événement 2 -> Événement 3 -> Événement 4 -> Événement 5. Si la séquence réelle est Événement 1 -> Événement 2 -> Événement 4 -> Événement 5 -> Événement 1 -> Événement 3, la fonction renvoie 2, car la séquence correspondante la plus longue commençant par l'Événement 1 est Événement 1 -> Événement 2.

Important
  • La recherche doit commencer par le premier événement de la chaîne définie. Par exemple, si la séquence d'événements réelle est Événement 2 -> Événement 3 -> Événement 4, la fonction renvoie 0.

  • La recherche requiert un ordre strict et ne permet pas d'ignorer des événements. Par exemple, dans la séquence Événement 1 -> Événement 2 -> Événement 4, la correspondance s'arrête après l'Événement 2 car l'Événement 3 a été ignoré. Par conséquent, l'Événement 4 n'est pas pris en compte.

窗口漏斗函数

Syntaxe

La fonction window funnel prend en charge les deux syntaxes suivantes.

  • Si une colonne d'événement (event_id) est déjà définie dans vos données, utilisez la syntaxe suivante :

    window_funnel(sliding_window, timestamp, event_id, ARRAY[event_list01, event_list02...])
  • Pour définir des valeurs d'événement personnalisées et non énumérées, utilisez la syntaxe suivante :

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

Paramètres

Paramètre

Description

sliding_window

La fenêtre temporelle glissante, en secondes. La valeur doit être de type bigint.

timestamp

L'horodatage, en secondes. La valeur doit être de type bigint. Nous recommandons d'utiliser le champ de journal intégré __time__.

event_id

Le champ de journal représentant un événement, tel que A, B ou C. La valeur doit être de type varchar.

event_list

La chaîne d'événements personnalisée à faire correspondre, pouvant contenir jusqu'à 32 événements. La valeur doit être de type array. Exemples :

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

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

Exemples

Un magasin de commerce électronique lance une promotion et utilise la fonction window funnel pour analyser les performances de conversion. Le parcours de conversion comprend trois étapes : parcourir un produit, l'ajouter au panier et l'acheter. Simple Log Service collecte les journaux de ces événements.

L'exemple suivant présente les champs d'une entrée de journal : behavior_type:pv, category_id:149192, item_id:2073959, timestamp:1511860012 et user_id:137617.

Champ de journal

Description

behavior_type

Le type de comportement de l'utilisateur. Valeurs possibles :

  • pv : parcourir un produit.

  • cart : ajouter au panier.

  • buy : acheter un produit.

category_id

L'ID de catégorie du produit.

item_id

L'ID du produit.

timestamp

L'heure à laquelle le comportement de l'utilisateur s'est produit.

user_id

L'ID de l'utilisateur.

Exemple 1

Analysez le comportement d'achat des utilisateurs sur une fenêtre de 24 heures.

  • Instruction de requête

    * |
    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
  • Résultats

    • La valeur levels pour l'utilisateur 24 est de 3, ce qui indique que l'utilisateur a suivi le parcours complet : il a parcouru un produit, l'a ajouté au panier et l'a acheté.

    • La valeur levels pour l'utilisateur 14 est de 2, ce qui indique que l'utilisateur a parcouru un produit et l'a ajouté au panier, mais n'a pas finalisé l'achat.

    La requête renvoie 1 000 enregistrements dans un tableau comportant deux colonnes : user_id et levels.

Exemple 2

Analysez le nombre d'utilisateurs ayant terminé chaque étape du funnel.

  • Instruction de requête

    * |
    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
      )
  • Résultats

    • 513 194 utilisateurs ont parcouru un produit, et 138 491 d'entre eux ont quitté le site après cette étape.

    • 374 703 utilisateurs ont ajouté un produit au panier, et 198 642 d'entre eux ont quitté le site après cette étape.

    • 176 061 utilisateurs ont acheté un produit.

Exemple 3

Calculez les taux de conversion pour la promotion.

  • Taux de conversion absolu : pourcentage d'utilisateurs totaux ayant terminé une étape spécifique.

  • Taux de conversion relatif : pourcentage d'utilisateurs ayant terminé une étape spécifique par rapport à ceux ayant terminé l'étape précédente.

  • Instruction de requête

    * |
    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
      )
  • Résultats

    • La requête renvoie un tableau comportant cinq colonnes : levels, count, total, absolute conversion rate et relative conversion rate. Par exemple, au niveau 2, le taux de conversion absolu est d'environ 72,72 %. Au niveau 3, dernière étape, le taux de conversion absolu est d'environ 34,17 % et le taux de conversion relatif est d'environ 46,99 %.

    • Graphique en funnel 漏斗函数