
agic
04.08.2016
13:01:26

Vadim
04.08.2016
13:01:36
немного холивара, но вдруг найдется аргументация за тестинг
debian - testing или sid? хочется потыкать и вдруг понравится

agic
04.08.2016
13:02:01

Dmitry
04.08.2016
13:02:15
Date C_ID C_SUM AD_SUM
2016-06-06 596269391 2680.4 106
2016-06-06 596269391 2680.4 196.22
2016-06-06 596269391 2680.4 392.99
2016-06-06 596269391 2680.4 1383.98
2016-06-06 596269391 2680.4 106
2016-06-06 596269391 2680.4 389.02

Google

Al
04.08.2016
13:02:19
еще бы категории в хранилище)

agic
04.08.2016
13:02:41

Dmitry
04.08.2016
13:02:47
Вот мне нужно сделать total_sum для C_SUM но так чтобы C_ID не дублировался за дату

agic
04.08.2016
13:03:37
ам..
where C_ID!=C_ID and Date=Date

Al
04.08.2016
13:04:15

Dmitry
04.08.2016
13:04:16
AdWordsSpendStat.objects.using('db').filter(
campaign_id__in=campaigns_ids_array,
date__gte=from_date,
date__lte=to_date).aggregate(
total_cost=Sum("campaign_cost")
)
Но при этом нужно какой то distinct on campaign. Понимаете?
я в django ормке ваяю запросы

agic
04.08.2016
13:04:51
или я туплю

Dmitry
04.08.2016
13:05:14
Т.е брать каждый c_sum только один раз на дату

agic
04.08.2016
13:05:16
ой не )) джанго я только ругать умею (

Dmitry
04.08.2016
13:05:22
я вот хз как сформулироваь даже словами

agic
04.08.2016
13:05:42
у тебя есть c_ID совпадающие за дату

Google

Dmitry
04.08.2016
13:05:51
угу
т.е нужно предагрегат какой то а на нём уже агрегат сделать

agic
04.08.2016
13:06:05
по сути если я правильно понял тебя... выбрать все уникальные C_ID за дату
только надо ли их суммировать
суммы то разные
короче запутал...
хотя да там совпадает суммы
бери уникальное значение за эту дату и считай

Denis
04.08.2016
13:10:49
Тут можно сделать двумя путями:
1) Выбрать уникальные даты и по ним считать сумму
2) Или же выбирать уникальные C_ID (в джанге проще всего сделать через Count) и тогда считать сумму по дате.
В первом случае можно сделать через extra, values, count и sum
Во втором - count и sum

Dmitry
04.08.2016
13:12:40
Хм
Q() и пошли условия да?
медленно получится. Ок а если вынести в отдельные таблицы c_id, c_sum, Т.е сразу собирать сюда, а затем разбрасывать и оттуда читать

Denis
04.08.2016
13:13:44
это ко мне?

Dmitry
04.08.2016
13:13:47
так оптимальнее?
Eue
Угу

agic
04.08.2016
13:15:01
медленно работает workbench
15:24:37 Restoring blala (acc)
а время 1815

Google

agic
04.08.2016
13:15:37
лучше бы скриптом залил

Denis
04.08.2016
13:19:53
Я бы на твоем месте сделал так:
1) Выбрал бы все уникальные даты (extra лучше всего подойдет)
2) Потом через цикл выбрал бы все уникальные C_ID и посчитал сумму для них.
Получается запросов 1 + count date (много запросов).
Это если через ОРМ.
Можно составить чистый sql и там сделать вложеный запрос - это выйдет 1 запрос, но большой - это если не с помощью ORM
И третий вариант - как ты и говоришь. Тогда выборка пройдет быстрее (если поставить индексы) и можно использовать ОРМ с небольшими запросами.
Это все конечно же имхо и не претендует на правильность)

tosh
04.08.2016
13:21:53
Алсо, какая база?

Denis
04.08.2016
13:23:38
@the_tosh Я думаю, человек Dmitry говорит о том, что c_id за одну дату могут быть несколько и могут повторяться, но нужно выбрать уникальные для каждой даты и по уникальным посчитать общую сумму.

tosh
04.08.2016
13:23:56
Но c_sum же у них разные, не?
Хотя в примере одинаковые

Denis
04.08.2016
13:24:21
разные. Пример такой просто.

tosh
04.08.2016
13:24:29
Тогда какой надо выбрать?
Вот за одну и ту же дату, например
c_id 1, c_sum 10
c_id 1, c_sum 20
c_id 1, c_sum 124823479
Ну и вопрос с бэкендом остаётся, т.к. если это постгрес, например, у него есть шикарные window functions

