我有一个BigQuery表,其结构如下:
file_id | file_name | error_time_stamp
_ _ _ _ _ _| _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _
1 | abcd.txt | 2015-08-19 19:29:22
2 | efgh.txt | 2015-08-19 19:31:25
1 | abcd.txt | 2015-08-19 19:32:20
2 | efgh.txt | 2015-08-19 19:33:40
2 | efgh.txt | 2015-08-19 19:34:36
我想查询此表以查找file_id的唯一计数和降序排序 . 我使用查询:
SELECT file_id,file_name,count(file_id)作为计数器FROM [dataset.tablename] group by file_id,file_name ORDER BY计数器DESC LIMIT 1000
此查询工作正常,并提供如下所需的结果 .
file_id | file_name | counter
_ _ _ _ _ _| _ _ _ _ _ _ _ _ | _ _ _ _ _ _
2 | efgh.txt | 3
1 | abcd.txt | 2
现在我想找到基于error_time_stamp的计数器大于19:30:00(这是时间戳 . 这里给出的日期时间格式只是用于readablitiy . 我使用epoch long timestamp来查询) .
SELECT pp,ss,count(pp)AS counter FROM(SELECT file_id as pp,file_name as ss FROM [dataset.tablename]其中error_time_stamp> = 1440076613)AS main_data group by pp,ss ORDER BY counter DESC LIMIT 1000
现在file_id 1的预期计数是1.但我仍然得到2.我的查询有什么问题?
1 回答
BigQuery时间戳具有微秒级的分辨率,因此您可能无意中与非常小/早期的时间戳进行比较 .
我建议在过滤时使用
SEC_TO_TIMESTAMP
或TIMESTAMP
. 例如,你可以写:要么: