2017-09-14 300 views
0

我有一个表是这样的:分离的日期和时间的日期时间戳

enter image description here

我需要找到量的总和中说每一秒或分钟间隔。我尝试使用xbar,但我似乎无法从数据中分离日期和时间。

另外我想问一下,我们如何在指定的时间间隔内添加总结账户的命令?

回答

1

你是对的; xbar可用于此分组。总和函数然后可以用于聚合每个创建的组:

select sum Amount by 1 xbar Time.minute from t 

或按时间列组(时间戳是基于整数)。

select sum Amount by Time from t 

详情如下:

如果你的表是这样的:

q})t: ([] Amount:`int$(); Time:`timestamp$()); 
q)show meta t 
c  | t f a 
------| ----- 
Amount| i 
Time | p 

,并使用以下数据:

q)`t insert (10?100;asc .z.p+10?00:10) 
q)show t 
Amount Time 
------------------------------------ 
58  2017.09.14D10:44:48.992850000 
68  2017.09.14D10:44:48.992850000 
45  2017.09.14D10:47:48.992850000 
2  2017.09.14D10:48:48.992850000 
... 

然后你可以使用XBAR到组表每分钟间隔:

q)select sum Amount by 1 xbar Time.minute from t 
minute| Amount 
------| ------ 
10:44 | 126 
10:47 | 45 
10:48 | 41 
10:49 | 113 
... 

或者到组5个分钟的间隔:

q)select sum Amount by 5 xbar Time.minute from t 
minute| Amount 
------| ------ 
10:40 | 126 
10:45 | 199 
10:50 | 210 

或者到组5秒的时间间隔:

q)select sum Amount by 5 xbar Time.second from t 
second | Amount 
--------| ------ 
10:44:45| 126 
10:47:45| 45 
10:48:45| 41 
10:49:45| 113 
... 

在金额栏的值将被相加的每个组。

作为一个侧面说明,你也可以通过在时间列不同的值组:

q)select sum Amount by Time from t 
Time       | Amount 
-----------------------------| ------ 
2017.09.14D10:44:48.992850000| 126 
2017.09.14D10:47:48.992850000| 45 
2017.09.14D10:48:48.992850000| 41 
2017.09.14D10:49:48.992850000| 113 
2017.09.14D10:51:48.992850000| 122 
2017.09.14D10:52:48.992850000| 88 

感谢。