Q (KDB) 在日期范围内选择今天的日期
Q (KDB) selecting today's date within date range
我正在尝试设置不同用户的动态阈值,但只有 return 今天的结果。我能够 return 过去 30 天的所有记录,但我无法根据过去 30 天的计算结果只输出今天的日期。我是 q 语言的新手,这个简单的问题真的很麻烦语句 :((已尝试 and/or 语句但未执行..)提前感谢您的所有帮助!
select user, date, real*110 from table where date >= .z.D - 30, real> (3*(dev;real) fby user)+((avg;real) fby user)
您是说要根据过去 30 天确定今天的 "real" 值是否大于 3 西格玛?如果是这样(在不太了解你的 table 结构的情况下)我猜你可以使用这样的东西:
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
我正在尝试设置不同用户的动态阈值,但只有 return 今天的结果。我能够 return 过去 30 天的所有记录,但我无法根据过去 30 天的计算结果只输出今天的日期。我是 q 语言的新手,这个简单的问题真的很麻烦语句 :((已尝试 and/or 语句但未执行..)提前感谢您的所有帮助!
select user, date, real*110 from table where date >= .z.D - 30, real> (3*(dev;real) fby user)+((avg;real) fby user)
您是说要根据过去 30 天确定今天的 "real" 值是否大于 3 西格玛?如果是这样(在不太了解你的 table 结构的情况下)我猜你可以使用这样的东西:
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