jch 2 months ago
parent
commit
b6ac78ae69

+ 13 - 2
src/main/scala/com/aliyun/odps/spark/examples/makedata_recsys_r_rate/makedata_recsys_81_originData_20250217.scala

@@ -285,6 +285,9 @@ object makedata_recsys_81_originData_20250217 {
               }
             }
 
+            // time
+            val ts = record.getString("ts")
+
             // category
             if (rankVideo.nonEmpty) {
               val attrList = List(FeatureUtils.cate1Attr, FeatureUtils.cate2Attr, FeatureUtils.festive1Attr)
@@ -298,8 +301,16 @@ object makedata_recsys_81_originData_20250217 {
               }
             }
 
-            // time
-            val ts = record.getString("ts")
+            // createTime
+            var createTime = 1D
+            if (null != ts && ts.nonEmpty && rankVideo.containsKey("gmt_create_timestamp")) {
+              val currentMs = ts.toLong * 1000L
+              val createMs = rankVideo.getString("gmt_create_timestamp").toLong
+              createTime = FeatureUtils.getCreateTime(currentMs, createMs)
+            }
+            featureMap.put("createTime", createTime)
+
+            // week & hour
             val calendar = tsToCalendar(ts)
             if (null != calendar) {
               val week = calendar.get(Calendar.DAY_OF_WEEK)

+ 9 - 0
src/main/scala/com/aliyun/odps/spark/examples/myUtils/FeatureUtils.java

@@ -10,6 +10,7 @@ public class FeatureUtils {
     private static final Map<String, Integer> cate1MAP = new HashMap<>();
     private static final Map<String, Integer> cate2MAP = new HashMap<>();
     private static final Map<String, Integer> festive1Map = new HashMap<>();
+    public static final double oneYearMs = 365 * 24 * 3600 * 1000.0;
 
     static {
         cate1MAP.put("情感", 1);
@@ -75,4 +76,12 @@ public class FeatureUtils {
                 return 0;
         }
     }
+
+    public static double getCreateTime(long currentMs, long createMs) {
+        double diff = (currentMs - createMs) / oneYearMs;
+        if (diff > 1.0) {
+            diff = 1.0;
+        }
+        return diff;
+    }
 }