提交 2630891b 编写于 作者: weicheng.mao's avatar weicheng.mao

路径漏斗分析底表及路径漏斗计算

上级 4662bfdf
......@@ -133,7 +133,7 @@ object MyConfigSession {
final val SOURCE_PATH_CONVERT: String =
s"""
|select id log_session_id, session_id, user_id,device_token,action_type,user_token,menu_code,action_code,position,label_value,label_class,action_step,
|app_version,device_type,device_brand,device_model,net_type,created_time,date_time,module_class1,module_class2 from ${MyConfigSession.HIVE_TABLE4}
|app_version,device_type,device_brand,device_model,net_type,created_time,date_time,module_class1,module_class2,view_path from ${MyConfigSession.HIVE_TABLE4}
| where app_version >= '3.1.7'
| AND ((action_type ='ACTION_CLICK' and action_code != 'null' ) OR action_type ='ACTION_VIEW' )
| and (menu_code != '0' and menu_code !='null' and menu_code !='' and (length(menu_code) <= 3 or length(menu_code)=7) and cast(menu_code as int ) is not null)
......@@ -142,6 +142,7 @@ object MyConfigSession {
//匹配user_id的条件
//0.使用pica_ds.pica_doctor表匹配,匹配不上的user_id值为'0'
final val INIT_USER_ID_SQL =
......
此差异已折叠。
......@@ -77,7 +77,7 @@ object SessionPathConvert {
referDF.createOrReplaceTempView("pref_menu_info")
val referResDF: DataFrame = referDF.select( "log_session_id","session_id","user_id","device_token","action_type","user_token","menu_code","action_code","position",
"label_value","label_class","refer_log_session_id","refer_menu_code","refer_action_code","refer_position","refer_label_value","refer_created","step_id","app_version",
"device_type","device_brand","device_model","net_type","created_time","date_time","module_class1","module_class2","refer_time_diff")
"device_type","device_brand","device_model","net_type","created_time","date_time","module_class1","module_class2","refer_time_diff","view_path")
println("referResDF.printSchema()")
referResDF.printSchema()
// println(s"referResDF.count=${referResDF.count()}")
......@@ -140,7 +140,7 @@ class SessionPathConvert {
val groupRdd = dataFrame.rdd.groupBy(r => r.getAs[String]("session_id"))
val baseRdd = groupRdd.flatMap(g => {
val session_id = g._1
val resList: ListBuffer[PathStep] = new ListBuffer[PathStep]()
val resList: ListBuffer[PathStepConvert] = new ListBuffer[PathStepConvert]()
var rowList = g._2
rowList = rowList.toList.sortWith((x, y) => x.getAs[String]("created_time") < y.getAs[String]("created_time")) //按created由大到小排序
......@@ -231,7 +231,7 @@ class SessionPathConvert {
if(menu_code=="001"){
println(s"001的referMap==${referMap}")
}
resList += PathStep(row.getAs[String]("log_session_id"),
resList += PathStepConvert(row.getAs[String]("log_session_id"),
session_id,
row.getAs[Integer]("user_id"),
row.getAs[String]("device_token"),
......@@ -257,14 +257,16 @@ class SessionPathConvert {
referMap.getOrElse("referPostion",""),
referMap.getOrElse("referLabelValue",""),
referMap.getOrElse("referCreated",""),
actionStepNew )
actionStepNew ,
row.getAs[String]("view_path")
)
})
resList.iterator
})
import dataFrame.sparkSession.implicits._
var baseDF = baseRdd.toDF("log_session_id","session_id","user_id","device_token","action_type","user_token","menu_code","action_code",
"position","label_value","label_class","app_version","device_type","device_brand","device_model","net_type", "created_time","date_time",
"module_class1","module_class2","refer_log_session_id","refer_menu_code","refer_action_code","refer_position","refer_label_value","refer_created" ,"action_step_new")
"module_class1","module_class2","refer_log_session_id","refer_menu_code","refer_action_code","refer_position","refer_label_value","refer_created" ,"action_step_new","view_path")
println("baseDF.show=======>")
baseDF.show()
baseDF.printSchema()
......@@ -289,11 +291,40 @@ class SessionPathConvert {
| refer_log_session_id,refer_menu_code,refer_action_code,refer_position,refer_label_value,
| cast(refer_time_diff as int) as refer_time_diff,refer_created,
| step_id,app_version,device_type,device_brand,device_model,net_type ,created_time,date_time, module_class1, module_class2,
| case when user_id=0 then device_token else user_id end user_identity_id
| from result_view distribute by rand()
| case when user_id=0 then device_token else user_id end user_identity_id,view_path
| from result_view
""".stripMargin
sparkSession.sql(loadDataSql)
}
}
case class PathStepConvert(log_session_id: String,
session_id: String,
user_id: Integer,
device_token: String,
action_type: String,
user_token: String,
menu_code: String,
action_code: String,
position: String,
label_value: String,
label_class: String,
app_version: String,
device_type: String,
device_brand: String,
device_model: String,
net_type: String,
created_time: String,
date_time: String,
module_class1: String,
module_class2: String,
refer_log_session_id:String,
refer_menu_code:String,
refer_action_code:String,
refer_position:String,
refer_label_value:String,
refer_created:String,
action_step_new:String,
view_path:String
)
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册