Ver código fonte

在线日志转样本增加星期相关特征

xueyiming 1 dia atrás
pai
commit
a1892b73c9

+ 12 - 1
src/main/scala/com/aliyun/odps/spark/examples/makedata_ad/v20240718/makedata_ad_33_bucketDataFromOriginToHive_20250522.scala

@@ -81,7 +81,8 @@ object makedata_ad_33_bucketDataFromOriginToHive_20250522 {
       "user_adverid_conver_3d", "user_adverid_conver_7d", "user_adverid_conver_30d",
       "user_skuid_view_3d", "user_skuid_view_7d", "user_skuid_view_30d",
       "user_skuid_click_3d", "user_skuid_click_7d", "user_skuid_click_30d",
-      "user_skuid_conver_3d", "user_skuid_conver_7d", "user_skuid_conver_30d")
+      "user_skuid_conver_3d", "user_skuid_conver_7d", "user_skuid_conver_30d",
+      "is_weekday", "day_of_the_week")
 
 
     // 2 读取odps+表信息
@@ -125,6 +126,14 @@ object makedata_ad_33_bucketDataFromOriginToHive_20250522 {
             .map(record => {
               val featureMap = new JSONObject()
               val ts = record.getString("ts").toInt
+              val instant = Instant.ofEpochSecond(ts)
+              // 设置时区为中国时区
+              val chinaZone = ZoneId.of("Asia/Shanghai")
+              // 将 Instant 对象转换为中国时区的 ZonedDateTime 对象
+              val zonedDateTime = ZonedDateTime.ofInstant(instant, chinaZone)
+              // 获取星期几(1=周一,7=周日)
+              val dayOfTheWeek = zonedDateTime.getDayOfWeek.getValue()
+              val isWeekday = if (dayOfTheWeek <= 5) 1 else 2
               val cid = record.getString("cid")
               val mid = record.getString("mid")
               val pqtid = record.getString("pqtid")
@@ -202,6 +211,8 @@ object makedata_ad_33_bucketDataFromOriginToHive_20250522 {
               if (sceneFeature.containsKey("hour_quarter") && sceneFeature.getString("hour_quarter").nonEmpty) {
                 featureMap.put("hour_quarter", sceneFeature.getString("hour_quarter"))
               }
+              featureMap.put("is_weekday", isWeekday)
+              featureMap.put("day_of_the_week", dayOfTheWeek)
 
               val hour = DateTimeUtil.getHourByTimestamp(ts)
               featureMap.put("hour_" + hour, idDefaultValue)