Вы правы, что это снизит стоимость вместо ссылки на все столбцы в SQL / запросе.Кроме того, когда вы используете from()
вместо fromQuery()
, вы не платите за сканы таблиц в BigQuery.Я не уверен, знали ли вы об этом или нет.
Под капотом всякий раз, когда Dataflow читает из BigQuery, он фактически вызывает свой API экспорта и инструктирует BigQuery выгрузить таблицы (ы) в GCS как осколочные.файлы.Затем Dataflow читает эти файлы параллельно в ваш конвейер.Он не готов "напрямую" из BigQuery.
Как таковой, да, этот может повысить производительность, поскольку объем данных, которые необходимо экспортировать в GCS изнутри и прочитать вваш конвейер будет меньше, т.е. меньше столбцов = меньше данных.
Однако я бы также подумал об использовании секционированных таблиц, а затем даже подумал о их кластеризации.Кроме того, используйте пункты WHERE
, чтобы еще больше сократить объем данных, которые будут экспортироваться и считываться.