2015-11-18 2 views
0

Мне нужно запросить довольно значительное количество строк (около 4 000 000) из таблицы журналов, чтобы я мог сохранить их в файл CSV. Мой запрос выглядит следующим образом:Запрос больших результатов при сохранении заказа

SELECT 
    time_unixtime 
    field1, 
    field2, 
    field3 
FROM 
    dataset.execute_log20151118 
WHERE 
    field9 = 'unique_id' 
ORDER BY 
    time_unixtime 

Когда я запускаю его с помощью SDK, я встречаю ошибку Resources exceeded during query execution, которая имеет смысл, так как данные, скорее всего, превысит 128 MB compressed limit.
Включение флага allowLargeResults в конфигурацию заданий является естественным решением, но это запрещает запрос для заказа результатов. Конечно, я все еще могу выполнить запрос без ORDER BY, а затем отсортировать результаты локально, но это не похоже на хорошее решение.
Есть ли более эффективный способ сделать это?

+0

Зачем вам сортировать строки? Часто мы обнаруживаем, что пользователи BigQuery, которые хотят сортировать большие объемы данных, могут достичь своей цели по-другому. –

+0

Это требование от клиентов, которые будут использовать CSV-файл. Строки необязательно нужно заказывать, когда я их запрашиваю, но они уже должны быть отсортированы внутри файла CSV. –

ответ

1

Единственная идея, которую я имею, заключается в том, чтобы разбить этот запрос на несколько, поместив фильтр в поле time_unixtime - каждый раз, когда limitig запрашивает подмножество данных, которое может вписываться в ORDER BY. Затем вы получите несколько файлов CSV, каждый из которых упорядочен по времени_университет, и они могут быть объединены в один отсортированный файл.

+0

Благодарим за отзыв, это решение, безусловно, более эффективно и быстро реализуется. Меня беспокоит тот факт, что запрос обрабатывает всю таблицу каждый раз, а это означает, что если бы я запускал ее для каждого часа дня, затраты умножались бы на 24. Затем, Я могу сделать группы большими и умными (группировать периоды времени с небольшими данными), чем это. Я не могу придумать ничего лучше, но, пожалуйста, позвольте мне немного подождать, чтобы увидеть, есть ли у кого-то другая идея, прежде чем я приму это как ответ. –

+1

@ Jean-LoupRoussel-Clouet Mosha - инженер BQ, и часть команды, которая строит BQ. – Pentium10

+0

Я собираюсь скопировать данные на более мелкие таблицы в ближайшее время, надеюсь, это решит проблему с размером. В любом случае, это решение, которое я использую на данный момент, и оно работает нормально. Еще раз спасибо за вашу помощь! –

Смежные вопросы