Tüm Ürünler
Search
Belge Merkezi

Simple Log Service:Pencere hunisi işlevi

Son Güncelleme:Sep 30, 2026

Pencere hunisi işlevi, kayan bir zaman penceresi içindeki ardışık olayları izleyerek kullanıcı davranışını, uygulama trafiğini ve ürün hedefi dönüşümlerini analiz eder.

Pencere hunisi işlevi aşağıdaki iki sözdizimini destekler.

Önemli

Analitik deyimlerde dizeler kullanmak istiyorsanız dizeleri tek tırnak içine ('') almanız gerekir. Tırnak içine alınmayan veya çift tırnak ("") içine alınan dizeler alan adlarını veya sütun adlarını belirtir. Örneğin,

'status'

durum dizesini belirtirken;

status

veya

"status"

durum günlük alanını belirtir.

İşlev

Sözdizimi

Açıklama

SQL desteği

SPL desteği

pencere hunisi işlevi

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

Kayan bir zaman penceresi içinde bir olay zinciri arar ve zincirdeki ardışık olayların maksimum sayısını hesaplar.

Verilerinizde zaten bir olay sütunu (event_id) tanımlıysa bu sözdizimini kullanın.

√

×

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

Kayan bir zaman penceresi içinde bir olay zinciri arar ve zincirdeki ardışık olayların maksimum sayısını hesaplar.

Daha fazla esneklik sağlamak amacıyla özel, numaralandırılmamış olay değerlerini tanımlamak için bu sözdizimini kullanın.

√

×

Çalışma mantığı

Pencere hunisi işlevi, kayan bir zaman penceresi içinde bir olay zinciri arar, zincirin başlangıcından itibaren en uzun eşleşen diziyi belirler ve bu dizinin uzunluğunu döndürür.

İşlev aşağıdaki algoritmayı kullanır:

  • Tanımlanan zincirdeki ilk olaydan başlayarak olay sayacını 1 olarak ayarlar ve kayan pencereyi açar.

  • Kayan pencere içinde, sonraki olaylar doğru sırada gerçekleşirse sayaç artar.

  • Dizi kesintiye uğrarsa mevcut arama sonlanır, olay sayacı artmayı durdurur ve yeni bir arama başlar.

  • Tüm aramalar tamamlandıktan sonra birden fazla eşleşme bulunursa işlev, en uzun eşleşen olay zincirinin uzunluğunu temsil eden en yüksek sayaç değerini döndürür.

Örneğin, 100 saniyelik bir kayan zaman penceresi ve Olay 1 -> Olay 2 -> Olay 3 -> Olay 4 -> Olay 5 şeklinde bir olay zinciri olduğunu varsayalım. Gerçek sıra Olay 1 -> Olay 2 -> Olay 4 -> Olay 5 -> Olay 1 -> Olay 3 ise işlev 2 değerini döndürür çünkü Olay 1'den başlayan en uzun eşleşen dizi Olay 1 -> Olay 2'dir.

Önemli
  • Arama, tanımlanan zincirdeki ilk olayla başlamalıdır. Örneğin, gerçek olay sırası Olay 2 -> Olay 3 -> Olay 4 ise işlev 0 değerini döndürür.

  • Arama sıkı bir sıra gerektirir ve olaylar atlanamaz. Örneğin, Olay 1 -> Olay 2 -> Olay 4 dizisinde eşleşme, Olay 3 atlandığı için Olay 2'den sonra durur. Bu nedenle Olay 4 sayılmaz.

窗口漏斗函数

Sözdizimi

Pencere hunisi işlevi aşağıdaki iki sözdizimini destekler.

  • Verilerinizde zaten bir olay sütunu (event_id) tanımlıysa aşağıdaki sözdizimini kullanın:

    window_funnel(sliding_window, timestamp, event_id, ARRAY[event_list01, event_list02...])
  • Özel, numaralandırılmamış olay değerlerini tanımlamak için aşağıdaki sözdizimini kullanın:

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

Parametreler

Parametre

Açıklama

sliding_window

Saniye cinsinden kayan zaman penceresi. Değer bigint türünde olmalıdır.

timestamp

Saniye cinsinden zaman damgası. Değer bigint türünde olmalıdır. Yerleşik __time__ günlük alanını kullanmanızı öneririz.

event_id

A, B veya C gibi bir olayı temsil eden günlük alanı. Değer varchar türünde olmalıdır.

event_list

En fazla 32 olay içerebilen, eşleştirilecek özel olay zinciri. Değer array türünde olmalıdır. Örnekler:

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

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

Örnekler

Bir e-ticaret mağazası promosyon düzenler ve dönüşüm performansını analiz etmek için pencere hunisi işlevini kullanır. Dönüşüm yolu üç adımdan oluşur: ürüne göz atma, sepete ekleme ve ürünü satın alma. Simple Log Service bu olaylara ilişkin günlükleri toplar.

Aşağıdaki örnekte bir günlük girdisindeki alanlar gösterilmektedir: behavior_type:pv, category_id:149192, item_id:2073959, timestamp:1511860012 ve user_id:137617.

Günlük alanı

Açıklama

behavior_type

Kullanıcı davranışı türü. Geçerli değerler:

  • pv: ürüne göz atma.

  • cart: sepete ekleme.

  • buy: ürünü satın alma.

category_id

Ürünün kategori kimliği.

item_id

Ürünün kimliği.

timestamp

Kullanıcı davranışının gerçekleştiği zaman.

user_id

Kullanıcının kimliği.

Example 1

24 saatlik bir pencere içindeki kullanıcı satın alma davranışını analiz edin.

  • Sorgu deyimi

    * |
    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
  • Sonuçlar

    • 24 numaralı kullanıcı için levels değeri 3'tür; bu, kullanıcının tam yolu tamamladığını gösterir: bir ürüne göz attı, sepete ekledi ve satın aldı.

    • 14 numaralı kullanıcı için levels değeri 2'dir; bu, kullanıcının bir ürüne göz attığını ve sepete eklediğini ancak satın alma işlemini tamamlamadığını gösterir.

    Sorgu, user_id ve levels olmak üzere iki sütundan oluşan bir tabloda 1.000 kayıt döndürür.

Example 2

Huninin her adımını kaç kullanıcının tamamladığını analiz edin.

  • Sorgu deyimi

    * |
    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
      )
  • Sonuçlar

    • 513.194 kullanıcı bir ürüne göz attı ve bunlardan 138.491'i bu adımdan sonra ayrıldı.

    • 374.703 kullanıcı bir ürünü sepete ekledi ve bunlardan 198.642'si bu adımdan sonra ayrıldı.

    • 176.061 kullanıcı bir ürün satın aldı.

Example 3

Promosyon için dönüşüm oranlarını hesaplayın.

  • Mutlak dönüşüm oranı: Belirli bir adımı tamamlayan toplam kullanıcı yüzdesi.

  • Göreli dönüşüm oranı: Belirli bir adımı tamamlayan kullanıcıların, önceki adımı tamamlayanlara göre yüzdesi.

  • Sorgu deyimi

    * |
    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
      )
  • Sonuçlar

    • Sorgu, levels, count, total, absolute conversion rate ve relative conversion rate olmak üzere beş sütundan oluşan bir tablo döndürür. Örneğin, 2. seviyede mutlak dönüşüm oranı yaklaşık %72,72'dir. Son adım olan 3. seviyede mutlak dönüşüm oranı yaklaşık %34,17, göreli dönüşüm oranı ise yaklaşık %46,99'dur.

    • huni grafiği 漏斗函数