Commit 6a84d617 authored by 赵建伟's avatar 赵建伟

update codes

parent 75a1f443
...@@ -53,35 +53,49 @@ CREATE TABLE `device_current_estimate_tag_unplat` ( ...@@ -53,35 +53,49 @@ CREATE TABLE `device_current_estimate_tag_unplat` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- CTR特征预估最近偏好表 -- CTR特征预估最近偏好表
CREATE TABLE `device_recently_estimate_view_pfr` ( CREATE TABLE `device_recently_estimate_view_pfr_new` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`device_id` varchar(150) DEFAULT NULL COMMENT '设备ID', `device_id` varchar(150) DEFAULT NULL COMMENT '设备ID',
`statistics_type` varchar(150) DEFAULT NULL COMMENT '统计类型', `statistics_type` varchar(150) DEFAULT NULL COMMENT '统计类型',
`statistics_type_id` varchar(150) DEFAULT NULL COMMENT '统计类型id', `statistics_type_id` varchar(150) DEFAULT NULL COMMENT '统计类型id',
`project_pfr` text COMMENT '项目偏好', `project_pfr_recent1` text COMMENT '近一次项目偏好(去重后)',
`first_demands_pfr` text COMMENT '一级诉求偏好', `project_pfr_recent3` text COMMENT '近三次项目偏好(去重后)',
`first_positions_pfr` text COMMENT '一级部位偏好', `project_pfr_recent10` text COMMENT '近十次项目偏好(去重后)',
`first_solutions_pfr` text COMMENT '一级方式偏好', `first_demands_pfr_recent1` text COMMENT '近一次一级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_demands_pfr` text COMMENT '二级诉求偏好', `first_demands_pfr_recent3` text COMMENT '近三次一级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_positions_pfr` text COMMENT '二级部位偏好', `first_demands_pfr_recent10` text COMMENT '近十次一级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_solutions_pfr` text COMMENT '二级方式偏好', `first_positions_pfr_recent1` text COMMENT '近一次一级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`first_positions_pfr_recent3` text COMMENT '近三次一级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`first_positions_pfr_recent10` text COMMENT '近十次一级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`first_solutions_pfr_recent1` text COMMENT '近一次一级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`first_solutions_pfr_recent3` text COMMENT '近三次一级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`first_solutions_pfr_recent10` text COMMENT '近十次一级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_demands_pfr_recent1` text COMMENT '近一次二级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_demands_pfr_recent3` text COMMENT '近三次二级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_demands_pfr_recent10` text COMMENT '近十次二级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_positions_pfr_recent1` text COMMENT '近一次二级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_positions_pfr_recent3` text COMMENT '近三次二级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_positions_pfr_recent10` text COMMENT '近十次二级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_solutions_pfr_recent1` text COMMENT '近一次二级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_solutions_pfr_recent3` text COMMENT '近三次二级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`second_solutions_pfr_recent10` text COMMENT '近十次二级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)',
`last_update_time` varchar(45) DEFAULT NULL COMMENT '上一次更改的时间', `last_update_time` varchar(45) DEFAULT NULL COMMENT '上一次更改的时间',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- CTR特征预估最近偏好表 -- CTR特征预估当日偏好表
CREATE TABLE `device_current_estimate_view_pfr` ( CREATE TABLE `device_current_estimate_view_pfr_new` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`device_id` varchar(150) DEFAULT NULL COMMENT '设备ID', `device_id` varchar(150) DEFAULT NULL COMMENT '设备ID',
`statistics_type` varchar(150) DEFAULT NULL COMMENT '统计类型', `statistics_type` varchar(150) DEFAULT NULL COMMENT '统计类型',
`statistics_type_id` varchar(150) DEFAULT NULL COMMENT '统计类型id', `statistics_type_id` varchar(150) DEFAULT NULL COMMENT '统计类型id',
`project_pfr` text COMMENT '项目偏好', `project_pfr` text COMMENT '项目偏好,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)',
`first_demands_pfr` text COMMENT '一级诉求偏好', `first_demands_pfr` text COMMENT '一级诉求偏好,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)',
`first_positions_pfr` text COMMENT '一级部位偏好', `first_positions_pfr` text COMMENT '一级部位偏好,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)',
`first_solutions_pfr` text COMMENT '一级方式偏好', `first_solutions_pfr` text COMMENT '一级方式偏好,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)',
`second_demands_pfr` text COMMENT '二级诉求偏好', `second_demands_pfr` text COMMENT '二级诉求偏好,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)',
`second_positions_pfr` text COMMENT '二级部位偏好', `second_positions_pfr` text COMMENT '二级部位偏好,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)',
`second_solutions_pfr` text COMMENT '二级方式偏好', `second_solutions_pfr` text COMMENT '二级方式偏好,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)',
`partition_date` varchar(45) DEFAULT NULL COMMENT '日期', `partition_date` varchar(45) DEFAULT NULL COMMENT '日期',
`last_update_time` varchar(45) DEFAULT NULL COMMENT '上一次更改的时间', `last_update_time` varchar(45) DEFAULT NULL COMMENT '上一次更改的时间',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
......
...@@ -4,13 +4,11 @@ import com.gmei.data.ctr.bean.CtrPfrCrtBean; ...@@ -4,13 +4,11 @@ import com.gmei.data.ctr.bean.CtrPfrCrtBean;
import com.gmei.data.ctr.common.Constants; import com.gmei.data.ctr.common.Constants;
import com.gmei.data.ctr.utils.DateUtils; import com.gmei.data.ctr.utils.DateUtils;
import com.gmei.data.ctr.utils.JDBCUtils; import com.gmei.data.ctr.utils.JDBCUtils;
import com.gmei.data.ctr.utils.StringUtils;
import org.apache.flink.configuration.Configuration; import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.functions.sink.RichSinkFunction; import org.apache.flink.streaming.api.functions.sink.RichSinkFunction;
import java.sql.Connection; import java.sql.*;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date; import java.util.Date;
/** /**
...@@ -73,38 +71,98 @@ public class CtrPfrCrtMysqlSink extends RichSinkFunction<CtrPfrCrtBean> { ...@@ -73,38 +71,98 @@ public class CtrPfrCrtMysqlSink extends RichSinkFunction<CtrPfrCrtBean> {
Statement statement = null; Statement statement = null;
Date date = new Date(); Date date = new Date();
if(null != ctrPfrCrtBean){ if(null != ctrPfrCrtBean){
boolean isExist = false;
String projectPfr="";
String firstDemandsPfr="";
String firstPositionsPfr="";
String firstSolutionsPfr="";
String secondDemandsPfr="";
String secondPositionsPfr="";
String secondSolutionsPfr="";
try{ try{
statement = connection.createStatement(); statement = connection.createStatement();
statement.executeUpdate( ResultSet resultSet = statement.executeQuery(
String.format( String.format(
"insert into device_current_estimate_view_pfr("+ "select " +
"device_id," +
"statistics_type," +
"statistics_type_id," +
"project_pfr," + "project_pfr," +
"first_demands_pfr," + "first_demands_pfr," +
"first_positions_pfr," + "first_positions_pfr," +
"first_solutions_pfr," + "first_solutions_pfr," +
"second_demands_pfr," + "second_demands_pfr," +
"second_positions_pfr," + "second_positions_pfr," +
"second_solutions_pfr," + "second_solutions_pfr" +
"partition_date," + "from device_current_estimate_view_pfr_new " +
"last_update_time" "where device_id = '%s' and statistics_type = '%s' and statistics_type_id = '%s' and partition_date = '%s'",
+ ") values ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
ctrPfrCrtBean.getDeviceId(), ctrPfrCrtBean.getDeviceId(),
ctrPfrCrtBean.getStatisticsType(), ctrPfrCrtBean.getStatisticsType(),
ctrPfrCrtBean.getStatisticsTypeId(), ctrPfrCrtBean.getStatisticsTypeId(),
ctrPfrCrtBean.getProjectPfr(), ctrPfrCrtBean.getPartitionDate()
ctrPfrCrtBean.getFirstDemandsPfr(),
ctrPfrCrtBean.getFirstPositionsPfr(),
ctrPfrCrtBean.getFirstSolutionsPfr(),
ctrPfrCrtBean.getSecondDemandsPfr(),
ctrPfrCrtBean.getSecondPositionsPfr(),
ctrPfrCrtBean.getSecondSolutionsPfr(),
DateUtils.getDateStr(date),
DateUtils.getTimeStr(date)
) )
); );
if (resultSet.next()){
isExist = true;
projectPfr=resultSet.getString("project_pfr");
firstDemandsPfr=resultSet.getString("first_demands_pfr");
firstPositionsPfr=resultSet.getString("first_positions_pfr");
firstSolutionsPfr=resultSet.getString("first_solutions_pfr");
secondDemandsPfr=resultSet.getString("second_demands_pfr");
secondPositionsPfr=resultSet.getString("second_positions_pfr");
secondSolutionsPfr=resultSet.getString("second_solutions_pfr");
}
if(isExist){
statement.executeUpdate(
String.format(
"update device_current_estimate_view_pfr_new set "+
"project_pfr = '%s'," +
"first_demands_pfr = '%s'," +
"first_positions_pfr = '%s'," +
"first_solutions_pfr = '%s'," +
"second_demands_pfr = '%s'," +
"second_positions_pfr = '%s'," +
"second_solutions_pfr = '%s'," +
"last_update_time = '%s'",
StringUtils.increasePfr(projectPfr,ctrPfrCrtBean.getProjectPfr()),
StringUtils.increasePfr(firstDemandsPfr,ctrPfrCrtBean.getFirstDemandsPfr()),
StringUtils.increasePfr(firstPositionsPfr,ctrPfrCrtBean.getFirstPositionsPfr()),
StringUtils.increasePfr(firstSolutionsPfr,ctrPfrCrtBean.getFirstSolutionsPfr()),
StringUtils.increasePfr(secondDemandsPfr,ctrPfrCrtBean.getSecondDemandsPfr()),
StringUtils.increasePfr(secondPositionsPfr,ctrPfrCrtBean.getSecondPositionsPfr()),
StringUtils.increasePfr(secondSolutionsPfr,ctrPfrCrtBean.getSecondSolutionsPfr()),
DateUtils.getTimeStr(date)
)
);
}else{
statement.executeUpdate(
String.format(
"insert into device_current_estimate_view_pfr_new("+
"device_id," +
"statistics_type," +
"statistics_type_id," +
"project_pfr," +
"first_demands_pfr," +
"first_positions_pfr," +
"first_solutions_pfr," +
"second_demands_pfr," +
"second_positions_pfr," +
"second_solutions_pfr," +
"partition_date," +
"last_update_time"
+ ") values ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
ctrPfrCrtBean.getDeviceId(),
ctrPfrCrtBean.getStatisticsType(),
ctrPfrCrtBean.getStatisticsTypeId(),
StringUtils.transString2PairedString(ctrPfrCrtBean.getProjectPfr()),
StringUtils.transString2PairedString(ctrPfrCrtBean.getFirstDemandsPfr()),
StringUtils.transString2PairedString(ctrPfrCrtBean.getFirstPositionsPfr()),
StringUtils.transString2PairedString(ctrPfrCrtBean.getFirstSolutionsPfr()),
StringUtils.transString2PairedString(ctrPfrCrtBean.getSecondDemandsPfr()),
StringUtils.transString2PairedString(ctrPfrCrtBean.getSecondPositionsPfr()),
StringUtils.transString2PairedString(ctrPfrCrtBean.getSecondSolutionsPfr()),
DateUtils.getDateStr(date),
DateUtils.getTimeStr(date)
)
);
}
JDBCUtils.close(null,statement,null); JDBCUtils.close(null,statement,null);
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
......
package com.gmei.data.ctr.utils;
import java.util.HashMap;
import java.util.Map;
/**
* @ClassName StringUtils
* @Author apple
* @Date 2020/4/13
* @Version V1.0
**/
public class StringUtils {
public static Map<String,Integer> transPairedString2Map(String str){
Map<String,Integer> map = new HashMap<String,Integer>();
String[] splits = str.split(",");
for (String split: splits) {
String[] sp = split.split(":");
if(sp.length == 2){
map.put(sp[0],Integer.valueOf(sp[1]));
}
}
return map;
}
public static String transMap2PairedString(Map<String,Integer> map){
String str = "";
for (Map.Entry entry: map.entrySet()) {
str += entry.getKey() + ":" + entry.getValue() + ",";
}
if(str.length() == 0){
return str;
}
return str.substring(0,str.length() -1);
}
public static Map<String,Integer> transString2Map(String str){
Map<String,Integer> map = new HashMap<String,Integer>();
String[] splits = str.split(",");
for (String split : splits) {
if(org.apache.commons.lang3.StringUtils.isNotBlank(split)){
map.put(split,1);
}
}
return map;
}
public static Map<String,Integer> increaseByKey(Map<String,Integer> oldMap,String str){
Map<String, Integer> stringIntegerMap = transString2Map(str);
for(Map.Entry<String,Integer> entry : oldMap.entrySet()){
String key = entry.getKey();
if(stringIntegerMap.containsKey(key)){
Integer value = oldMap.get(key);
Integer result = value + 1;
oldMap.put(key,result);
}
stringIntegerMap.remove(key);
}
oldMap.putAll(stringIntegerMap);
return oldMap;
}
public static String transString2PairedString(String str){
Map<String, Integer> stringIntegerMap = transString2Map(str);
return transMap2PairedString(stringIntegerMap);
}
public static String increasePfr(String oldStr,String str) {
Map<String,Integer> oldMap = transPairedString2Map(oldStr);
Map<String, Integer> newMap = increaseByKey(oldMap,str);
return transMap2PairedString(newMap);
}
public static void main(String[] args) {
String str = "xx:1,yy:2,zz:3";
String newPfr = "xx,yy,zz";
String s = increasePfr(str, newPfr);
System.out.println(s);
System.out.println(transString2PairedString(newPfr));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment