Есть ли разница в BigQueryIO при использовании fromTable и fromQuery(SELECT *) в потоке данных?

Когда вам нужно прочитать все данные из одной или нескольких таблиц в bigquery в задании потока данных, я бы сказал, что есть два подхода к этому. Первый — использовать BigQueryIO с from, который считывает рассматриваемую таблицу, а второй подход — использовать fromQuery, где вы указываете запрос, считывающий все данные из той же таблицы. Итак, мой вопрос:

  • Есть ли какая-либо выгода в затратах или производительности для использования одного над другим?

Я ничего не нашел в документах по этому поводу, но я действительно хотел бы знать. Я предполагаю, что, возможно, read быстрее, поскольку вам не нужно запускать запрос, который сканирует данные, а это означает, что он больше похож на функцию предварительного просмотра, которую вы имеете в пользовательском интерфейсе BigQuery. Если это правда, это может быть намного дешевле, но имеет смысл, если они оба стоят одинаково.

Итак, в чем разница между:

BigQueryIO.read(...).from(tableName)

И

BigQueryIO.read(...).fromQuery("SELECT * FROM " + tableName)

person Tomas Jansson    schedule 28.01.2018    source источник


Ответы (1)


from дешевле и быстрее, чем fromQuery(SELECT * FROM ...).

  • from напрямую экспортирует таблицу, а экспорт данных для BigQuery бесплатен.
  • fromQuery(SELECT * FROM ...) сначала просканирует всю таблицу ($5/ТБ) и экспортирует результат.
person Jiayuan Ma    schedule 28.01.2018
comment
У вас есть какие-либо документы, на которые можно мне указать, или откуда вы это знаете? - person Tomas Jansson; 29.01.2018
comment
Это в реализации SDK. from соответствует BigQueryTableSource, где он напрямую запускает экспорт. fromQuery соответствует BigQueryQuerySource, где он создает временный набор данных, выполняет запрос, экспортирует и очищает временные ресурсы. - person Jiayuan Ma; 29.01.2018
comment
@JiayuanMa на высоте. read() автоматически вызывает экспорт таблицы в GCS (бесплатно), тогда как readFromQuery() отправляет фактический SQL-запрос к BigQuery, и вы платите за него. - person Graham Polley; 29.01.2018