- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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()
不可见。谁能帮我这个?这种方法正确吗?或者还有其他方法可以做同样的事情吗?
最佳答案
您需要对 Job
对象调用 getQueryResults()
。这将返回一个 TableResult
对象。然后,您可以调用 getSchema() 来获取查询/表/作业的架构。所以,把它们放在一起:
QueryJobConfiguration queryConfig =
QueryJobConfiguration.newBuilder(
"SELECT "
+ "CONCAT('https://stackoverflow.com/questions/', CAST(id as STRING)) as url, "
+ "view_count "
+ "FROM `bigquery-public-data.stackoverflow.posts_questions` "
+ "WHERE tags like '%google-bigquery%' "
+ "ORDER BY favorite_count DESC LIMIT 10")
.setUseLegacySql(false)
.build();
JobId jobId = JobId.of(UUID.randomUUID().toString());
Job queryJob = BIGQUERY.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build());
queryJob = queryJob.waitFor();
TableResult result = queryJob.getQueryResults(); //<--you need this
Schema schema = result.getSchema(); //<--..and this
System.out.println(schema);
其产量:
Connected to the target VM, address: '127.0.0.1:64695', transport: 'socket'
Schema{fields=[Field{name=url, type=STRING, mode=NULLABLE, description=null}, Field{name=view_count, type=INTEGER, mode=NULLABLE, description=null}]}
关于java - 在从 Java 应用程序调用 getQueryResults 方法时,如何从 QueryResponse 访问架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53869770/
我正在使用 google.cloud.bigquery 库使用 bigquery.query() 方法执行和创建查询。我想从响应中获取 Schema 详细信息,但每当查询没有返回结果时,我都会得到 E
在我的 Fabric Golang 链代码上,我需要找到一个对象列表,然后循环并在分类帐上的其他对象上调用 getState()。它适用于 GetStateByRange(),但不适用于 GetQue
契约(Contract)代码: async function queryCar(ctx, query) { let queryResult = await.ctx.stub.getQu
我一直在尝试从我的 lambda 函数 (Python3.8) 查询 Athena,但我一直收到相同的错误,尽管我尝试添加 if else 语句来检查执行状态,但我在 aws 控制台上总是出现相同的错
我正在尝试通过 Apps 脚本从 BigQuery 中提取地理数据,但我的脚本因上述错误消息而失败。 function runQuery() { // Replace this value wit
我是一名优秀的程序员,十分优秀!