powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Hive. Помогите сделать выборку
12 сообщений из 12, страница 1 из 1
Hive. Помогите сделать выборку
    #39390521
ilyd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бигдата. прошу прощения,если я не в ту тему вопрос создаю .
Есть таблица TABLE , в которой три столбца. выгрузка за сутки.
msisdn ( это номер телефона, строка), starttimesecond ( это время в юникс формате, строка, время ,в которое человек перешел на новую страничку) , app( это хост,строка, там vk.com и ok.com)


то есть для каждого номера телефона есть куча starttimesecond, может быть 30 за минуту, . а в какое-то время, когда не заходил на этот хост- нет. а в общей сложности - выгрузка за сутки.

Нужно посчитать по каждому домену кол-во хитов и уникальных пользователей хотя бы с одним хитом , где хит - это наличие трафика в 15 минутный диапазон.


думаю, нужно смотреть, есть ли хотя бы одна активность за минуту, и такие минуты должны идти подряд. а если их больше 15, то делить на несколько хитов по 15 . Буду безмерно благодарна , если поможете!
...
Рейтинг: 0 / 0
Hive. Помогите сделать выборку
    #39390625
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кластеризация на SQL - занятие неблагодарное... попробуйте такой подход.

Для начала сделайте компрессию таблицы - ужмите её до дискретности в минуту. Создаём временную таблицу той же структуры, с единственным уникальным индексом из всех трёх полей, после чего копируем туда все данные, округляя время до минут, с игнором дубликатов.

Далее постройте запрос, который для отберёт записи, для которых нет записи с теми же телефоном-сайтом, но на 1 минуту меньше. Ну то есть фактически записи начал кластеров. Аналогично постройте запрос получения концов кластеров.

Поскольку исходные данные для этих запросов одинаковы и неизменяемы, количество записей в выборках равно, а при сортировке по группе (телефон-сайт-время) порядковый номер начала периода и конца периода в выходном наборе совпадают. Остаётся, пользуясь знанием этого факта, для каждого периода посчитать его продолжительность и перевести её в хиты (деление с округлением вверх).

Всё.
...
Рейтинг: 0 / 0
Hive. Помогите сделать выборку
    #39390804
ilyd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaКластеризация на SQL - занятие неблагодарное... попробуйте такой подход.

Для начала сделайте компрессию таблицы - ужмите её до дискретности в минуту. Создаём временную таблицу той же структуры, с единственным уникальным индексом из всех трёх полей, после чего копируем туда все данные, округляя время до минут, с игнором дубликатов.

Далее постройте запрос, который для отберёт записи, для которых нет записи с теми же телефоном-сайтом, но на 1 минуту меньше. Ну то есть фактически записи начал кластеров. Аналогично постройте запрос получения концов кластеров.

Поскольку исходные данные для этих запросов одинаковы и неизменяемы, количество записей в выборках равно, а при сортировке по группе (телефон-сайт-время) порядковый номер начала периода и конца периода в выходном наборе совпадают. Остаётся, пользуясь знанием этого факта, для каждого периода посчитать его продолжительность и перевести её в хиты (деление с округлением вверх).

Всё.

Спасибо ОГРОМНОЕ вам за ответ! Алгоритм поняла, отличный!
Постараюсь это все на sql теперь перевести.
Вопрос такой.
Не могли бы вы написать на sql запрос, который отберёт записи, для которых нет записи с теми же телефоном-сайтом, но на 1 минуту меньше. Другие запросы, надеюсь мне под силу будут)
...
Рейтинг: 0 / 0
Hive. Помогите сделать выборку
    #39390812
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilydsql запрос, который отберёт записи, для которых нет записи с теми же телефоном-сайтом, но на 1 минуту меньше.
Код: sql
1.
2.
3.
4.
SELECT t1.*
FROM table t1
LEFT JOIN table t2 ON t1.time = t2.time + INTERVAL 1 minute
WHERE t2.id IS NULL
...
Рейтинг: 0 / 0
Hive. Помогите сделать выборку
    #39390847
ilyd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinailydsql запрос, который отберёт записи, для которых нет записи с теми же телефоном-сайтом, но на 1 минуту меньше.
Код: sql
1.
2.
3.
4.
SELECT t1.*
FROM table t1
LEFT JOIN table t2 ON t1.time = t2.time + INTERVAL 1 minute
WHERE t2.id IS NULL



