在新用戶首購當次Session 和 復購當次Session 的行為分析特征構建的過程中,可基于4.5 節(jié)中構建的特征庫進行二次開發(fā)。
按日期分區(qū)記錄每天新訪問用戶的特征,從行為事件、商品類型、商品特征、瀏覽時長等維度構建特征模型。
和4.5 節(jié)中,介紹的用戶特征庫不同的是,4.5節(jié)構建的特征庫是記錄用戶每一次行為的明細,而本節(jié)是對用戶首訪行為進行匯總,將其匯總成一條記錄。表結構設計參考下面維度表所示。
session 分析特征庫
下面通過案例介紹如何抽取用戶首次訪問的session.
這里有一張記錄用戶點擊行為日志的底層表‘ods.click_event_log’ 表,從該表中對當日訪問的新用戶按當日訪問時間做正排序,取第一次訪問時間對應的sessionid,即是用戶首次訪問的行為記錄。示例代碼如下:
這里用到了一個函數(shù):
row_number() over (partition by cookieid order by eventtime asc) as rank
當前日期分區(qū)里面,判斷是新用戶,這個案例很好:
https://blog.csdn.net/qq_25221835/article/details/82762416
在使用 row_number() over()函數(shù)時候,over()里頭的分組以及排序的執(zhí)行晚于 where 、group by、 order by 的執(zhí)行。
csdn 上案例,根據(jù)分組排序后取序號為1的數(shù)據(jù)
通過上面的建模,最后得到用戶首次訪問行為特征的Session表,如下圖所示:
Session 分析特征數(shù)據(jù)結構示例
后續(xù)進一步對用戶訪問特征的Session表進行透視分析,可以從多個維度挖掘用戶首訪特征。
分析方法與結論
通過對構建的首訪用戶行為特征進行透視分析,可以從用戶訪問路徑,訪問商品品類,瀏覽商品價格區(qū)間、對促銷敏感程度等維度挖掘首訪用戶特征。
下面通過對用戶訪問路徑進行分析的實踐案例來介紹。
SparkSession.builder 來創(chuàng)建一個 SparkSession 的實例,并通過 stop 函數(shù)來停止 SparkSession,創(chuàng)建的SparkSession類型的Spark 對象。
spark.sparkcontext.textFile().map(_.split(",")).map(row =>Row(row(0),row(1),row(2),row(3),row(4))
sparkContext.textFile() :從 HDFS、本地文件系統(tǒng)(在所有節(jié)點上可用)或任何 Hadoop 支持的文件系統(tǒng) URI 讀取文本文件,并將其作為字符串的 RDD 返回。文本文件必須編碼為 UTF-8。
如果 use_unicode 為 False,字符串將保存為 str(編碼為 utf-8),比 unicode 更快更小。 (在 Spark 1.2 中添加)
.map 含義:
Spark map() is a transformation operation that is used to apply the transformation on every element of RDD, DataFrame, and Dataset and finally returns a new RDD/Dataset respectively
Spark map() 是一個轉換操作,用于將轉換應用于 RDD、DataFrame 和 Dataset 的每個元素,最后分別返回一個新的 RDD/Dataset。
不解釋了,感覺上面好多不懂。— 下一個階段得研究下spark,上面的變換方式就是使用spark 對cookiesession.log(用戶首訪session原始數(shù)據(jù))做一個整理,最后產(chǎn)生基于cookie維度的事件,包括是否支付,訪問時間等等。
查看表結構如下圖所示,
用戶首訪session原始數(shù)據(jù)
通過用戶首訪session數(shù)據(jù),可以挖掘用戶集中在哪個時間段訪問、集中訪問事件是哪些、主要在哪些行為事件后跳出了訪問、哪些行為事件促進了最后下單、訪問時長與訪問量的增加是否能促進下單等維度的內(nèi)容。
看到223頁,待續(xù)。
]]>