Добрый день! Мне очень нужна помощь.
Задача звучит просто, но как сделать пока не могу найти.
Задача:
Есть задания (tasks), есть логи изменения их состояний (task_logs)
Выглядит это допустим так:
(https://pp.vk.me/c627731/v627731242/1af98/fjBOLKaDeQw.jpg)
Мы видим, что task1 (task_id=1) был 'создан'(created), 'назначен'(assigned) и 'взят в работу'(active) в неделю под номером W43.
А task2 был создан и назначен в W42, в W43 с ним ничего не происходило, поэтому нет ни одной записи за эту неделю о изменении его статуса, а в W44 он был решен и закрыт.
Мне же необходимо построить chart с грануляцией по неделям с информацией сколько же в каждую неделю было незакрытых task-ов(т.е. все задания в статусах не равных 'закрыт'). За W43 у меня есть записи в логах только по одному task-у, но 'незакрытых' task-ов должно посчитаться 2, а не 1.
Каким образом можно это сделать? в оракле я б использовала аналитические функции, а тут мне не хватает знаний.
Огромное спасибо за помощь! очень жду ваших советов
Добрый день. Первое,что приходит в голову
Сначала перестроить таблицу, так чтобы появилось 2 столбца: BEGIN_wk END_wk:
Примерно так:
tmp:
LOAD *,
if(id_task=Previous(id_task) , Previous(week), weekname('01.01.2100') ) as END_wk, weekname(log_updated_at) as BEGIN_wk
from task_logs where status='created' or status='closed'
Order by id_task, log_updated_at desc;
interval_table:
load * resident tmp where status='created';
drop table tmp;
Затем можно это дело привязать к календарю через
Intervalmatch (WEEK_FROM_CALENDAR) load BEGIN_WK ,END_WK resident tmp;
Ну и дальше считать через count distinct