Browse Source

测试任务

xueyiming 2 months ago
parent
commit
de62df4654

+ 1517 - 0
src/main/scala/com/aliyun/odps/spark/examples/makedata_ad/v20240718/makedata_ad_32_bucket_hive_20240718.scala

@@ -0,0 +1,1517 @@
+package com.aliyun.odps.spark.examples.makedata_ad.v20240718
+
+import com.alibaba.fastjson.JSON
+import com.aliyun.odps.spark.examples.myUtils.ParamUtils
+import org.apache.spark.sql.types.{DoubleType, LongType, StringType, StructField, StructType}
+import org.apache.spark.sql.{Row, SparkSession}
+
+import scala.collection.JavaConversions._
+import scala.collection.mutable.ArrayBuffer
+import scala.io.Source
+
+/*
+
+ */
+
+object makedata_ad_32_bucket_hive_20240718 {
+  def main(args: Array[String]): Unit = {
+
+    val spark = SparkSession
+      .builder()
+      .appName(this.getClass.getName)
+      .getOrCreate()
+    val sc = spark.sparkContext
+
+    // 1 读取参数
+    val param = ParamUtils.parseArgs(args)
+    val readPath = param.getOrElse("readPath", "/dw/recommend/model/31_ad_sample_data/20240620*")
+    val sampleRate = param.getOrElse("sampleRate", "1.0").toDouble
+    val bucketNum = param.getOrElse("bucketNum", "100").toInt
+    val featureNameFile = param.getOrElse("featureNameFile", "20240718_ad_feature_name.txt");
+    val table = param.getOrElse("table", "ad_easyrec_train_data_v1")
+
+    val loader = getClass.getClassLoader
+    val resourceUrl = loader.getResource(featureNameFile)
+    val content =
+      if (resourceUrl != null) {
+        val content = Source.fromURL(resourceUrl).getLines().mkString("\n")
+        Source.fromURL(resourceUrl).close()
+        content
+      } else {
+        ""
+      }
+    println(content)
+    val contentList = content.split("\n")
+      .map(r => r.replace(" ", "").replaceAll("\n", ""))
+      .filter(r => r.nonEmpty).toList
+
+
+    val data = sc.textFile(readPath)
+    println("问题数据数量:" + data.filter(r => r.split("\t").length != 3).count())
+    val data1 = data.map(r => {
+      val rList = r.split("\t")
+      val jsons = JSON.parseObject(rList(2))
+      val doubles = scala.collection.mutable.Map[String, Double]()
+      jsons.foreach(r => {
+        doubles.put(r._1, jsons.getDoubleValue(r._1))
+      })
+      doubles
+    }).sample(false, sampleRate).repartition(20)
+
+    val result = new ArrayBuffer[String]()
+
+    for (i <- contentList.indices) {
+      println("特征:" + contentList(i))
+      val data2 = data1.map(r => r.getOrDefault(contentList(i), 0D)).filter(_ > 1E-8).collect().sorted
+      val len = data2.length
+      if (len == 0) {
+        result.add(contentList(i) + "\t" + bucketNum.toString + "\t" + "0")
+      } else {
+        val oneBucketNum = (len - 1) / (bucketNum - 1) + 1 // 确保每个桶至少有一个元素
+        val buffers = new ArrayBuffer[Double]()
+
+        var lastBucketValue = data2(0) // 记录上一个桶的切分点
+        for (j <- 0 until len by oneBucketNum) {
+          val d = data2(j)
+          if (j > 0 && d != lastBucketValue) {
+            // 如果当前切分点不同于上一个切分点,则保存当前切分点
+            buffers += d
+          }
+          lastBucketValue = d // 更新上一个桶的切分点
+        }
+
+        // 最后一个桶的结束点应该是数组的最后一个元素
+        if (!buffers.contains(data2.last)) {
+          buffers += data2.last
+        }
+        result.add(contentList(i) + "\t" + bucketNum.toString + "\t" + buffers.mkString(","))
+      }
+    }
+
+    val rows = new ArrayBuffer[Row]()
+    // 使用 for 循环遍历
+    for (element <- result) {
+      val map = processString(element)
+      rows.add(Row(
+        map.getOrElse("has_click", null).asInstanceOf[Long],
+        map.getOrElse("has_conversion", null).asInstanceOf[Long],
+        map.getOrElse("as_click", null).asInstanceOf[Double],
+        map.getOrElse("has_conversion", null).asInstanceOf[Double],
+        map.getOrElse("b8_yesterday_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_yesterday_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_yesterday_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_yesterday_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_yesterday_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b8_yesterday_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_yesterday_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_yesterday_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_1h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_1h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_1h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_1h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_1h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_1h_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_1h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_1h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_2h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_2h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_2h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_2h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_2h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_2h_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_2h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_2h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_3h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_3h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_3h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_3h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_3h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_3h_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_3h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_3h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_4h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_4h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_4h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_4h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_4h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_4h_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_4h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_4h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_5h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_5h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_5h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b7_14d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b7_14d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b7_14d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b7_14d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b7_14d_click", null).asInstanceOf[Double],
+        map.getOrElse("b7_14d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b7_14d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("viewall", null).asInstanceOf[Double],
+        map.getOrElse("clickall", null).asInstanceOf[Double],
+        map.getOrElse("converall", null).asInstanceOf[Double],
+        map.getOrElse("incomeall", null).asInstanceOf[Double],
+        map.getOrElse("ctr_all", null).asInstanceOf[Double],
+        map.getOrElse("ctcvr_all", null).asInstanceOf[Double],
+        map.getOrElse("cvr_all", null).asInstanceOf[Double],
+        map.getOrElse("ecpm_all", null).asInstanceOf[Double],
+        map.getOrElse("timediff_view", null).asInstanceOf[Double],
+        map.getOrElse("timediff_click", null).asInstanceOf[Double],
+        map.getOrElse("timediff_conver", null).asInstanceOf[Double],
+        map.getOrElse("actionstatic_view", null).asInstanceOf[Double],
+        map.getOrElse("actionstatic_click", null).asInstanceOf[Double],
+        map.getOrElse("actionstatic_conver", null).asInstanceOf[Double],
+        map.getOrElse("actionstatic_income", null).asInstanceOf[Double],
+        map.getOrElse("actionstatic_ctr", null).asInstanceOf[Double],
+        map.getOrElse("actionstatic_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("actionstatic_cvr", null).asInstanceOf[Double],
+        map.getOrElse("e1_tags_3d_matchnum", null).asInstanceOf[Double],
+        map.getOrElse("e1_tags_3d_maxscore", null).asInstanceOf[Double],
+        map.getOrElse("e1_tags_3d_avgscore", null).asInstanceOf[Double],
+        map.getOrElse("e1_tags_7d_matchnum", null).asInstanceOf[Double],
+        map.getOrElse("e1_tags_7d_maxscore", null).asInstanceOf[Double],
+        map.getOrElse("e1_tags_7d_avgscore", null).asInstanceOf[Double],
+        map.getOrElse("e1_tags_14d_matchnum", null).asInstanceOf[Double],
+        map.getOrElse("e1_tags_14d_maxscore", null).asInstanceOf[Double],
+        map.getOrElse("e1_tags_14d_avgscore", null).asInstanceOf[Double],
+        map.getOrElse("e2_tags_3d_matchnum", null).asInstanceOf[Double],
+        map.getOrElse("e2_tags_3d_maxscore", null).asInstanceOf[Double],
+        map.getOrElse("e2_tags_3d_avgscore", null).asInstanceOf[Double],
+        map.getOrElse("e2_tags_7d_matchnum", null).asInstanceOf[Double],
+        map.getOrElse("e2_tags_7d_maxscore", null).asInstanceOf[Double],
+        map.getOrElse("e2_tags_7d_avgscore", null).asInstanceOf[Double],
+        map.getOrElse("e2_tags_14d_matchnum", null).asInstanceOf[Double],
+        map.getOrElse("e2_tags_14d_maxscore", null).asInstanceOf[Double],
+        map.getOrElse("e2_tags_14d_avgscore", null).asInstanceOf[Double],
+        map.getOrElse("b8_1h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_1h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_1h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b8_1h_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_1h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_1h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_2h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_2h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_2h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_2h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_2h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b8_2h_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_2h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_2h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_3h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_3h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_3h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_3h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_3h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b8_3h_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_3h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_3h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_4h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_4h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_4h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_4h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_4h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b8_4h_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_4h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_4h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_5h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_5h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_5h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_5h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_5h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b8_5h_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_5h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_5h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_6h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_6h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_6h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_6h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_6h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_3d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_3d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_3d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_3d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_3d_click", null).asInstanceOf[Double],
+        map.getOrElse("b4_3d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_3d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_7d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b4_7d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_7d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_7d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_7d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_7d_click", null).asInstanceOf[Double],
+        map.getOrElse("b4_7d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_7d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_today_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b4_today_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_today_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_today_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_today_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_today_click", null).asInstanceOf[Double],
+        map.getOrElse("b4_today_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_today_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_yesterday_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b4_yesterday_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_yesterday_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_yesterday_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_yesterday_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_yesterday_click", null).asInstanceOf[Double],
+        map.getOrElse("b4_yesterday_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_yesterday_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_1h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_1h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_1h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_1h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b5_1h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_1h_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_1h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b5_1h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_2h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_2h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_2h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_2h_conver", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_3h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_3h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_3h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_3h_conver", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_3h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_6h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_6h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_6h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_6h_conver", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_6h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_12h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_12h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_12h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_12h_conver", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_12h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_1d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_1d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_1d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_1d_conver", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_1d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_3d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_3d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_3d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_3d_conver", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_3d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_7d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_7d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_7d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_7d_conver", null).asInstanceOf[Double],
+        map.getOrElse("d1_feature_7d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ctr_1d", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ctr_3d", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ctr_7d", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ctr_14d", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ctcvr_1d", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ctcvr_3d", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ctcvr_7d", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ctcvr_14d", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ecpm_1d", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ecpm_3d", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ecpm_7d", null).asInstanceOf[Double],
+        map.getOrElse("vid_rank_ecpm_14d", null).asInstanceOf[Double],
+        map.getOrElse("ctitle_vtitle_similarity", null).asInstanceOf[Double],
+        map.getOrElse("b5_2h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_2h_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_2h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b5_2h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_3h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_3h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_3h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_3h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b5_3h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_3h_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_3h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b5_3h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_4h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_4h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_4h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_4h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b5_4h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_4h_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_4h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b5_4h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_5h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_5h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_5h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_5h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b5_5h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_5h_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_5h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b5_5h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_6h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_6h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_6h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_6h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b5_6h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_6h_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_6h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b5_6h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_12h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_12h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_12h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_12h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b5_12h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_12h_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_12h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_6h_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_6h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_6h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_12h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_12h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_12h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_12h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_12h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b8_12h_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_12h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_12h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_1d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_1d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_1d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_1d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_1d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b8_1d_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_1d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_1d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_3d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_3d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_3d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_3d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_3d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b8_3d_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_3d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_3d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_7d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_7d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_7d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_7d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_7d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b8_7d_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_7d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_7d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_today_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_today_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_today_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_today_conver", null).asInstanceOf[Double],
+        map.getOrElse("b8_today_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b8_today_click", null).asInstanceOf[Double],
+        map.getOrElse("b8_today_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b8_today_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_today_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_today_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_today_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_yesterday_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_yesterday_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_yesterday_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_yesterday_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_yesterday_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b2_yesterday_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_yesterday_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_yesterday_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_1h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_1h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_1h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_1h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_1h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_1h_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_1h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_1h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_2h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_2h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_2h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_2h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_2h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_2h_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_2h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_2h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_3h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_3h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_3h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_3h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_3h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_3h_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_3h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_3h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_4h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_4h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_4h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_4h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_4h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_4h_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_4h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_4h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_5h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_5h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_5h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_5h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_5h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_5h_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_5h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_5h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_6h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_6h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_6h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_6h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_6h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_6h_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_6h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_6h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_12h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_12h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_12h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_12h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_12h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_12h_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_12h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_12h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_1d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_1d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_1d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_1d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_1d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_1d_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_1d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_1d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_3d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_3d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_3d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_3d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_3d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_3d_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_3d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_3d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_7d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_7d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_7d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_7d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_7d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_7d_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_7d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_7d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_today_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_today_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_today_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_today_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_today_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_today_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_today_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_today_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_yesterday_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b3_yesterday_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_yesterday_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b3_yesterday_conver", null).asInstanceOf[Double],
+        map.getOrElse("b3_yesterday_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b3_yesterday_click", null).asInstanceOf[Double],
+        map.getOrElse("b3_yesterday_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b3_yesterday_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_1h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b4_1h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_1h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_1h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_1h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_1h_click", null).asInstanceOf[Double],
+        map.getOrElse("b4_1h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_1h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_2h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b4_2h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_2h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_2h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_2h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_2h_click", null).asInstanceOf[Double],
+        map.getOrElse("b4_2h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_2h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_3h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b4_3h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_3h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_3h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_3h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_3h_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_7d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_7d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_today_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_today_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_today_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_today_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_today_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_today_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_today_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_today_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_yesterday_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_yesterday_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_yesterday_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_yesterday_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_yesterday_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_yesterday_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_yesterday_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_yesterday_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b6_7d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b6_7d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b6_7d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b6_7d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b6_7d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b6_7d_click", null).asInstanceOf[Double],
+        map.getOrElse("b6_7d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b6_7d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b6_14d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b6_14d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b6_14d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b6_14d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b6_14d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b6_14d_click", null).asInstanceOf[Double],
+        map.getOrElse("b6_14d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b6_14d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b7_7d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b7_7d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b7_7d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b7_7d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b7_7d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b7_7d_click", null).asInstanceOf[Double],
+        map.getOrElse("b7_7d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b7_7d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b7_14d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_12h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_1d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_1d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_1d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_1d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b5_1d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_1d_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_1d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b5_1d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_3d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_3d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_3d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_3d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b5_3d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_3d_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_3d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b5_3d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_7d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_7d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_7d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_7d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b5_7d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_7d_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_7d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b5_7d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_today_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_today_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_today_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_today_conver", null).asInstanceOf[Double],
+        map.getOrElse("b5_today_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_today_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_today_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b5_today_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_yesterday_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b5_yesterday_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_yesterday_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b5_yesterday_conver", null).asInstanceOf[Double],
+        map.getOrElse("b5_yesterday_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b5_yesterday_click", null).asInstanceOf[Double],
+        map.getOrElse("b5_yesterday_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b5_yesterday_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b8_1h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b8_1h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_3h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_3h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_4h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b4_4h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_4h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_4h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_4h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_4h_click", null).asInstanceOf[Double],
+        map.getOrElse("b4_4h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_4h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_5h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b4_5h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_5h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_5h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_5h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_5h_click", null).asInstanceOf[Double],
+        map.getOrElse("b4_5h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_5h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_6h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b4_6h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_6h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_6h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_6h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_6h_click", null).asInstanceOf[Double],
+        map.getOrElse("b4_6h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_6h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_12h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b4_12h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_12h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_12h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_12h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_12h_click", null).asInstanceOf[Double],
+        map.getOrElse("b4_12h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_12h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_1d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b4_1d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_1d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_1d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b4_1d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b4_1d_click", null).asInstanceOf[Double],
+        map.getOrElse("b4_1d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b4_1d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b4_3d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_6h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_6h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_6h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b2_6h_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_6h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_6h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_12h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_12h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_12h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_12h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_12h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b2_12h_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_12h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_12h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_1d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_1d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_1d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_1d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_1d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b2_1d_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_1d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_1d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_3d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_3d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_3d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_3d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_3d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b2_3d_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_3d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_3d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_7d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_7d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_7d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_7d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_7d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b2_7d_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_7d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_7d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_today_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_today_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_today_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_today_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_today_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("cpa", null).asInstanceOf[Double],
+        map.getOrElse("b2_1h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_1h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_1h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_1h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_1h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b2_1h_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_1h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_1h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_2h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_2h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_2h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_2h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_2h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b2_2h_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_2h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_2h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_3h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_3h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_3h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_3h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_3h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b2_3h_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_3h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_3h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_4h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_4h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_4h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_4h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_4h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b2_4h_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_4h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_4h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_5h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_5h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_5h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_5h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b2_5h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b2_5h_click", null).asInstanceOf[Double],
+        map.getOrElse("b2_5h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b2_5h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b2_6h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b2_6h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_5h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_5h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_5h_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_5h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_5h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_6h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_6h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_6h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_6h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_6h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_6h_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_6h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_6h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_12h_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_12h_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_12h_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_12h_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_12h_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_12h_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_12h_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_12h_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_1d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_1d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_1d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_1d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_1d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_1d_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_1d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_1d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_3d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_3d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_3d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_3d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_3d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_3d_click", null).asInstanceOf[Double],
+        map.getOrElse("b9_3d_conver_x_log_view", null).asInstanceOf[Double],
+        map.getOrElse("b9_3d_conver_x_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_7d_ctr", null).asInstanceOf[Double],
+        map.getOrElse("b9_7d_ctcvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_7d_cvr", null).asInstanceOf[Double],
+        map.getOrElse("b9_7d_conver", null).asInstanceOf[Double],
+        map.getOrElse("b9_7d_ecpm", null).asInstanceOf[Double],
+        map.getOrElse("b9_7d_click", null).asInstanceOf[Double],
+        map.getOrElse("weight", null).asInstanceOf[Double],
+        map.getOrElse("dt", "20250101").asInstanceOf[String]
+      ))
+    }
+
+    val schema = StructType(Seq(
+      StructField("has_click", LongType, true),
+      StructField("has_conversion", LongType, true),
+      StructField("b8_yesterday_ctr", DoubleType, true),
+      StructField("b8_yesterday_ctcvr", DoubleType, true),
+      StructField("b8_yesterday_cvr", DoubleType, true),
+      StructField("b8_yesterday_conver", DoubleType, true),
+      StructField("b8_yesterday_ecpm", DoubleType, true),
+      StructField("b8_yesterday_click", DoubleType, true),
+      StructField("b8_yesterday_conver_x_log_view", DoubleType, true),
+      StructField("b8_yesterday_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_1h_ctr", DoubleType, true),
+      StructField("b9_1h_ctcvr", DoubleType, true),
+      StructField("b9_1h_cvr", DoubleType, true),
+      StructField("b9_1h_conver", DoubleType, true),
+      StructField("b9_1h_ecpm", DoubleType, true),
+      StructField("b9_1h_click", DoubleType, true),
+      StructField("b9_1h_conver_x_log_view", DoubleType, true),
+      StructField("b9_1h_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_2h_ctr", DoubleType, true),
+      StructField("b9_2h_ctcvr", DoubleType, true),
+      StructField("b9_2h_cvr", DoubleType, true),
+      StructField("b9_2h_conver", DoubleType, true),
+      StructField("b9_2h_ecpm", DoubleType, true),
+      StructField("b9_2h_click", DoubleType, true),
+      StructField("b9_2h_conver_x_log_view", DoubleType, true),
+      StructField("b9_2h_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_3h_ctr", DoubleType, true),
+      StructField("b9_3h_ctcvr", DoubleType, true),
+      StructField("b9_3h_cvr", DoubleType, true),
+      StructField("b9_3h_conver", DoubleType, true),
+      StructField("b9_3h_ecpm", DoubleType, true),
+      StructField("b9_3h_click", DoubleType, true),
+      StructField("b9_3h_conver_x_log_view", DoubleType, true),
+      StructField("b9_3h_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_4h_ctr", DoubleType, true),
+      StructField("b9_4h_ctcvr", DoubleType, true),
+      StructField("b9_4h_cvr", DoubleType, true),
+      StructField("b9_4h_conver", DoubleType, true),
+      StructField("b9_4h_ecpm", DoubleType, true),
+      StructField("b9_4h_click", DoubleType, true),
+      StructField("b9_4h_conver_x_log_view", DoubleType, true),
+      StructField("b9_4h_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_5h_ctr", DoubleType, true),
+      StructField("b9_5h_ctcvr", DoubleType, true),
+      StructField("b9_5h_cvr", DoubleType, true),
+      StructField("b7_14d_ctcvr", DoubleType, true),
+      StructField("b7_14d_cvr", DoubleType, true),
+      StructField("b7_14d_conver", DoubleType, true),
+      StructField("b7_14d_ecpm", DoubleType, true),
+      StructField("b7_14d_click", DoubleType, true),
+      StructField("b7_14d_conver_x_log_view", DoubleType, true),
+      StructField("b7_14d_conver_x_ctcvr", DoubleType, true),
+      StructField("viewall", DoubleType, true),
+      StructField("clickall", DoubleType, true),
+      StructField("converall", DoubleType, true),
+      StructField("incomeall", DoubleType, true),
+      StructField("ctr_all", DoubleType, true),
+      StructField("ctcvr_all", DoubleType, true),
+      StructField("cvr_all", DoubleType, true),
+      StructField("ecpm_all", DoubleType, true),
+      StructField("timediff_view", DoubleType, true),
+      StructField("timediff_click", DoubleType, true),
+      StructField("timediff_conver", DoubleType, true),
+      StructField("actionstatic_view", DoubleType, true),
+      StructField("actionstatic_click", DoubleType, true),
+      StructField("actionstatic_conver", DoubleType, true),
+      StructField("actionstatic_income", DoubleType, true),
+      StructField("actionstatic_ctr", DoubleType, true),
+      StructField("actionstatic_ctcvr", DoubleType, true),
+      StructField("actionstatic_cvr", DoubleType, true),
+      StructField("e1_tags_3d_matchnum", DoubleType, true),
+      StructField("e1_tags_3d_maxscore", DoubleType, true),
+      StructField("e1_tags_3d_avgscore", DoubleType, true),
+      StructField("e1_tags_7d_matchnum", DoubleType, true),
+      StructField("e1_tags_7d_maxscore", DoubleType, true),
+      StructField("e1_tags_7d_avgscore", DoubleType, true),
+      StructField("e1_tags_14d_matchnum", DoubleType, true),
+      StructField("e1_tags_14d_maxscore", DoubleType, true),
+      StructField("e1_tags_14d_avgscore", DoubleType, true),
+      StructField("e2_tags_3d_matchnum", DoubleType, true),
+      StructField("e2_tags_3d_maxscore", DoubleType, true),
+      StructField("e2_tags_3d_avgscore", DoubleType, true),
+      StructField("e2_tags_7d_matchnum", DoubleType, true),
+      StructField("e2_tags_7d_maxscore", DoubleType, true),
+      StructField("e2_tags_7d_avgscore", DoubleType, true),
+      StructField("e2_tags_14d_matchnum", DoubleType, true),
+      StructField("e2_tags_14d_maxscore", DoubleType, true),
+      StructField("e2_tags_14d_avgscore", DoubleType, true),
+      StructField("b8_1h_cvr", DoubleType, true),
+      StructField("b8_1h_conver", DoubleType, true),
+      StructField("b8_1h_ecpm", DoubleType, true),
+      StructField("b8_1h_click", DoubleType, true),
+      StructField("b8_1h_conver_x_log_view", DoubleType, true),
+      StructField("b8_1h_conver_x_ctcvr", DoubleType, true),
+      StructField("b8_2h_ctr", DoubleType, true),
+      StructField("b8_2h_ctcvr", DoubleType, true),
+      StructField("b8_2h_cvr", DoubleType, true),
+      StructField("b8_2h_conver", DoubleType, true),
+      StructField("b8_2h_ecpm", DoubleType, true),
+      StructField("b8_2h_click", DoubleType, true),
+      StructField("b8_2h_conver_x_log_view", DoubleType, true),
+      StructField("b8_2h_conver_x_ctcvr", DoubleType, true),
+      StructField("b8_3h_ctr", DoubleType, true),
+      StructField("b8_3h_ctcvr", DoubleType, true),
+      StructField("b8_3h_cvr", DoubleType, true),
+      StructField("b8_3h_conver", DoubleType, true),
+      StructField("b8_3h_ecpm", DoubleType, true),
+      StructField("b8_3h_click", DoubleType, true),
+      StructField("b8_3h_conver_x_log_view", DoubleType, true),
+      StructField("b8_3h_conver_x_ctcvr", DoubleType, true),
+      StructField("b8_4h_ctr", DoubleType, true),
+      StructField("b8_4h_ctcvr", DoubleType, true),
+      StructField("b8_4h_cvr", DoubleType, true),
+      StructField("b8_4h_conver", DoubleType, true),
+      StructField("b8_4h_ecpm", DoubleType, true),
+      StructField("b8_4h_click", DoubleType, true),
+      StructField("b8_4h_conver_x_log_view", DoubleType, true),
+      StructField("b8_4h_conver_x_ctcvr", DoubleType, true),
+      StructField("b8_5h_ctr", DoubleType, true),
+      StructField("b8_5h_ctcvr", DoubleType, true),
+      StructField("b8_5h_cvr", DoubleType, true),
+      StructField("b8_5h_conver", DoubleType, true),
+      StructField("b8_5h_ecpm", DoubleType, true),
+      StructField("b8_5h_click", DoubleType, true),
+      StructField("b8_5h_conver_x_log_view", DoubleType, true),
+      StructField("b8_5h_conver_x_ctcvr", DoubleType, true),
+      StructField("b8_6h_ctr", DoubleType, true),
+      StructField("b8_6h_ctcvr", DoubleType, true),
+      StructField("b8_6h_cvr", DoubleType, true),
+      StructField("b8_6h_conver", DoubleType, true),
+      StructField("b8_6h_ecpm", DoubleType, true),
+      StructField("b4_3d_ctcvr", DoubleType, true),
+      StructField("b4_3d_cvr", DoubleType, true),
+      StructField("b4_3d_conver", DoubleType, true),
+      StructField("b4_3d_ecpm", DoubleType, true),
+      StructField("b4_3d_click", DoubleType, true),
+      StructField("b4_3d_conver_x_log_view", DoubleType, true),
+      StructField("b4_3d_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_7d_ctr", DoubleType, true),
+      StructField("b4_7d_ctcvr", DoubleType, true),
+      StructField("b4_7d_cvr", DoubleType, true),
+      StructField("b4_7d_conver", DoubleType, true),
+      StructField("b4_7d_ecpm", DoubleType, true),
+      StructField("b4_7d_click", DoubleType, true),
+      StructField("b4_7d_conver_x_log_view", DoubleType, true),
+      StructField("b4_7d_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_today_ctr", DoubleType, true),
+      StructField("b4_today_ctcvr", DoubleType, true),
+      StructField("b4_today_cvr", DoubleType, true),
+      StructField("b4_today_conver", DoubleType, true),
+      StructField("b4_today_ecpm", DoubleType, true),
+      StructField("b4_today_click", DoubleType, true),
+      StructField("b4_today_conver_x_log_view", DoubleType, true),
+      StructField("b4_today_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_yesterday_ctr", DoubleType, true),
+      StructField("b4_yesterday_ctcvr", DoubleType, true),
+      StructField("b4_yesterday_cvr", DoubleType, true),
+      StructField("b4_yesterday_conver", DoubleType, true),
+      StructField("b4_yesterday_ecpm", DoubleType, true),
+      StructField("b4_yesterday_click", DoubleType, true),
+      StructField("b4_yesterday_conver_x_log_view", DoubleType, true),
+      StructField("b4_yesterday_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_1h_ctr", DoubleType, true),
+      StructField("b5_1h_ctcvr", DoubleType, true),
+      StructField("b5_1h_cvr", DoubleType, true),
+      StructField("b5_1h_conver", DoubleType, true),
+      StructField("b5_1h_ecpm", DoubleType, true),
+      StructField("b5_1h_click", DoubleType, true),
+      StructField("b5_1h_conver_x_log_view", DoubleType, true),
+      StructField("b5_1h_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_2h_ctr", DoubleType, true),
+      StructField("b5_2h_ctcvr", DoubleType, true),
+      StructField("b5_2h_cvr", DoubleType, true),
+      StructField("b5_2h_conver", DoubleType, true),
+      StructField("d1_feature_3h_ctr", DoubleType, true),
+      StructField("d1_feature_3h_ctcvr", DoubleType, true),
+      StructField("d1_feature_3h_cvr", DoubleType, true),
+      StructField("d1_feature_3h_conver", DoubleType, true),
+      StructField("d1_feature_3h_ecpm", DoubleType, true),
+      StructField("d1_feature_6h_ctr", DoubleType, true),
+      StructField("d1_feature_6h_ctcvr", DoubleType, true),
+      StructField("d1_feature_6h_cvr", DoubleType, true),
+      StructField("d1_feature_6h_conver", DoubleType, true),
+      StructField("d1_feature_6h_ecpm", DoubleType, true),
+      StructField("d1_feature_12h_ctr", DoubleType, true),
+      StructField("d1_feature_12h_ctcvr", DoubleType, true),
+      StructField("d1_feature_12h_cvr", DoubleType, true),
+      StructField("d1_feature_12h_conver", DoubleType, true),
+      StructField("d1_feature_12h_ecpm", DoubleType, true),
+      StructField("d1_feature_1d_ctr", DoubleType, true),
+      StructField("d1_feature_1d_ctcvr", DoubleType, true),
+      StructField("d1_feature_1d_cvr", DoubleType, true),
+      StructField("d1_feature_1d_conver", DoubleType, true),
+      StructField("d1_feature_1d_ecpm", DoubleType, true),
+      StructField("d1_feature_3d_ctr", DoubleType, true),
+      StructField("d1_feature_3d_ctcvr", DoubleType, true),
+      StructField("d1_feature_3d_cvr", DoubleType, true),
+      StructField("d1_feature_3d_conver", DoubleType, true),
+      StructField("d1_feature_3d_ecpm", DoubleType, true),
+      StructField("d1_feature_7d_ctr", DoubleType, true),
+      StructField("d1_feature_7d_ctcvr", DoubleType, true),
+      StructField("d1_feature_7d_cvr", DoubleType, true),
+      StructField("d1_feature_7d_conver", DoubleType, true),
+      StructField("d1_feature_7d_ecpm", DoubleType, true),
+      StructField("vid_rank_ctr_1d", DoubleType, true),
+      StructField("vid_rank_ctr_3d", DoubleType, true),
+      StructField("vid_rank_ctr_7d", DoubleType, true),
+      StructField("vid_rank_ctr_14d", DoubleType, true),
+      StructField("vid_rank_ctcvr_1d", DoubleType, true),
+      StructField("vid_rank_ctcvr_3d", DoubleType, true),
+      StructField("vid_rank_ctcvr_7d", DoubleType, true),
+      StructField("vid_rank_ctcvr_14d", DoubleType, true),
+      StructField("vid_rank_ecpm_1d", DoubleType, true),
+      StructField("vid_rank_ecpm_3d", DoubleType, true),
+      StructField("vid_rank_ecpm_7d", DoubleType, true),
+      StructField("vid_rank_ecpm_14d", DoubleType, true),
+      StructField("ctitle_vtitle_similarity", DoubleType, true),
+      StructField("b5_2h_ecpm", DoubleType, true),
+      StructField("b5_2h_click", DoubleType, true),
+      StructField("b5_2h_conver_x_log_view", DoubleType, true),
+      StructField("b5_2h_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_3h_ctr", DoubleType, true),
+      StructField("b5_3h_ctcvr", DoubleType, true),
+      StructField("b5_3h_cvr", DoubleType, true),
+      StructField("b5_3h_conver", DoubleType, true),
+      StructField("b5_3h_ecpm", DoubleType, true),
+      StructField("b5_3h_click", DoubleType, true),
+      StructField("b5_3h_conver_x_log_view", DoubleType, true),
+      StructField("b5_3h_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_4h_ctr", DoubleType, true),
+      StructField("b5_4h_ctcvr", DoubleType, true),
+      StructField("b5_4h_cvr", DoubleType, true),
+      StructField("b5_4h_conver", DoubleType, true),
+      StructField("b5_4h_ecpm", DoubleType, true),
+      StructField("b5_4h_click", DoubleType, true),
+      StructField("b5_4h_conver_x_log_view", DoubleType, true),
+      StructField("b5_4h_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_5h_ctr", DoubleType, true),
+      StructField("b5_5h_ctcvr", DoubleType, true),
+      StructField("b5_5h_cvr", DoubleType, true),
+      StructField("b5_5h_conver", DoubleType, true),
+      StructField("b5_5h_ecpm", DoubleType, true),
+      StructField("b5_5h_click", DoubleType, true),
+      StructField("b5_5h_conver_x_log_view", DoubleType, true),
+      StructField("b5_5h_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_6h_ctr", DoubleType, true),
+      StructField("b5_6h_ctcvr", DoubleType, true),
+      StructField("b5_6h_cvr", DoubleType, true),
+      StructField("b5_6h_conver", DoubleType, true),
+      StructField("b5_6h_ecpm", DoubleType, true),
+      StructField("b5_6h_click", DoubleType, true),
+      StructField("b5_6h_conver_x_log_view", DoubleType, true),
+      StructField("b5_6h_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_12h_ctr", DoubleType, true),
+      StructField("b5_12h_ctcvr", DoubleType, true),
+      StructField("b5_12h_cvr", DoubleType, true),
+      StructField("b5_12h_conver", DoubleType, true),
+      StructField("b5_12h_ecpm", DoubleType, true),
+      StructField("b5_12h_click", DoubleType, true),
+      StructField("b5_12h_conver_x_log_view", DoubleType, true),
+      StructField("b8_6h_click", DoubleType, true),
+      StructField("b8_6h_conver_x_log_view", DoubleType, true),
+      StructField("b8_6h_conver_x_ctcvr", DoubleType, true),
+      StructField("b8_12h_ctr", DoubleType, true),
+      StructField("b8_12h_ctcvr", DoubleType, true),
+      StructField("b8_12h_cvr", DoubleType, true),
+      StructField("b8_12h_conver", DoubleType, true),
+      StructField("b8_12h_ecpm", DoubleType, true),
+      StructField("b8_12h_click", DoubleType, true),
+      StructField("b8_12h_conver_x_log_view", DoubleType, true),
+      StructField("b8_12h_conver_x_ctcvr", DoubleType, true),
+      StructField("b8_1d_ctr", DoubleType, true),
+      StructField("b8_1d_ctcvr", DoubleType, true),
+      StructField("b8_1d_cvr", DoubleType, true),
+      StructField("b8_1d_conver", DoubleType, true),
+      StructField("b8_1d_ecpm", DoubleType, true),
+      StructField("b8_1d_click", DoubleType, true),
+      StructField("b8_1d_conver_x_log_view", DoubleType, true),
+      StructField("b8_1d_conver_x_ctcvr", DoubleType, true),
+      StructField("b8_3d_ctr", DoubleType, true),
+      StructField("b8_3d_ctcvr", DoubleType, true),
+      StructField("b8_3d_cvr", DoubleType, true),
+      StructField("b8_3d_conver", DoubleType, true),
+      StructField("b8_3d_ecpm", DoubleType, true),
+      StructField("b8_3d_click", DoubleType, true),
+      StructField("b8_3d_conver_x_log_view", DoubleType, true),
+      StructField("b8_3d_conver_x_ctcvr", DoubleType, true),
+      StructField("b8_7d_ctr", DoubleType, true),
+      StructField("b8_7d_ctcvr", DoubleType, true),
+      StructField("b8_7d_cvr", DoubleType, true),
+      StructField("b8_7d_conver", DoubleType, true),
+      StructField("b8_7d_ecpm", DoubleType, true),
+      StructField("b8_7d_click", DoubleType, true),
+      StructField("b8_7d_conver_x_log_view", DoubleType, true),
+      StructField("b8_7d_conver_x_ctcvr", DoubleType, true),
+      StructField("b8_today_ctr", DoubleType, true),
+      StructField("b8_today_ctcvr", DoubleType, true),
+      StructField("b8_today_cvr", DoubleType, true),
+      StructField("b8_today_conver", DoubleType, true),
+      StructField("b8_today_ecpm", DoubleType, true),
+      StructField("b8_today_click", DoubleType, true),
+      StructField("b8_today_conver_x_log_view", DoubleType, true),
+      StructField("b8_today_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_today_click", DoubleType, true),
+      StructField("b2_today_conver_x_log_view", DoubleType, true),
+      StructField("b2_today_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_yesterday_ctr", DoubleType, true),
+      StructField("b2_yesterday_ctcvr", DoubleType, true),
+      StructField("b2_yesterday_cvr", DoubleType, true),
+      StructField("b2_yesterday_conver", DoubleType, true),
+      StructField("b2_yesterday_ecpm", DoubleType, true),
+      StructField("b2_yesterday_click", DoubleType, true),
+      StructField("b2_yesterday_conver_x_log_view", DoubleType, true),
+      StructField("b2_yesterday_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_1h_ctr", DoubleType, true),
+      StructField("b3_1h_ctcvr", DoubleType, true),
+      StructField("b3_1h_cvr", DoubleType, true),
+      StructField("b3_1h_conver", DoubleType, true),
+      StructField("b3_1h_ecpm", DoubleType, true),
+      StructField("b3_1h_click", DoubleType, true),
+      StructField("b3_1h_conver_x_log_view", DoubleType, true),
+      StructField("b3_1h_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_2h_ctr", DoubleType, true),
+      StructField("b3_2h_ctcvr", DoubleType, true),
+      StructField("b3_2h_cvr", DoubleType, true),
+      StructField("b3_2h_conver", DoubleType, true),
+      StructField("b3_2h_ecpm", DoubleType, true),
+      StructField("b3_2h_click", DoubleType, true),
+      StructField("b3_2h_conver_x_log_view", DoubleType, true),
+      StructField("b3_2h_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_3h_ctr", DoubleType, true),
+      StructField("b3_3h_ctcvr", DoubleType, true),
+      StructField("b3_3h_cvr", DoubleType, true),
+      StructField("b3_3h_conver", DoubleType, true),
+      StructField("b3_3h_ecpm", DoubleType, true),
+      StructField("b3_3h_click", DoubleType, true),
+      StructField("b3_3h_conver_x_log_view", DoubleType, true),
+      StructField("b3_3h_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_4h_ctr", DoubleType, true),
+      StructField("b3_4h_ctcvr", DoubleType, true),
+      StructField("b3_4h_cvr", DoubleType, true),
+      StructField("b3_4h_conver", DoubleType, true),
+      StructField("b3_4h_ecpm", DoubleType, true),
+      StructField("b3_4h_click", DoubleType, true),
+      StructField("b3_4h_conver_x_log_view", DoubleType, true),
+      StructField("b3_4h_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_5h_ctr", DoubleType, true),
+      StructField("b3_5h_ctcvr", DoubleType, true),
+      StructField("b3_5h_cvr", DoubleType, true),
+      StructField("b3_5h_conver", DoubleType, true),
+      StructField("b3_5h_ecpm", DoubleType, true),
+      StructField("b3_5h_click", DoubleType, true),
+      StructField("b3_5h_conver_x_log_view", DoubleType, true),
+      StructField("b3_5h_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_6h_ctr", DoubleType, true),
+      StructField("b3_6h_ctcvr", DoubleType, true),
+      StructField("b3_6h_cvr", DoubleType, true),
+      StructField("b3_6h_conver", DoubleType, true),
+      StructField("b3_6h_ecpm", DoubleType, true),
+      StructField("b3_6h_click", DoubleType, true),
+      StructField("b3_6h_conver_x_log_view", DoubleType, true),
+      StructField("b3_6h_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_12h_ctr", DoubleType, true),
+      StructField("b3_12h_ctcvr", DoubleType, true),
+      StructField("b3_12h_cvr", DoubleType, true),
+      StructField("b3_12h_conver", DoubleType, true),
+      StructField("b3_12h_ecpm", DoubleType, true),
+      StructField("b3_12h_click", DoubleType, true),
+      StructField("b3_12h_conver_x_log_view", DoubleType, true),
+      StructField("b3_12h_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_1d_ctr", DoubleType, true),
+      StructField("b3_1d_ctcvr", DoubleType, true),
+      StructField("b3_1d_cvr", DoubleType, true),
+      StructField("b3_1d_conver", DoubleType, true),
+      StructField("b3_1d_ecpm", DoubleType, true),
+      StructField("b3_1d_click", DoubleType, true),
+      StructField("b3_1d_conver_x_log_view", DoubleType, true),
+      StructField("b3_1d_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_3d_ctr", DoubleType, true),
+      StructField("b3_3d_ctcvr", DoubleType, true),
+      StructField("b3_3d_cvr", DoubleType, true),
+      StructField("b3_3d_conver", DoubleType, true),
+      StructField("b3_3d_ecpm", DoubleType, true),
+      StructField("b3_3d_click", DoubleType, true),
+      StructField("b3_3d_conver_x_log_view", DoubleType, true),
+      StructField("b3_3d_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_7d_ctr", DoubleType, true),
+      StructField("b3_7d_ctcvr", DoubleType, true),
+      StructField("b3_7d_cvr", DoubleType, true),
+      StructField("b3_7d_conver", DoubleType, true),
+      StructField("b3_7d_ecpm", DoubleType, true),
+      StructField("b3_7d_click", DoubleType, true),
+      StructField("b3_7d_conver_x_log_view", DoubleType, true),
+      StructField("b3_7d_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_today_ctr", DoubleType, true),
+      StructField("b3_today_ctcvr", DoubleType, true),
+      StructField("b3_today_cvr", DoubleType, true),
+      StructField("b3_today_conver", DoubleType, true),
+      StructField("b3_today_ecpm", DoubleType, true),
+      StructField("b3_today_click", DoubleType, true),
+      StructField("b3_today_conver_x_log_view", DoubleType, true),
+      StructField("b3_today_conver_x_ctcvr", DoubleType, true),
+      StructField("b3_yesterday_ctr", DoubleType, true),
+      StructField("b3_yesterday_ctcvr", DoubleType, true),
+      StructField("b3_yesterday_cvr", DoubleType, true),
+      StructField("b3_yesterday_conver", DoubleType, true),
+      StructField("b3_yesterday_ecpm", DoubleType, true),
+      StructField("b3_yesterday_click", DoubleType, true),
+      StructField("b3_yesterday_conver_x_log_view", DoubleType, true),
+      StructField("b3_yesterday_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_1h_ctr", DoubleType, true),
+      StructField("b4_1h_ctcvr", DoubleType, true),
+      StructField("b4_1h_cvr", DoubleType, true),
+      StructField("b4_1h_conver", DoubleType, true),
+      StructField("b4_1h_ecpm", DoubleType, true),
+      StructField("b4_1h_click", DoubleType, true),
+      StructField("b4_1h_conver_x_log_view", DoubleType, true),
+      StructField("b4_1h_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_2h_ctr", DoubleType, true),
+      StructField("b4_2h_ctcvr", DoubleType, true),
+      StructField("b4_2h_cvr", DoubleType, true),
+      StructField("b4_2h_conver", DoubleType, true),
+      StructField("b4_2h_ecpm", DoubleType, true),
+      StructField("b4_2h_click", DoubleType, true),
+      StructField("b4_2h_conver_x_log_view", DoubleType, true),
+      StructField("b4_2h_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_3h_ctr", DoubleType, true),
+      StructField("b4_3h_ctcvr", DoubleType, true),
+      StructField("b4_3h_cvr", DoubleType, true),
+      StructField("b4_3h_conver", DoubleType, true),
+      StructField("b4_3h_ecpm", DoubleType, true),
+      StructField("b4_3h_click", DoubleType, true),
+      StructField("b9_7d_conver_x_log_view", DoubleType, true),
+      StructField("b9_7d_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_today_ctr", DoubleType, true),
+      StructField("b9_today_ctcvr", DoubleType, true),
+      StructField("b9_today_cvr", DoubleType, true),
+      StructField("b9_today_conver", DoubleType, true),
+      StructField("b9_today_ecpm", DoubleType, true),
+      StructField("b9_today_click", DoubleType, true),
+      StructField("b9_today_conver_x_log_view", DoubleType, true),
+      StructField("b9_today_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_yesterday_ctr", DoubleType, true),
+      StructField("b9_yesterday_ctcvr", DoubleType, true),
+      StructField("b9_yesterday_cvr", DoubleType, true),
+      StructField("b9_yesterday_conver", DoubleType, true),
+      StructField("b9_yesterday_ecpm", DoubleType, true),
+      StructField("b9_yesterday_click", DoubleType, true),
+      StructField("b9_yesterday_conver_x_log_view", DoubleType, true),
+      StructField("b9_yesterday_conver_x_ctcvr", DoubleType, true),
+      StructField("b6_7d_ctr", DoubleType, true),
+      StructField("b6_7d_ctcvr", DoubleType, true),
+      StructField("b6_7d_cvr", DoubleType, true),
+      StructField("b6_7d_conver", DoubleType, true),
+      StructField("b6_7d_ecpm", DoubleType, true),
+      StructField("b6_7d_click", DoubleType, true),
+      StructField("b6_7d_conver_x_log_view", DoubleType, true),
+      StructField("b6_7d_conver_x_ctcvr", DoubleType, true),
+      StructField("b6_14d_ctr", DoubleType, true),
+      StructField("b6_14d_ctcvr", DoubleType, true),
+      StructField("b6_14d_cvr", DoubleType, true),
+      StructField("b6_14d_conver", DoubleType, true),
+      StructField("b6_14d_ecpm", DoubleType, true),
+      StructField("b6_14d_click", DoubleType, true),
+      StructField("b6_14d_conver_x_log_view", DoubleType, true),
+      StructField("b6_14d_conver_x_ctcvr", DoubleType, true),
+      StructField("b7_7d_ctr", DoubleType, true),
+      StructField("b7_7d_ctcvr", DoubleType, true),
+      StructField("b7_7d_cvr", DoubleType, true),
+      StructField("b7_7d_conver", DoubleType, true),
+      StructField("b7_7d_ecpm", DoubleType, true),
+      StructField("b7_7d_click", DoubleType, true),
+      StructField("b7_7d_conver_x_log_view", DoubleType, true),
+      StructField("b7_7d_conver_x_ctcvr", DoubleType, true),
+      StructField("b7_14d_ctr", DoubleType, true),
+      StructField("b5_12h_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_1d_ctr", DoubleType, true),
+      StructField("b5_1d_ctcvr", DoubleType, true),
+      StructField("b5_1d_cvr", DoubleType, true),
+      StructField("b5_1d_conver", DoubleType, true),
+      StructField("b5_1d_ecpm", DoubleType, true),
+      StructField("b5_1d_click", DoubleType, true),
+      StructField("b5_1d_conver_x_log_view", DoubleType, true),
+      StructField("b5_1d_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_3d_ctr", DoubleType, true),
+      StructField("b5_3d_ctcvr", DoubleType, true),
+      StructField("b5_3d_cvr", DoubleType, true),
+      StructField("b5_3d_conver", DoubleType, true),
+      StructField("b5_3d_ecpm", DoubleType, true),
+      StructField("b5_3d_click", DoubleType, true),
+      StructField("b5_3d_conver_x_log_view", DoubleType, true),
+      StructField("b5_3d_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_7d_ctr", DoubleType, true),
+      StructField("b5_7d_ctcvr", DoubleType, true),
+      StructField("b5_7d_cvr", DoubleType, true),
+      StructField("b5_7d_conver", DoubleType, true),
+      StructField("b5_7d_ecpm", DoubleType, true),
+      StructField("b5_7d_click", DoubleType, true),
+      StructField("b5_7d_conver_x_log_view", DoubleType, true),
+      StructField("b5_7d_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_today_ctr", DoubleType, true),
+      StructField("b5_today_ctcvr", DoubleType, true),
+      StructField("b5_today_cvr", DoubleType, true),
+      StructField("b5_today_conver", DoubleType, true),
+      StructField("b5_today_ecpm", DoubleType, true),
+      StructField("b5_today_click", DoubleType, true),
+      StructField("b5_today_conver_x_log_view", DoubleType, true),
+      StructField("b5_today_conver_x_ctcvr", DoubleType, true),
+      StructField("b5_yesterday_ctr", DoubleType, true),
+      StructField("b5_yesterday_ctcvr", DoubleType, true),
+      StructField("b5_yesterday_cvr", DoubleType, true),
+      StructField("b5_yesterday_conver", DoubleType, true),
+      StructField("b5_yesterday_ecpm", DoubleType, true),
+      StructField("b5_yesterday_click", DoubleType, true),
+      StructField("b5_yesterday_conver_x_log_view", DoubleType, true),
+      StructField("b5_yesterday_conver_x_ctcvr", DoubleType, true),
+      StructField("b8_1h_ctr", DoubleType, true),
+      StructField("b8_1h_ctcvr", DoubleType, true),
+      StructField("b4_3h_conver_x_log_view", DoubleType, true),
+      StructField("b4_3h_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_4h_ctr", DoubleType, true),
+      StructField("b4_4h_ctcvr", DoubleType, true),
+      StructField("b4_4h_cvr", DoubleType, true),
+      StructField("b4_4h_conver", DoubleType, true),
+      StructField("b4_4h_ecpm", DoubleType, true),
+      StructField("b4_4h_click", DoubleType, true),
+      StructField("b4_4h_conver_x_log_view", DoubleType, true),
+      StructField("b4_4h_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_5h_ctr", DoubleType, true),
+      StructField("b4_5h_ctcvr", DoubleType, true),
+      StructField("b4_5h_cvr", DoubleType, true),
+      StructField("b4_5h_conver", DoubleType, true),
+      StructField("b4_5h_ecpm", DoubleType, true),
+      StructField("b4_5h_click", DoubleType, true),
+      StructField("b4_5h_conver_x_log_view", DoubleType, true),
+      StructField("b4_5h_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_6h_ctr", DoubleType, true),
+      StructField("b4_6h_ctcvr", DoubleType, true),
+      StructField("b4_6h_cvr", DoubleType, true),
+      StructField("b4_6h_conver", DoubleType, true),
+      StructField("b4_6h_ecpm", DoubleType, true),
+      StructField("b4_6h_click", DoubleType, true),
+      StructField("b4_6h_conver_x_log_view", DoubleType, true),
+      StructField("b4_6h_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_12h_ctr", DoubleType, true),
+      StructField("b4_12h_ctcvr", DoubleType, true),
+      StructField("b4_12h_cvr", DoubleType, true),
+      StructField("b4_12h_conver", DoubleType, true),
+      StructField("b4_12h_ecpm", DoubleType, true),
+      StructField("b4_12h_click", DoubleType, true),
+      StructField("b4_12h_conver_x_log_view", DoubleType, true),
+      StructField("b4_12h_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_1d_ctr", DoubleType, true),
+      StructField("b4_1d_ctcvr", DoubleType, true),
+      StructField("b4_1d_cvr", DoubleType, true),
+      StructField("b4_1d_conver", DoubleType, true),
+      StructField("b4_1d_ecpm", DoubleType, true),
+      StructField("b4_1d_click", DoubleType, true),
+      StructField("b4_1d_conver_x_log_view", DoubleType, true),
+      StructField("b4_1d_conver_x_ctcvr", DoubleType, true),
+      StructField("b4_3d_ctr", DoubleType, true),
+      StructField("b2_6h_cvr", DoubleType, true),
+      StructField("b2_6h_conver", DoubleType, true),
+      StructField("b2_6h_ecpm", DoubleType, true),
+      StructField("b2_6h_click", DoubleType, true),
+      StructField("b2_6h_conver_x_log_view", DoubleType, true),
+      StructField("b2_6h_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_12h_ctr", DoubleType, true),
+      StructField("b2_12h_ctcvr", DoubleType, true),
+      StructField("b2_12h_cvr", DoubleType, true),
+      StructField("b2_12h_conver", DoubleType, true),
+      StructField("b2_12h_ecpm", DoubleType, true),
+      StructField("b2_12h_click", DoubleType, true),
+      StructField("b2_12h_conver_x_log_view", DoubleType, true),
+      StructField("b2_12h_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_1d_ctr", DoubleType, true),
+      StructField("b2_1d_ctcvr", DoubleType, true),
+      StructField("b2_1d_cvr", DoubleType, true),
+      StructField("b2_1d_conver", DoubleType, true),
+      StructField("b2_1d_ecpm", DoubleType, true),
+      StructField("b2_1d_click", DoubleType, true),
+      StructField("b2_1d_conver_x_log_view", DoubleType, true),
+      StructField("b2_1d_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_3d_ctr", DoubleType, true),
+      StructField("b2_3d_ctcvr", DoubleType, true),
+      StructField("b2_3d_cvr", DoubleType, true),
+      StructField("b2_3d_conver", DoubleType, true),
+      StructField("b2_3d_ecpm", DoubleType, true),
+      StructField("b2_3d_click", DoubleType, true),
+      StructField("b2_3d_conver_x_log_view", DoubleType, true),
+      StructField("b2_3d_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_7d_ctr", DoubleType, true),
+      StructField("b2_7d_ctcvr", DoubleType, true),
+      StructField("b2_7d_cvr", DoubleType, true),
+      StructField("b2_7d_conver", DoubleType, true),
+      StructField("b2_7d_ecpm", DoubleType, true),
+      StructField("b2_7d_click", DoubleType, true),
+      StructField("b2_7d_conver_x_log_view", DoubleType, true),
+      StructField("b2_7d_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_today_ctr", DoubleType, true),
+      StructField("b2_today_ctcvr", DoubleType, true),
+      StructField("b2_today_cvr", DoubleType, true),
+      StructField("b2_today_conver", DoubleType, true),
+      StructField("b2_today_ecpm", DoubleType, true),
+      StructField("cpa", DoubleType, true),
+      StructField("b2_1h_ctr", DoubleType, true),
+      StructField("b2_1h_ctcvr", DoubleType, true),
+      StructField("b2_1h_cvr", DoubleType, true),
+      StructField("b2_1h_conver", DoubleType, true),
+      StructField("b2_1h_ecpm", DoubleType, true),
+      StructField("b2_1h_click", DoubleType, true),
+      StructField("b2_1h_conver_x_log_view", DoubleType, true),
+      StructField("b2_1h_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_2h_ctr", DoubleType, true),
+      StructField("b2_2h_ctcvr", DoubleType, true),
+      StructField("b2_2h_cvr", DoubleType, true),
+      StructField("b2_2h_conver", DoubleType, true),
+      StructField("b2_2h_ecpm", DoubleType, true),
+      StructField("b2_2h_click", DoubleType, true),
+      StructField("b2_2h_conver_x_log_view", DoubleType, true),
+      StructField("b2_2h_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_3h_ctr", DoubleType, true),
+      StructField("b2_3h_ctcvr", DoubleType, true),
+      StructField("b2_3h_cvr", DoubleType, true),
+      StructField("b2_3h_conver", DoubleType, true),
+      StructField("b2_3h_ecpm", DoubleType, true),
+      StructField("b2_3h_click", DoubleType, true),
+      StructField("b2_3h_conver_x_log_view", DoubleType, true),
+      StructField("b2_3h_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_4h_ctr", DoubleType, true),
+      StructField("b2_4h_ctcvr", DoubleType, true),
+      StructField("b2_4h_cvr", DoubleType, true),
+      StructField("b2_4h_conver", DoubleType, true),
+      StructField("b2_4h_ecpm", DoubleType, true),
+      StructField("b2_4h_click", DoubleType, true),
+      StructField("b2_4h_conver_x_log_view", DoubleType, true),
+      StructField("b2_4h_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_5h_ctr", DoubleType, true),
+      StructField("b2_5h_ctcvr", DoubleType, true),
+      StructField("b2_5h_cvr", DoubleType, true),
+      StructField("b2_5h_conver", DoubleType, true),
+      StructField("b2_5h_ecpm", DoubleType, true),
+      StructField("b2_5h_click", DoubleType, true),
+      StructField("b2_5h_conver_x_log_view", DoubleType, true),
+      StructField("b2_5h_conver_x_ctcvr", DoubleType, true),
+      StructField("b2_6h_ctr", DoubleType, true),
+      StructField("b2_6h_ctcvr", DoubleType, true),
+      StructField("b9_5h_conver", DoubleType, true),
+      StructField("b9_5h_ecpm", DoubleType, true),
+      StructField("b9_5h_click", DoubleType, true),
+      StructField("b9_5h_conver_x_log_view", DoubleType, true),
+      StructField("b9_5h_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_6h_ctr", DoubleType, true),
+      StructField("b9_6h_ctcvr", DoubleType, true),
+      StructField("b9_6h_cvr", DoubleType, true),
+      StructField("b9_6h_conver", DoubleType, true),
+      StructField("b9_6h_ecpm", DoubleType, true),
+      StructField("b9_6h_click", DoubleType, true),
+      StructField("b9_6h_conver_x_log_view", DoubleType, true),
+      StructField("b9_6h_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_12h_ctr", DoubleType, true),
+      StructField("b9_12h_ctcvr", DoubleType, true),
+      StructField("b9_12h_cvr", DoubleType, true),
+      StructField("b9_12h_conver", DoubleType, true),
+      StructField("b9_12h_ecpm", DoubleType, true),
+      StructField("b9_12h_click", DoubleType, true),
+      StructField("b9_12h_conver_x_log_view", DoubleType, true),
+      StructField("b9_12h_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_1d_ctr", DoubleType, true),
+      StructField("b9_1d_ctcvr", DoubleType, true),
+      StructField("b9_1d_cvr", DoubleType, true),
+      StructField("b9_1d_conver", DoubleType, true),
+      StructField("b9_1d_ecpm", DoubleType, true),
+      StructField("b9_1d_click", DoubleType, true),
+      StructField("b9_1d_conver_x_log_view", DoubleType, true),
+      StructField("b9_1d_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_3d_ctr", DoubleType, true),
+      StructField("b9_3d_ctcvr", DoubleType, true),
+      StructField("b9_3d_cvr", DoubleType, true),
+      StructField("b9_3d_conver", DoubleType, true),
+      StructField("b9_3d_ecpm", DoubleType, true),
+      StructField("b9_3d_click", DoubleType, true),
+      StructField("b9_3d_conver_x_log_view", DoubleType, true),
+      StructField("b9_3d_conver_x_ctcvr", DoubleType, true),
+      StructField("b9_7d_ctr", DoubleType, true),
+      StructField("b9_7d_ctcvr", DoubleType, true),
+      StructField("b9_7d_cvr", DoubleType, true),
+      StructField("b9_7d_conver", DoubleType, true),
+      StructField("b9_7d_ecpm", DoubleType, true),
+      StructField("b9_7d_click", DoubleType, true),
+      StructField("weight", DoubleType, true),
+      StructField("dt", StringType, true)
+    ))
+
+
+    // 创建 DataFrame
+    val df = spark.createDataFrame(spark.sparkContext.parallelize(rows), schema)
+    df.write.mode("append").saveAsTable(table)
+  }
+
+
+  private def processString(input: String): Map[String, Any] = {
+    // 去除多余空格并按空格分割成键值对数组
+    val parts = input.trim.split("\\s+")
+    var resultMap = Map[String, Any]()
+    // 处理第一个元素,假设为特殊标识
+    resultMap += ("has_conversion" -> parts(0))
+    // 处理后续的键值对
+    parts.drop(1).foreach { part =>
+      part.split(":", 2) match {
+        case Array(keyStr, valueStr) =>
+          val key = keyStr.replace("*", "_x_").replace("(view)", "_view")
+          val value = try {
+            valueStr.toDouble
+          } catch {
+            case _: NumberFormatException => valueStr
+          }
+          resultMap += (key -> value)
+        case _ => // 若无法解析成键值对则丢弃
+      }
+    }
+    resultMap
+  }
+}