В моем улом столе, у меня есть следующие столбцы:SQL: Среднее подсчетов
date, SessionID, url, time_spent
20160901 119 www.hello.com/hehe 10
20160901 121 www.abc.com/xyz 5
20160901 119 www.google.com 12
Мне нужно найти количество адресов на сеанс для всех дат. я пытался что-то на линии
Select sessionid, count(url), sum(time_spent) from my_table where date between '20160901' and '20160905' group by sessionid
... который делает работу за крошечный сроки, но есть миллионы SESSIONID лет в день, и мне нужно, чтобы получить годовые данные, так что этот подход не будет Работа.
Я полагал, среднее представление графов будет работать, так что я попытался это:
select count(sessionid), average(count(url)), avg(sum(time_spent)) from my_table where date between '20160901' and '20160905' group by sessionid;
Но это не удается с
пока не поддерживается место для UDAF 'количество'
Есть ли способ получить среднее количество баллов здесь?
Правильно, но это даст мне среднее количество URL-адресов и время, затрачиваемое на каждый идентификатор сессии. У меня есть миллионы сессионных идентификаторов за день и потенциально миллиарды в год, поэтому я ищу, чтобы получить среднее значение count (url) и сумму (время (потраченное)) для таблицы _whole_ для этого диапазона дат. – Craig
@Craig, Чтобы улей, увеличение количества записей на миллион с каждым днем не так уж много, я думаю. возможно, вам нужно добавить новые машины в ваш кластер hadoop. Если вы хотите получить номер URL всей таблицы. вы можете использовать: 'select count (отдельный url), sum (time_spent), avg (time_spent) from my_table' – aaronshan
@aaronshon Я понимаю. Я сделал подсчет строк, и это составляет около 74 миллиардов долларов за год. Я решил взять случайные образцы вместо – Craig