私はこの問題をしばらく解決しています。基本的に私はUserIdとTimeStampを使って簡単なデータセットを持っています。週ごとに表示されるUserIdの個数を知りたいのですが、Weekofyear()が使用するのは月曜日から日曜日ではなく、日曜日から土曜日までの週が計測されます。今、私は毎週ハードコーディングして、クエリを実行している週にシフトすることでHiveのWeekofyearを騙して数えます
:
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))
これは、私が1日を引いたものと同じ数字になります。なぜこれが動作していないのか分かりません。私はこれを管理する方法があるべきであるように感じる。今は、週Xですべてのデータを取得したい場合は、手動で毎週行う必要がありますが、それは持続可能ではありません。どのようによりスマートに作業するための提案?
ありがとうございます。
'形式でタイムスタンプ列を考慮しJan'16 --assumptionの第三これは』?もしそれがハイヴで働いていなかったのですが、私はINTとしてキャストされました。それはトリックを行ったようです!ありがとうございました! –