版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/someby/article/details/88926111
目录
PageOneStepConvertRateSpark.java
本篇文章记录页面单跳转化率-计算页面切片的转化率。
代码
PageOneStepConvertRateSpark.java
/** * 计算页面切片转化率 * @param taskParam 使用者传输的页面参数 * @param pageSplitPvMap 页面切片pv * @param startPagePv 起始页面pv * @return */ private static Map<String,Double> computePageSplitConvertRate( JSONObject taskParam, Map<String,Long> pageSplitPvMap, long startPagePv ){ Map<String,Double> convertRateMap = new HashMap<String,Double> (); String[] targetPages = ParamUtils.getParam(taskParam,Constants.PARAM_TARGET_PAGE_FLOW).split(","); long lastPageSplitPv = 0L; // 3,5,2,4,6 // 3_5 // 3_5 pv / 3 pv // 5_2 rate = 5_2 pv / 3_5 pv // 通过for循环,获取目标页面流中的各个页面切片(pv) for (int i =1; i < targetPages.length; i++){ String targetPageSplit = targetPages[i-1] +"_"+targetPages[i]; long targetPageSplitPv = Long.valueOf(String.valueOf(pageSplitPvMap.get(targetPageSplit))); double convertRate = 0.0; if (i ==1){ convertRate = NumberUtils.formatDouble((double) targetPageSplitPv / (double) startPagePv,2); }else{ convertRate = NumberUtils.formatDouble((double) targetPageSplitPv / (double)lastPageSplitPv,2); } convertRateMap.put(targetPageSplit,convertRate); lastPageSplitPv = targetPageSplitPv; } return convertRateMap; }