我正在嘗試爲網站流量構建靈活的歸因模型。我開始製作最後一次點擊模式,根據訪問者在轉換前最後一次訪問的情況將轉化歸因於流量渠道。所以:在SQL Server 2012中選擇滿足條件x的最大值
Visitor Visit Channel ConversionId
visitor a visit 1 email 123
visitor a visit 2 email 123
visitor a visit 3 direct 123
visitor b visit 1 seo 123
visitor b visit 2 direct 123
visitor b visit 3 email 123
visitor c visit 1 seo 123
visitor c visit 2 direct 123
visitor c visit 3 direct 123
在上面的例子中,我會計算每個訪問者的最終訪問並將轉換歸因於該頻道。因此,訪問者a和訪問者c的轉化將歸因於直接,而訪問者b則歸因於電子郵件。
現在我希望能夠排除direct,並因此能夠將轉換歸因於最後一個非直接渠道。在這種情況下,訪客a和訪客b的轉化將歸因於電子郵件(訪客a的第三次訪問將被排除),而訪客c的轉化將歸因於se(因爲c的第二次和第三次訪問將被排除)。
我有這個成立至今的方式是(和一些這看上去有點愚蠢,因爲我剝奪了一些連接和識別的簡單信息出來):
WITH test (visitor,
visit, --a number unique for each visitor row but not necessarily unique across all visits
channel,
conversionid,
rn) AS
(
SELECT visitorid AS visitor,
visitid AS visit,
channel AS channel,
conversionid AS conversionid
rn = ROW_NUMBER() OVER (PARTITION BY conversionid ORDER BY visit DESC)
FROM db
GROUP BY visitorid,
visitid,
channel,
conversionid)
SELECT visitor,
MAX(visit) AS maxvisit,
channel,
conversionid
FROM test
WHERE rn = 1
GROUP BY visitor,
channel
ORDER BY visitor;
這給了我最後點擊歸屬。 (對於我來說,這樣做有一個更簡單的方法,但這種方式看起來並不靈活 - 我希望能夠輕鬆地更改查詢以排除渠道。)我的問題是,我該怎麼做才能排除直接並將轉化歸因於最後一個非直接渠道?如果需要,我還希望能夠排除其他渠道,以便我可以構建不同的歸因模型。
感謝一百萬人。
什麼,如果直接是用戶的唯一渠道是否要排除該用戶的所有在一起嗎? – Matt
加我看過你的代碼和你的示例數據,並沒有太多的區別。我可能會建議給我們一個例子,因爲它更直接地與您的代碼相關,然後向我們呈現您期望的輸出。例如,MAX(visit)似乎無論通道如何都會獲得Last VisitId。行號也是如此......所以你需要MAX(VisitId),然後MAX(VisitId)的Channel不是直接的,或者簡單地MAX(VisitId,不是直接的)和該id的頻道? – Matt
有沒有什麼原因讓你不要簡單地添加「WHERE頻道<>'直接'」? –