java编一个漏斗_java – 漏斗分析计算,你如何计算漏斗?
首先,使用標準SQL,給出您的假設:
有一個簡單布局的表EVENTS:
EVENTS
-----------------------------
SESION_ID , EVENT_NAME , TMST
要在某個時間獲得執行步驟#1的會話:
-- QUERY 1
SELECT SESSION_ID,MIN(TMST) FROM EVENTS WHERE EVENT_NAME='event1' GROUP BY SESSION_ID;
在這里,我假設event1可以在每個會話中發生一次以上.結果是一個在某個時間演示了event1的唯一會話列表.
為了獲得step2和step3,我可以這樣做:
-- QUERY 2
SELECT SESSION_ID,MIN(TMST) FROM EVENTS WHERE EVENT_NAME='event2' GROUP BY SESSION_ID;
-- QUERY 3
SELECT SESSION_ID,MIN(TMST) FROM EVENTS WHERE EVENT_NAME='event3' GROUP BY SESSION_ID;
現在,您要按順序選擇執行step1,step2和step3的會話.
更準確地說,您需要計算執行步驟1的會話,然后計算執行步驟2的會話,然后計算執行步驟3的會話.
基本上我們只需要將上面的3個查詢與左連接組合在一起,列出進入漏斗的會話以及它們執行的步驟:
-- FUNNEL FOR S1/S2/S3
SELECT
SESSION_ID,
Q1.TMST IS NOT NULL AS PERFORMED_STEP1,
Q2.TMST IS NOT NULL AS PERFORMED_STEP2,
Q3.TMST IS NOT NULL AS PERFORMED_STEP3
FROM
-- QUERY 1
(SELECT SESSION_ID,MIN(TMST) FROM EVENTS WHERE EVENT_NAME='event1' GROUP BY SESSION_ID) AS Q1,
LEFT JOIN
-- QUERY 2
(SELECT SESSION_ID,MIN(TMST) FROM EVENTS WHERE EVENT_NAME='event2' GROUP BY SESSION_ID) AS Q2,
LEFT JOIN
-- QUERY 3
(SELECT SESSION_ID,MIN(TMST) FROM EVENTS WHERE EVENT_NAME='event2' GROUP BY SESSION_ID) AS Q3
-- Q2 & Q3
ON Q2.SESSION_ID=Q3.SESSION_ID AND Q2.TMST
-- Q1 & Q2
ON Q1.SESSION_ID=Q2.SESSION_ID AND Q1.TMST
結果是在步驟1進入漏斗的唯一會話列表,并且可能繼續到step2和step3 ……例如:
SESSION_ID_1,TRUE,TRUE,TRUE
SESSION_ID_2,TRUE,TRUE,FALSE
SESSION_ID_3,TRUE,FALSE,FALSE
...
現在我們只需要計算一些統計數據,例如:
SELECT
STEP1_COUNT,
STEP1_COUNT-STEP2_COUNT AS EXIT_AFTER_STEP1,
STEP2_COUNT*100.0/STEP1_COUNT AS PERCENTAGE_TO_STEP2,
STEP2_COUNT-STEP3_COUNT AS EXIT_AFTER_STEP2,
STEP3_COUNT*100.0/STEP2_COUNT AS PERCENTAGE_TO_STEP3,
STEP3_COUNT*100.0/STEP1_COUNT AS COMPLETION_RATE
FROM
(-- QUERY TO COUNT session at each step
SELECT
SUM(CASE WHEN PERFORMED_STEP1 THEN 1 ELSE 0 END) AS STEP1_COUNT,
SUM(CASE WHEN PERFORMED_STEP2 THEN 1 ELSE 0 END) AS STEP2_COUNT,
SUM(CASE WHEN PERFORMED_STEP3 THEN 1 ELSE 0 END) AS STEP3_COUNT
FROM
[... insert the funnel query here ...]
) AS COMPUTE_STEPS
Etvoilà!
現在進行討論.
第一點,考慮到你采用“集合”(或功能)思維方式而不是“程序化”方法,結果非常簡單.不要將數據庫可視化為具有列和行的固定表的集合……這是它的實現方式,但它不是您與它交互的方式.這是所有套裝,您可以按照您需要的方式安排套裝!
第二點,如果您使用MPP數據庫,查詢將自動優化為并行運行.您甚至不需要以不同方式編寫查詢,使用map-reduce或其他…我在我的測試數據集上運行了相同的查詢,其中包含超過1億個事件,并在幾秒鐘內獲得結果.
最后但并非最不重要的是,查詢打開了無限可能.只需按引用,關鍵字,登錄頁面,用戶信息和分析的結果進行分組,例如提供最佳轉換率!
總結
以上是生活随笔為你收集整理的java编一个漏斗_java – 漏斗分析计算,你如何计算漏斗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐几本学习Go语言的书
- 下一篇: 斜率优化专题