2015-08-20 2 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 и сортировать по убыванию. Я использую запрос:

ВЫБОР file_id, имя_файл, граф (file_id) в качестве счетчика ОТ [dataset.tablename] групп по file_id, имя_файл 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, С., сс, счетчик (рр) КАК счетчик ОТ (SELECT file_id, как С., имя_файла в качестве сс из [dataset.tablename], где error_time_stamp> = 1440076613) А.С. main_data группа по п.п., сс ORDER BY DESC счетчика LIMIT 1000

Теперь ожидаемое количество для file_id 1 равно 1. но все же я получаю 2. Что не так в моем запросе?

+0

'счетчик (случай, когда err_t_stamp> = ... затем 1 конец)' –

+1

Обратите внимание, что время Epoch вы писали не 19: 30 ... независимо от того, какой gmt вы .. Ваш запрос кажется прекрасным .. попробуйте сделать его, как индийский предложил со счетом случае, когда .. – Balinti

+0

Ваша эпоха времени эпохи оценивается быть 19:17:57, а не 19:30 .. . Используйте правильную Эпоху. – aadi

ответ

1

Метки времени BigQuery имеют разрешение в микросекундах, поэтому вы можете непреднамеренно сравнивать с очень маленькой/ранней меткой времени.

Я бы рекомендовал использовать SEC_TO_TIMESTAMP или TIMESTAMP при фильтрации. Например, вы могли бы написать:

WHERE error_time_stamp >= SEC_TO_TIMESTAMP(1440076613) 

Или:

WHERE error_time_stamp >= TIMESTAMP('2015-08-19 19:30:00') 
Смежные вопросы