недавно работаю и туго соображаю (

t1- это какая таблица? исходная?
какие там столбы, если не исходная? просто они сравниваются по времени, а время в разных форматах

t2- это таблица с id, это я поняла по полю.
столбы таблицы t2 - это id ,msisdn , time ( уже переведенное в обычный формат), app
правильно я поняла?

изначально я подумала ,что таблица с идентификатором будет вида :один столбец- идентификатор, второй столбец - склеенные данные с трех столбцов в один столбец
...
Рейтинг: 0 / 0
Hive. Помогите сделать выборку
    #39390850
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t1 и t2 - это две (независимые) копии одной и той же таблицы table. RTFM alias (алиас, псевдоним).
...
Рейтинг: 0 / 0
Hive. Помогите сделать выборку
    #39392838
ilyd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinat1 и t2 - это две (независимые) копии одной и той же таблицы table. RTFM alias (алиас, псевдоним).фууух, пишу и исправляю, ну вообщем
добралась наконец-то до реализации
Код: sql
1.
2.
3.
4.
SELECT t1.*
FROM table t1
LEFT JOIN table t2 ON t1.time = t2.time + INTERVAL 1 minute
WHERE t2.id IS NULL

и пишет

Код: plaintext
ParseException line 3:138 cannot recognize input near 'INTERVAL' '1' 'minute' in expression specification

время у меня в timestamp

как поправить?

кусочек таблички для примера

Код: plaintext
1.
2.
1       2016-11-24 01:10:00     7903078329      ok
2       2016-11-24 01:11:00     7903078329      ok
3       2016-11-24 01:12:00     7903078329      ok
...
Рейтинг: 0 / 0
Hive. Помогите сделать выборку
    #39392906
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форум. в который Вы пишете - это форум по MySQL . Посмотрите, с каким сервером Вы работаете, и сравните его фамилию со словом MySQL побуквенно.
...
Рейтинг: 0 / 0
Hive. Помогите сделать выборку
    #39392999
ilyd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, hive. но насколько я поняла, язык тут sql .
не злитесь, пожалуйста, я бестолочь еще та, но как-то и когда-то надо начинать разбираться. (
Надо искать где-то форум по хайву?
вы не знаете,как ипсравить?
...
Рейтинг: 0 / 0
Hive. Помогите сделать выборку
    #39393033
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL - это канва. А диалектов у того языка аки блох на собаке, и каждый со своими выпендронами.
ilydНадо искать где-то форум по хайву?Ну вообще-то да... или хотя бы явно указывать в вопросе. какой именно диалект (а порой и версия сервера) используется. А для начала надо искать официальную документацию. В частности, по функциям даты-времени это вот тут .

А затем надо строить замену. Номер дня недели придётся получать, наверное, используя форматирование по шаблону (см. тут ). Ну а затем вычитание и минус неделя без дня (ибо понедельник - 1). Т.е. получится нечто вроде

Код: sql
1.
date_sub(current_date, 6+date_format(current_date,'u'))


Ну и учесть необходимые преобразования типов, чтобы не плюсить строки и т.п.

Модератор: Тема перенесена из форума "MySQL".
...
Рейтинг: 0 / 0
Hive. Помогите сделать выборку
    #39393157
ilyd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaSQL - это канва. А диалектов у того языка аки блох на собаке, и каждый со своими выпендронами.
ilydНадо искать где-то форум по хайву?Ну вообще-то да... или хотя бы явно указывать в вопросе. какой именно диалект (а порой и версия сервера) используется. А для начала надо искать официальную документацию. В частности, по функциям даты-времени это вот тут .

А затем надо строить замену. Номер дня недели придётся получать, наверное, используя форматирование по шаблону (см. тут ). Ну а затем вычитание и минус неделя без дня (ибо понедельник - 1). Т.е. получится нечто вроде

Код: sql
1.
date_sub(current_date, 6+date_format(current_date,'u'))


Ну и учесть необходимые преобразования типов, чтобы не плюсить строки и т.п.

.Спасибо за пояснение! я сразу извинилась,если не в ту тему пишу и благодарю вас лично за помощь!
не поняла, почему предлагаете через день недели считать?
у меня выгрузка за сутки, когда человек заходил на хост. Отсортированная до минут. Мне теперь , как вы и советовали, нужно найти первую минуту, для которой в предыдущую минуту нет записи.
а в общем и целом задание- посчитать количество за день сессий по 15 минут, то есть мне надо выделить выделить начало блоков и концы блоков. и посчитать их длину.
...
Рейтинг: 0 / 0
Hive. Помогите сделать выборку
    #39393311
ilyd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем суть.
есть данные на абонентов, когда кто заходил на определенный хост по минутам
отсортированные по хосту, номеру абонента, времени

они в форматеidtimenumberhost1072016-11-24 01:40:007965533976ok1082016-11-24 01:41:007965533976ok1092016-11-24 01:09:007965536541ok1102016-11-24 01:10:007965536541ok1112016-11-24 01:11:007965536541ok1122016-11-24 01:12:007965536541ok
мне нужно найти все начала непрерывных соединений длиной в 4 минуты(блоки) по каждому абоненту .
для этого мне надо найти начала блоков и концы блоков и их длительность.
я ищу начало таких блоков таких путем, где t1 и t2 - копии, время в timestamp
Код: sql
1.
2.
3.
4.
5.
SELECT t1.*
FROM   t1
LEFT JOIN   t2
ON t1.time = from_unixtime(unix_timestamp(t2.time)+60)
WHERE t2.id IS NULL;

находит строки, с которых начались блоки,но не все. видимо смотрит время по всем абонентам, а не по одному
подскажите, плиз, как добавить условие,чтобы считались записи стартов блоков для каждого абонента.

чет пытаюсь вставить условие на num и туда и сюда и никак... Модератор: Не надо плодить темы по одному и тому же вопросу
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Hive. Помогите сделать выборку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]