У меня есть довольно интересная проблема, которая, как я думал, была бы прямолинейной, но оказалось сложнее.Запуск запроса за прошлые диапазоны дат
У меня есть данные, как это:
Date User ID
2012-10-11 a
2012-10-11 b
2012-10-12 c
2012-10-12 d
2012-10-13 e
2012-10-14 b
2012-10-14 e
... ...
Каждая строка имеет дата, идентификатор пользователя пара, которая указывает, что этот пользователь был активен в тот же день. Пользователь может появляться на нескольких датах, а дата будет иметь несколько пользователей - точно так же, как в примере. У меня есть миллионы строк, которые охватывают диапазон времени около 90 дней.
Возникает вопрос: на каждый день я хочу получить число пользователей, которые неактивны в течение последних 10 дней. Например, если пользователь «a» был активен в 2012-05-31, но не был активен ни в один из дней между 06-01 и 06-10, я хочу подсчитать этого пользователя в 6/10. Я не стал бы считать его снова в следующие дни, хотя бы он не стал активным и не исчезнет снова.
Могу ли я сделать это в SQL или мне нужен какой-то скрипт для организации данных так, как я хочу. Какими будут ваши рекомендации? Я использую Hive.
Большое вам спасибо!
Пришли, чтобы добавить +1 для оценки (что вы также делали по предыдущим вопросам). –
Это не так сложно в стандартном SQL, но Hive просто предлагает подмножество функциональных возможностей SQL. Фактически, выражение функциональности в Map-Reduce напрямую было бы немного сложной задачей. –