Denis
04.08.2016
13:25:55
Надо выбрать так:
DATE C_ID SUM
2016-06-16 1 12312
2016-06-16 12 33
2016-06-17 1 444
и т.д.
@the_tosh а можешь вкратце рассказать про window functions?

tosh
04.08.2016
13:26:40
Группировка, получается, date-c_id-c_sum?

Denis
04.08.2016
13:27:14
Да.

tosh
04.08.2016
13:28:06
Могу поделиться ссылкой :)
https://www.postgresql.org/docs/current/static/functions-window.html
Но в общих чертах ты с помощью них как раз для каждой группы выбираешь отдельный результат. Например, тут ты можешь сгруппировать данные как тебе нужно и посчитать сумму для них. Для другой группы результат будет другой. И всё это в одном запросе

Denis
04.08.2016
13:28:49
@the_tosh Спасибо.

tosh
04.08.2016
13:28:59
Более того, ты можешь аггрегативно накапливать данные внутри группы

Google

Whore Amazing
04.08.2016
13:29:08
а если чекать код онлайн-линтерами, он никуда не утечет?

tosh
04.08.2016
13:29:46
Например, мы используем wf как раз для этого: у нас по группам сумма растёт для каждой новой записи (где значение = текущее значение поля + значение этого поля из предыдущей строки)

agic
04.08.2016
13:29:59

tosh
04.08.2016
13:30:03

Whore Amazing
04.08.2016
13:30:09
печально

tosh
04.08.2016
13:30:11

agic
04.08.2016
13:30:20

Admin
ERROR: S client not available

agic
04.08.2016
13:30:48
вообще +1 за window func

tosh
04.08.2016
13:32:57
Кстати, в плане утечки, моё почтение авторам scrapy, которые прикрутили хранилище.
Ничего не делают, а данные есть

Bulat
04.08.2016
13:38:54

tosh
04.08.2016
13:45:38
Ну у них есть же
https://scrapinghub.com/scrapy-cloud/
Где можно хранить свои парсеры.
Соответственно, им ничего не мешает использовать их и собирать данные (которые можно толкать, например)

Pavel
04.08.2016
14:08:50
и т.д.
Если примерно Джанго Орм код на кидать, то что-то типа такого
Траляля.all()..group_by((date, c_id)).extra(summ=Sum(c_sum))
?

Denis
04.08.2016
14:11:24
Нет. Получается, что запрос сформируется по одному date и по одному c_id и выберится их сумма, но c_id на одну дату могут быть много ведь и тогда группировка по c_id с датой вместе не сойдет.
Если примерно Джанго Орм код на кидать, то что-то типа такого
Траляля.all()..group_by((date, c_id)).extra(summ=Sum(c_sum))

Pavel
04.08.2016
14:15:00

Aragaer
04.08.2016
14:16:19
а вот я еще по докеру помучаю, можно?

Stanislav
04.08.2016
14:16:52
Нафига вы докер юзаете?

Google

Stanislav
04.08.2016
14:17:12
git же есть

Denis
04.08.2016
14:17:25
Лучше пускай Dmitry объяснит, как ему нужно) Это как я понял его слова - что нужно по каждой уникальной дате выбрать уникальные c_id и посчитать сумму по этой уникальной c_id. В дате может быть много c_id (повторяющихся и нет) и куча сумм для этих c_id

Aragaer
04.08.2016
14:17:26
эээ
между ними есть что-то общее?

Amir
04.08.2016
14:17:35
извените я вот не понял

Denis
04.08.2016
14:17:41

Amir
04.08.2016
14:17:42
а каким образом гит заменяет докер?

parikLS
04.08.2016
14:17:46
смешались кони, люди

Denis
04.08.2016
14:17:58
и печеньки с мухами.

Stanislav
04.08.2016
14:18:08

Amir
04.08.2016
14:18:18
провокация)

Aragaer
04.08.2016
14:18:32
способ запускать приложения в изолированном окружении

tosh
04.08.2016
14:18:47
Ох щаз бы за докер срачик очередной развести

Amir
04.08.2016
14:18:50
в гите код, в докере доставка среды по серверам

Stanislav
04.08.2016
14:18:52
Я залил свой virtualenv с джанго сайтиком в гит

Amir
04.08.2016
14:19:05
ну молодец

Stanislav
04.08.2016
14:19:10
Зашел с компа другого
Написал гит клон
Написал source bin/activate
И все

Aragaer
04.08.2016
14:19:18
короче, есть прога. Просто так запускается. Засунул ее в докер, там не запускается