Я некоторое время играю вокруг с потоком данных/bigquery, но я все еще не могу окунуться в некоторые основные вещи, а именно: , когда использовать определенный тип от метод запрос стол.BigQueryIO.Read Query vs. Jobs: Query
Опция запроса одна линия с BigQueryIO.Read
является:
+ короткий и простой,
+ подходит для больших результатов, которые возвращаются в PCollection,
- но не возвращает новую схему таблицы для результата,
затрудняет экспорт как в (1). CSV-файл (ы) - заголовок таблицы, полей !! и (2) таблица bigquery - нет схемы! Нам нужно вручную определить схему таблицы или заголовок поля-csv каждый раз, когда мы хотим сохранить результаты запроса в таблице bigquery или .csv.
---> Есть ли автоматический способ сделать это элегантно?
Другой вариант запроса - использование Jobs : Query.
Это снова преимущества и недостатки:
+ возвращает схему таблицы результата запроса
- требует проверки подлинности, в конце концов, есть намного больше кодирования для точного простого запроса
-> асинхронных и синхронный режим;
- не подходит для больших результатов, за исключением
в асинхронном режиме с опцией allowLargeResults
, что приводит к несколько запросов в фоновом режиме, которые должны быть составлены, чтобы получить полный список извлекаемых строк (??)
- результаты могут сохраняться в таблице, но только асинхронный запрос может сохранять результаты в постоянной таблице (а не только во временную).
Осталось вопросов:
(1) Какой метод лучше и когда?
(2) Если в таблице мы запрашиваем очень большой объем данных, и мы получаем очень большой результат, какой метод запроса тогда предпочтительнее?
(3) Какой экспорт предпочтительнее при обработке очень больших результатов - таблицы или файла CSV?
, основанный на моем предыдущем вопросе http://stackoverflow.com/questions/34518795/get-tableschema-from-bigquery-result-pcollectiontablerow – user2107356
Я пытаюсь ответить на этот вопрос, но неясно, чего вы на самом деле хотите. Вы спрашиваете о некоторых очень низких проблемах - можете ли вы описать фактическую сквозную обработку данных, которую вы пытаетесь сделать? –
Обратите внимание, что если все, что вы хотите сделать, это сохранить результат запроса, вероятно, вы должны просто использовать асинхронный API BigQuery для запуска запроса, а затем экспортировать CSV в GCS. –