Вопрос: Hive. Помогите сделать выборку
бигдата. прошу прощения,если я не в ту тему вопрос создаю .
Есть таблица TABLE , в которой три столбца. выгрузка за сутки.
msisdn ( это номер телефона, строка), starttimesecond ( это время в юникс формате, строка, время ,в которое человек перешел на новую страничку) , app( это хост,строка, там vk.com и ok.com)
то есть для каждого номера телефона есть куча starttimesecond, может быть 30 за минуту, . а в какое-то время, когда не заходил на этот хост- нет. а в общей сложности - выгрузка за сутки.
Нужно посчитать по каждому домену кол-во хитов и уникальных пользователей хотя бы с одним хитом , где хит - это наличие трафика в 15 минутный диапазон.
думаю, нужно смотреть, есть ли хотя бы одна активность за минуту, и такие минуты должны идти подряд. а если их больше 15, то делить на несколько хитов по 15 . Буду безмерно благодарна , если поможете!
Ответ:
В чем суть.
есть данные на абонентов, когда кто заходил на определенный хост по минутам
отсортированные по хосту, номеру абонента, времени
они в формате
id | time | number | host | 107 | 2016-11-24 01:40:00 | 7965533976 | ok | 108 | 2016-11-24 01:41:00 | 7965533976 | ok | 109 | 2016-11-24 01:09:00 | 7965536541 | ok | 110 | 2016-11-24 01:10:00 | 7965536541 | ok | 111 | 2016-11-24 01:11:00 | 7965536541 | ok | 112 | 2016-11-24 01:12:00 | 7965536541 | ok |
|
мне нужно найти все начала непрерывных соединений длиной в 4 минуты(блоки) по каждому абоненту .
для этого мне надо найти начала блоков и концы блоков и их длительность.
я ищу начало таких блоков таких путем, где t1 и t2 - копии, время в timestamp
SELECT t1.*
FROM t1
LEFT JOIN t2
ON t1.time = from_unixtime(unix_timestamp(t2.time)+60)
WHERE t2.id IS NULL;
находит строки, с которых начались блоки,но не все. видимо смотрит время по всем абонентам, а не по одному
подскажите, плиз, как добавить условие,чтобы считались записи стартов блоков для каждого абонента.
чет пытаюсь вставить условие на num и туда и сюда и никак...
Модератор: Не надо плодить темы по одному и тому же вопросу |