hIve—timestamp时间戳问题
先查看表
timestamp可以转换为标准的时间(精确到秒);
这个时间格式⽤处很多:
  多个时间可以使⽤函数,来切换。
  每个⽤户产⽣⾏为的时候,⽤timestamp来区分下单先后关系,记录什么时候看过哪些商品;
  ⽐较⼤⼩,⽐如最早订单。。
  select max(`timestampss`) as max_tm,min(`timestampss`)  as min_tm from  user_data;  --``是1前⾯的那个符号,
我们以最近的这个时间为时间参考点:
  hive> select ((cast(893286638 as bigint)-cast(`timestampss` as bigint))/(60*60*24)) as days from user_data limit 10;
hive>select id,collect_list(cast (days as bigint)) as days_list from (select id,
((cast(893286638 as bigint)-cast(`timestampss` as bigint))/(60*60*24)) as days from user_data)t group by id limit 10;
能查看⽤户的⾏为时间点,可以⽤这个数据做⼀个数据清洗的规则
#collect_list,将数据搞成数组的形式。这种情况得出的数据⽤处:在同⼀个时间,多次评论,可能会有刷单的嫌疑。挖掘的意义。
时间衰减的需求:
  ⼀个⽤户有多条⾏为,做⾏为分析的时候,最近的⾏为越有效果(越好)。sum后⾯返回的是⼀个列表。所以需要聚合hive> select user_id,collect_list(cast(days as int)) as day_list
  from
  (
hive 字符串转数组  select user_id,exp(-(cast(893286638 as bigint)-cast(`timestampss` as bigint))/(60*60*24)/2)*rating as days from user_data) t   group by user_id
  limit 10;
  exp正太分布,rating相当于分值。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。