Как использовать стандартный SQL BigQuery в потоке данных?

Я хотел бы выполнить простой запрос, используя стандартный SQL BigQuery в dataflow, но я не могу найти, где включить эту опцию. Как я могу это сделать?

pipeline.apply(Read.named(metricName + " Read").fromQuery("select * from table1 UNION DISTINCT select * from table2"));

Когда я пытаюсь запустить его, я получаю сообщение об ошибке:

2016-07-20T13:35:22.543Z: Error:   (6e0ad847af078af9): Workflow failed. Causes: (fe6c7bcb1a35a057): S01:warehouse_handled_returns Read/DataflowPipelineRunner.BatchBigQueryIONativeRead+ParMultiDo(FormatData)+warehouse_handled_returns Write/DataflowPipelineRunner.BatchBigQueryIOWrite/DataflowPipelineRunner.BatchBigQueryIONativeWrite failed., (7f29f1d9435d27bc): BigQuery execution failed., (7f29f1d9435d2823): Error:
Message: Encountered "" at line 23, column 27.

HTTP Code: 400

person Henrique Martins    schedule 20.07.2016    source источник
comment
Это не поддерживается текущей версией BigQueryIO.   -  person Tudor Marian    schedule 20.07.2016


Ответы (3)


Теперь вы можете использовать стандартный SQL с Dataflow.

https://cloud.google.com/dataflow/model/bigquery-io

PCollection<TableRow> weatherData = p.apply(
BigQueryIO.Read
.named("ReadYearAndTemp")
.fromQuery("SELECT year, mean_temp FROM `samples.weather_stations`")
.usingStandardSql();
person Graham Polley    schedule 16.12.2016
comment
К вашему сведению, это устарело. Теперь поток данных основан на модели программирования Apache Beam cloud.google.com/ поток данных / документы / концепции / модель программирования-луча - person Kim Merino; 01.09.2020

Пока DataFlow формально не поддерживает BigQuery Standard SQL, можно обойти проблему, начав запрос со следующего комментария:

#StandardSQL

Это укажет BigQuery использовать стандартный SQL вместо устаревшего SQL.

person Mosha Pasumansky    schedule 21.09.2016
comment
Я пробовал это, но получил следующую ошибку - com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request { "code" : 400, "errors" : [ { "domain" : "global", "message" : "Query text specifies use_legacy_sql:false, while API options specify:true", "reason" : "invalid" } ], "message" : "Query text specifies use_legacy_sql:false, while API options specify:true" } - person Graham Polley; 16.12.2016

Dataflow SDK для Java поддерживает стандартный диалект SQL BigQuery, начиная с версии 1.8.0.

person Dan Halperin    schedule 21.07.2016
comment
Теперь поддерживается стандартный SQL. - person Graham Polley; 16.12.2016