sessionDuration/ avgPageTime/ timeOnSite 傻傻分不清楚

Session duration & avg page time

647992d6c0aac6a5886c7811be3f64e9_hd

上面 這個是avg session time,也就是平均session的時長。

7149972144fa7a3b01c192ec6f0afc27_b

上面這個是avg time on page,也就是平均每個頁面的瀏覽時長

而什麼是timeOnSite呢?

如果有發現的我給你103分,1分關懷,1分鼓勵 加 1分喜愛。

是的,我猜你沒發現。 avg time on page 比 avg session duration都長。session duration應該是每個page 的 time的和啊。怎麼會越加越少呢?

插播小故事,當年愛因斯坦走在後院的石子路上,在想,為什麼光速是恆定的呢?速度是距離時間比,既然速度沒變,那麼一定是距離和時間變了。之後便有了狹義相對論,人們知道了長度和時間是怎樣隨著時間的變化而變化的。

回到我們這裡,我們認為的公式是這樣:

Ht_SdTEUZVIgss9uugFwvckLOdYFalm7Wtbb5wkJ2RYxEdImUZwWkSfIw-W2dz-c00mC2yT31wEDmWiPn_ezYyeix1ZO44nwQBBqgqRus9SVPanmWAi32-BapUj_yXaZdtbYX6lv

sessionDuration 是這個session的所有page的timeOnPage的值的和。

既然sessionDuration沒錯,timeOnPage沒錯,那麼有問題的一定是我們的公式。


那麼我們再來看一下GA是如何計算sessionDuration的:

在計算sessionDuration前,我們要知道兩基本概念“engagement hit” 和 “non-interactive event”

所有不是用戶交互而產生的event都應該被設置成non-interactive event. 比如為了蒐集信息而在product page加載時發送的event。

所有的interactive event和page view都可以認為是一個engagement hit。比如所有默認的event。

好了,這時候可以給出sessionDuration的計算方法了:

R-wQJePALDksIRIWPW61TvcefpWvBFn-tOsYTv3N5JlvxpV5jbhOfH2-Xn7BEf3M9lYaSTtk9pwQNNhcvigsmV2VWiWOD7QBLUaBC4lUG11R-boWVAsDkUnbmA0A5yNYF5MJqGkr

這時聰明的同學可能發現了,如果一個session只有一個hit,也就是說這個是bounce的話,他的sessionDuration是0.

而timeOnPage是如何計算的呢?對一個page來說

2zV2aQVqa0iNtLJ-zHqn7aPbuV9jXDXpGAA2FRPiaxJS7_5i1eCwtPX2kqQ_nY2QtLs8aDy0yHaoXRAx5tolT0UFcH1mWLXsKCmF0jlb_B36IaF-Z2zNTg-geTj7Z0EE2s8-BJDQ

這裡的Exits是這個page作為exist的次數。所以我們發現,當我們計算Avg(timeOnPage)的時候,是排除了所有以該頁面為出口的情況下的timeOnPage的平均數。當這個session是bounce的時候,這個值被捨棄了,因為無意義。這也就說明了開頭的問題,為什麼我的avg(timeOnSite)會比avg(sessionDuration)高很多的原因。

所以說,GA不會知道最後一個engagement hit之後用戶停留了多久,對於bounce的session來說這是嚴重不符合實際情況的。而avgTimeOnSite這個metric就要好很多,至少在exit率低的頁面是這樣的。

墨跡了這麼多,好像題目裡還有一個timeOnSite,這是什麼?這不就是sessionDuration嗎?

TimeOnSite in Big query

timeOnSite是GA的raw data導出到Big query之後的一個字段。Google 的定義是 “Total time of the session expressed in seconds”

那麼他是不是就是sessionDuration呢?

既然我都這麼問了,肯定就不是了啊親愛的少年們。

43a4dc86d474c29c9569c394a2153f87_b

這裡借用一個客戶的圖,上面是GA報告中的AVG session duration, 下面是在BQ中計算的avg(totals.timeOnSite) 大家可以明顯的看到BQ中的數據要高出很多。下午活挺多的,我長話短說。下面是原因:

  • 在GA報告中,bounce掉的session時間被算成了0.而在BQ內,如果這是個bounce,他的timeOnSite是NULL. 在計算AVG的時候自然不會被計算入內(所以這裡算出來的session duration才更準一些啊 摔。當然前提還是你的bounce 率不是很高)

好了,那麼我們是不是就可以認為,所有的timeOnSite為NULL的都是bounce掉的session呢?

在給你們看一個query:

a73eebef4c3247551972ae6c201e49c0_b

在這個報告裡,timeOnSite 為NULL的session 平均一共有3.6個hits.

為什麼呢?為什麼平均有3.6個hits,而在網站的停留時間卻是恐怖的NULL?

經過了艱苦卓絕的努力和歷盡艱辛的探索。我發現了這個:

db976ccbace3faccc75e7d448b022362_bdb976ccbace3faccc75e7d448b022362_hd


GA中不管一個session有多少hits,只要session時長在500ms之內,他的timeOnSite都是0。

這時我們可以來做一個總結了。

  1. GA是不知道exit頁面停留了多久的,但是exist頁面有一個interactive event的話,session時長會算到這個event發生的時間。

  2. session duration是個很不靠譜的參數,尤其是你的bounce rate很高的時候。

  3. avg page time稍微靠譜一些,特別是當該頁面的exist率較低時。

  4. Big query中的timeOnSite會把所有時長小於500毫秒(當然包含bounce session)的session duration標記成NULL,從而不會參與普通的AVG運算符的計算。

growth hacker 與 Lean Startup 完美融合

具體到學習 Google Analytics-第一階段