Я использую библиотеку google.cloud.bigquery для выполнения и создания запроса методом bigquery.query()
.Я хочу получить Schema
подробности из ответа, но всякий раз, когда запрос не возвращает результата, я получаю EmptyTableResult
вместо ответа, который должен содержать Schema
и поля, перечисленные в нем.Я использовал другой подход, который создает задание, а затем, используя задание запроса, я вызываю bigquery.getQueryResults
, который должен вернуть QueryResponse
объект.Ниже приведен фрагмент кода.
QueryJobConfiguration queryConfig =
QueryJobConfiguration.newBuilder(queryString)
.setDefaultDataset(bqDatasetId).setUseLegacySql(false)
.setFlattenResults(true).build();
JobId jobId = JobId.of(UUID.randomUUID().toString());
Job queryJob = bigQuery.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build());
// Wait for the query to complete.
queryJob = queryJob.waitFor();
// Check for errors
if (queryJob == null) {
throw new RuntimeException("Job no longer exists");
} else if (queryJob.getStatus().getError() != null) {
throw new RuntimeException(queryJob.getStatus().getError().toString());
}
// Get the results.
QueryResponse response = bigQuery.getQueryResults(queryJob.getJobId());
System.out.println(response);
Здесь, в операторе sysout
, я получаю правильный ответ, но всякий раз, когда я пытаюсь использовать response.getSchema()
, он выдает ошибку компиляции, говорящую getSchema()
не видноКто-нибудь может мне с этим помочь?Является ли этот подход правильным или есть другой подход, который может сделать то же самое?