Prechádzať zdrojové kódy

实时聚合的小时数据的 bug

wcc 3 rokov pred
rodič
commit
350d5fd7df

+ 54 - 26
flink-ad-monitoring/src/main/java/flink/zanxiangnet/ad/monitoring/pojo/entity/AdStatOfMinuteDWD.java

@@ -1755,58 +1755,32 @@ public class AdStatOfMinuteDWD {
         result.setCostHour(statODS.getCost());
         result.setCompensationAmountHour(statODS.getCompensationAmount());
         result.setViewCountHour(statODS.getViewCount());
-        result.setThousandDisplayPriceHour(statODS.getThousandDisplayPrice());
         result.setAvgViewPerUserHour(statODS.getAvgViewPerUser());
         result.setValidClickCountHour(statODS.getValidClickCount());
-        result.setCtrHour(statODS.getCtr());
-        result.setCpcHour(statODS.getCpc());
         result.setValuableClickCountHour(statODS.getValuableClickCount());
-        result.setValuableClickRateHour(statODS.getValuableClickRate());
-        result.setValuableClickCostHour(statODS.getValuableClickCost());
         result.setConversionsCountHour(statODS.getConversionsCount());
-        result.setConversionsCostHour(statODS.getConversionsCost());
-        result.setConversionsRateHour(statODS.getConversionsRate());
         result.setDeepConversionsCountHour(statODS.getDeepConversionsCount());
-        result.setDeepConversionsCostHour(statODS.getDeepConversionsCost());
-        result.setDeepConversionsRateHour(statODS.getDeepConversionsRate());
         result.setOrderCountHour(statODS.getOrderCount());
         result.setFirstDayOrderCountHour(statODS.getFirstDayOrderCount());
-        result.setWebOrderCostHour(statODS.getWebOrderCost());
-        result.setOrderRateHour(statODS.getOrderRate());
         result.setOrderAmountHour(statODS.getOrderAmount());
         result.setFirstDayOrderAmountHour(statODS.getFirstDayOrderAmount());
-        result.setOrderUnitPriceHour(statODS.getOrderUnitPrice());
-        result.setOrderRoiHour(statODS.getOrderRoi());
         result.setSignInCountHour(statODS.getSignInCount());
         result.setScanFollowCountHour(statODS.getScanFollowCount());
         result.setWechatAppRegisterUvHour(statODS.getWechatAppRegisterUv());
-        result.setWechatMinigameRegisterCostHour(statODS.getWechatMinigameRegisterCost());
-        result.setWechatMinigameRegisterRateHour(statODS.getWechatMinigameRegisterRate());
-        result.setWechatMinigameArpuHour(statODS.getWechatMinigameArpu());
         result.setWechatMinigameRetentionCountHour(statODS.getWechatMinigameRetentionCount());
         result.setWechatMinigameCheckoutCountHour(statODS.getWechatMinigameCheckoutCount());
         result.setWechatMinigameCheckoutAmountHour(statODS.getWechatMinigameCheckoutAmount());
         result.setOfficialAccountFollowCountHour(statODS.getOfficialAccountFollowCount());
-        result.setOfficialAccountFollowRateHour(statODS.getOfficialAccountFollowRate());
         result.setOfficialAccountRegisterUserCountHour(statODS.getOfficialAccountRegisterUserCount());
-        result.setOfficialAccountRegisterRateHour(statODS.getOfficialAccountRegisterRate());
-        result.setOfficialAccountRegisterCostHour(statODS.getOfficialAccountRegisterCost());
         result.setOfficialAccountRegisterAmountHour(statODS.getOfficialAccountRegisterAmount());
-        result.setOfficialAccountRegisterRoiHour(statODS.getOfficialAccountRegisterRoi());
         result.setOfficialAccountApplyCountHour(statODS.getOfficialAccountApplyCount());
         result.setOfficialAccountApplyUserCountHour(statODS.getOfficialAccountApplyUserCount());
-        result.setOfficialAccountApplyRateHour(statODS.getOfficialAccountApplyRate());
-        result.setOfficialAccountApplyCostHour(statODS.getOfficialAccountApplyCost());
         result.setOfficialAccountApplyAmountHour(statODS.getOfficialAccountApplyAmount());
-        result.setOfficialAccountApplyRoiHour(statODS.getOfficialAccountApplyRoi());
         result.setOfficialAccountOrderCountHour(statODS.getOfficialAccountOrderCount());
         result.setOfficialAccountFirstDayOrderCountHour(statODS.getOfficialAccountFirstDayOrderCount());
         result.setOfficialAccountOrderUserCountHour(statODS.getOfficialAccountOrderUserCount());
-        result.setOfficialAccountOrderRateHour(statODS.getOfficialAccountOrderRate());
-        result.setOfficialAccountOrderCostHour(statODS.getOfficialAccountOrderCost());
         result.setOfficialAccountOrderAmountHour(statODS.getOfficialAccountOrderAmount());
         result.setOfficialAccountFirstDayOrderAmountHour(statODS.getOfficialAccountFirstDayOrderAmount());
-        result.setOfficialAccountOrderRoiHour(statODS.getOfficialAccountOrderRoi());
         result.setOfficialAccountConsultCountHour(statODS.getOfficialAccountConsultCount());
         result.setOfficialAccountReaderCountHour(statODS.getOfficialAccountReaderCount());
         result.setOfficialAccountCreditApplyUserCountHour(statODS.getOfficialAccountCreditApplyUserCount());
@@ -1814,6 +1788,60 @@ public class AdStatOfMinuteDWD {
         result.setForwardCountHour(statODS.getForwardCount());
         result.setForwardUserCountHour(statODS.getForwardUserCount());
         result.setNoInterestCountHour(statODS.getNoInterestCount());
+
+        // 总消耗 / 总曝光
+        result.setThousandDisplayPriceHour(result.getViewCountHour() == 0 ? 0 : NumberUtil.divideForAd(result.getCostHour(), result.getViewCountHour()).multiply(new BigDecimal(1000)).longValue());
+        // 广告点击次数 / 广告曝光次数
+        result.setCtrHour(result.getViewCountHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getValidClickCountHour(), result.getViewCountHour()));
+        // 广告花费/广告点击次数
+        result.setCpcHour(result.getValidClickCountHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getCostHour(), result.getValidClickCountHour()));
+        // 广告可转化点击次数/广告曝光次数
+        result.setValuableClickRateHour(result.getViewCountHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getValuableClickCountHour(), result.getViewCountHour()));
+        // 广告花费/可转化点击次数
+        result.setValuableClickCostHour(result.getValuableClickCountHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getCostHour(), result.getValuableClickCountHour()));
+        // 广告花费/转化目标量
+        result.setConversionsCostHour(result.getConversionsCountHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getCostHour(), result.getConversionsCountHour()));
+        // 公众号:转化目标量/点击次数。
+        result.setConversionsRateHour(result.getValidClickCountHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getConversionsCountHour(), result.getValidClickCountHour()));
+        // 广告花费/深度转化目标量
+        result.setDeepConversionsCostHour(result.getDeepConversionsCountHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getCostHour(), result.getDeepConversionsCountHour()));
+        // 深度转化目标量/可转化点击次数
+        result.setDeepConversionsRateHour(result.getValuableClickCountHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getDeepConversionsCountHour(), result.getValuableClickCountHour()));
+        // 广告花费/下单量
+        result.setWebOrderCostHour(result.getOrderCountHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getCostHour(), result.getOrderCountHour()));
+        // 下单量/点击次数
+        result.setOrderRateHour(result.getValidClickCountHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getOrderCountHour(), result.getValidClickCountHour()));
+        // 下单金额/下单量
+        result.setOrderUnitPriceHour(result.getOrderCountHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getOrderAmountHour(), result.getOrderCountHour()));
+        // 下单金额/广告花费
+        result.setOrderRoiHour(result.getCostHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getOrderAmountHour(), result.getCostHour()));
+        // 广告消耗 / 小游戏注册人数
+        result.setWechatMinigameRegisterCostHour(result.getWechatAppRegisterUvHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getCostHour(), result.getWechatAppRegisterUvHour()));
+        // 小游戏注册人数 / 广告点击次数
+        result.setWechatMinigameRegisterRateHour(result.getValidClickCountHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getWechatAppRegisterUvHour(), result.getValidClickCountHour()));
+        // 总收益 / 总人数
+        result.setWechatMinigameArpuHour(result.getWechatAppRegisterUvHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getOrderAmountHour(), result.getWechatAppRegisterUvHour()));
+        // 关注次数 / 点击次数
+        result.setOfficialAccountFollowRateHour(result.getValidClickCountHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getOfficialAccountFollowCountHour(), result.getValidClickCountHour()));
+        // 公众号内注册人数 / 公众号关注次数
+        result.setOfficialAccountRegisterRateHour(result.getOfficialAccountFollowCountHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getOfficialAccountRegisterUserCountHour(), result.getOfficialAccountFollowCountHour()));
+        // 广告消耗 / 广告注册人数
+        result.setOfficialAccountRegisterCostHour(result.getOfficialAccountRegisterUserCountHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getCostHour(), result.getOfficialAccountRegisterUserCountHour()));
+        // 注册产生的订单金额累计/广告花费
+        result.setOfficialAccountRegisterRoiHour(result.getCostHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getOfficialAccountRegisterAmountHour(), result.getCostHour()));
+        // 公众号内填单的独立用户数/公众号关注次数
+        result.setOfficialAccountApplyRateHour(result.getOfficialAccountFollowCountHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getOfficialAccountApplyUserCountHour(), result.getOfficialAccountFollowCountHour()));
+        // 广告花费/广告产生的填单行为数量
+        result.setOfficialAccountApplyCostHour(result.getOfficialAccountApplyUserCountHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getCostHour(), result.getOfficialAccountApplyUserCountHour()));
+        // 填单产生的订单金额累计/广告花费
+        result.setOfficialAccountApplyRoiHour(result.getCostHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getOfficialAccountApplyAmountHour(), result.getCostHour()));
+        // 公众号内下单独立用户数(UV)/公众号关注次数
+        result.setOfficialAccountOrderRateHour(result.getOfficialAccountFollowCountHour() == 0 ? BigDecimal.ZERO : NumberUtil.divideForAd(result.getOfficialAccountOrderUserCountHour(), result.getOfficialAccountFollowCountHour()));
+        // 广告花费/广告产生的下单行为数量
+        result.setOfficialAccountOrderCostHour(result.getOfficialAccountOrderCountHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getCostHour(), result.getOfficialAccountOrderCountHour()));
+        // 下单产生的订单金额累计/广告花费
+        result.setOfficialAccountOrderRoiHour(result.getCostHour() == 0 ? 0 : NumberUtil.divideForMoney(result.getOfficialAccountOrderAmountHour(), result.getCostHour()));
+
         // 聚合当天的数据
         for (AdDataOfMinuteODS todayODS : todayODSList) {
             result.setCostDeviationRateDay(result.getCostDeviationRateDay().add(todayODS.getCostDeviationRate()));