2015-08-20 37 views
0

我有一個BigQuery資料表,其結構如下給出: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,計數(FILE_ID)作爲計數器FROM [dataset.tablename]通過的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。我使用劃時代長時間戳來查詢)。

SELECT PP,SS,計數(PP)AS計數器FROM(SELECT的file_id如PP,FILE_NAME作爲SS FROM [dataset.tablename]其中error_time_stamp> = 1440076613)由PP爲main_data基,SS ORDER BY計數器DESC LIMIT 1000

現在,file_id 1的預期計數爲1,但仍然得到2.我的查詢出了什麼問題?

+0

'計數(情況下,當err_t_stamp> = ...然後1月底)' –

+1

注意,大紀元時候你寫的不是19: 30 ...無論你是哪一個..你的查詢似乎很好..嘗試讓它像印度建議與計數的情況下.. – Balinti

+0

你的大紀元時間戳評估爲19:17:57,而不是19:30 .. 使用正確的Epoch。 – aadi

回答

1

BigQuery時間戳具有微秒的分辨率,因此您可能會無意中將其與非常小的/早期的時間戳進行比較。

我建議在過濾時使用SEC_TO_TIMESTAMPTIMESTAMP。例如,你可以寫:

WHERE error_time_stamp >= SEC_TO_TIMESTAMP(1440076613) 

或者:

WHERE error_time_stamp >= TIMESTAMP('2015-08-19 19:30:00')