我一直在解決這個問題一段時間了。基本上我有一組簡單的UserId和TimeStamp數據。我想知道每星期有多少個不同的用戶ID出現,我的星期是在星期六 - 星期六而非星期一 - 星期天測量的,這是Weekofyear()使用的。Trick Weekofyear in Hive by shift the week,for counting
現在,我每星期硬編碼和運行查詢:
SELECT
count(distinct UserId)
FROM data.table
where from_unixtime((CAST(timestamp as BIGINT)))
between TO_DATE("2016-06-05") AND TO_DATE("2016-06-12")
我試圖找到一種方法,時間戳移回天欺騙WEEKOFYEAR以爲我週日實際上是一個星期一,但還沒有成功。我最近的徒勞企圖看起來像:
SELECT
count(distinct UserId), weekofyear(date_sub(from_unixtime(CAST(timestamp as BIGINT)),1))
FROM table.data
where from_unixtime((CAST(timestamp as BIGINT)))
between TO_DATE("2016-06-01") AND TO_DATE("2016-06-30")
group by weekofyear(date_sub(from_unixtime(CAST(timestamp as BIGINT)),1))
這導致相同的數字,如果我沒有減去一天。我不知道爲什麼這不起作用。我覺得應該有一種方法來解決這個問題。現在,如果我想按周收回所有數據,那麼我必須每週手動完成一次,這是不可持續的。有關如何更聰明地工作的任何建議?
謝謝。
我想你想用較低的()向下舍?如果這樣在Hive中不起作用,但我作爲INT進行鑄造,似乎已經完成了這個訣竅!謝謝! –