您好,登錄后才能下訂單哦!
如何進行clickhouse數據模型的session分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
什么是session,Session即會話,是指在指定的時間段內在您的網站/H5/小程序/APP上發生的一系列用戶行為的集合。例如,一次會話可以包含多個頁面瀏覽、交互事件等。
Session 是具備時間屬性的,根據不同的切割規則,可以生成不同長度的 Session; 可見,Session統計與上述智能路徑檢測的場景有相似之處,都需要尋找用戶行為鏈的邊界進行處理;session分析主要包含兩部分:
session切割;例如,用戶訪問您的網站,打開了一個網頁,有事離開了電腦。幾個小時候回來后繼續訪問,用戶的session訪問次數應該算作幾次? 又比如,用戶在pc端添加了購物車,在手機端完成了支付,又應該算作幾次。
session指標統計;session分析常見的分析指標有,session訪問次數,訪問深度、訪問時長、跳出率等等。
案例一
以30分鐘為超時時間,按天統計所有用戶的Session總數(跨天的Session也會被切割)
SELECT ts_date, sum(length(session_gaps)) AS session_cnt #計算會話次數FROM ( WITH arraySort(groupArray(toUnixTimestamp(time))) AS times, arrayDifference(times) AS times_diff #求解相鄰事件的時間差 SELECT toDate(time) as ts_date, arrayFilter(x -> x > 1800, times_diff) AS session_gaps #設置切割點 FROM app.scene_tracker WHERE toDate(time) >= '2020-09-06' AND toDate(time) <= '2020-09-07' GROUP BY ts_date,user_id)GROUP BY ts_date
案例二
以30分鐘或指定事件為【會員支付成功】做為切割點,統計每天session平均訪問深度(相鄰相同事件只計算一次)
SELECT ts_date, count(1) session_cnt, sum(length(event_chain)) AS event_cnt, round(event_cnt/session_cnt)FROM ( WITH arraySort(groupArray(( toUnixTimestamp(time), act ))) AS sorted_events, arrayEnumerate(sorted_events) AS event_idxs, arrayFilter( (x,y,z) -> y>1800 or z.2='會員支付成功', event_idxs, arrayDifference(sorted_events.1), sorted_events ) as gap_index , arrayMap(x->x+1, gap_index) as gap_index_ , arrayMap(x -> if(has(gap_index_, x), 1, 0), event_idxs) as gap_marks , arraySplit((x,y) -> y, sorted_events, gap_marks) as session_chain SELECT toDate(time) as ts_date, u_i as user_id, arrayJoin(session_chain) event_chain_, arrayCompact(x->x.2, event_chain_) event_chain FROM app.scene_tracker WHERE toDate(time) >= '2020-09-06' AND toDate(time) <= '2020-09-07' GROUP BY ts_date,user_id)GROUP BY ts_date
關于如何進行clickhouse數據模型的session分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。