2016-03-21 2 views
0

Я пытаюсь настроить динамический порог для разных пользователей, но только возвращает результат с сегодняшней даты. Я смог вернуть все записи за последние 30 дней, но у меня возникают проблемы с выходом сегодняшней даты на основе расчета за последние 30 дней. Я новичок в языке q и действительно испытываю проблемы с этим простым утверждением :((попробовали и/или заявление, но не выполняется ..) Спасибо за помощь заранее!Q (KDB), выбрав сегодняшнюю дату в диапазоне дат

select user, date, real*110 from table where date >= .z.D - 30, real> (3*(dev;real) fby user)+((avg;real) fby user) 

ответ

2

вы говорите, что вы хотите, чтобы определить, есть ли какой-либо из сегодняшних «реальные» значения больше 3 сигма на основе в течение последних 30 дней? Если это так (не зная о вашей структуре таблицы), я предполагаю, что вы можете использовать что-то вроде этого:

q)t:t,update user:`user2,real+(.0,39#10.0) from t:([] date:.z.D-til 40;user:`user1;real:20.1,10.0+39?.1 .0 -.1); 

q)sigma:{avg[y]+x*dev y}; 

q)select from t where date>=.z.D-30, ({(.z.D=x`date)&x[`real]>sigma[3]exec real from x where date<>.z.D};([]date;real)) fby user 
date  user real 
--------------------- 
2016.03.21 user1 20.1 
Смежные вопросы