hIve—timestamp時間戳問題


先查看表

timestamp可以轉換為標准的時間(精確到秒); https://tool.lu/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
  (
  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相當於分值。

  

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM