Bigquery API 的查询结果中的架构不完整
Posted
技术标签:
【中文标题】Bigquery API 的查询结果中的架构不完整【英文标题】:Incomplete schema in query result from Bigquery API 【发布时间】:2016-05-20 23:10:10 【问题描述】:当使用 Jobs.query 通过 API 查询 Bigquery 表(简单的 SELECT * from [...]
)时,我将其作为架构返回:
"schema":
"fields": [
"name": "all",
"type": "INTEGER",
"mode": "NULLABLE"
,
"name": "timestamp",
"type": "TIMESTAMP",
"mode": "NULLABLE"
,
"name": "last_timestamp",
"type": "TIMESTAMP",
"mode": "NULLABLE"
,
"name": "unique",
"type": "INTEGER",
"mode": "NULLABLE"
,...
但实际的架构(Tables.get 正确返回)是:
"schema":
"fields": [
"name": "all",
"type": "INTEGER",
"mode": "REQUIRED",
"description": "All searches"
,
"name": "timestamp",
"type": "TIMESTAMP",
"mode": "REQUIRED",
"description": "Time of processing"
,
"name": "last_timestamp",
"type": "TIMESTAMP",
"mode": "REQUIRED",
"description": "Last event"
,
"name": "unique",
"type": "INTEGER",
"mode": "REQUIRED",
"description": "Unique users"
,
我在填充电子表格的应用脚本中使用查询结果,我想使用架构中的描述字段作为列名。我可以使用Table.get
来获取真正的架构,但我想了解为什么我在第一个查询中得到的架构不完整。
【问题讨论】:
【参考方案1】:Jobs.query API 为您提供查询结果的架构(保存在后台的临时表中)。在这个表中 - 没有字段的描述,即使它们的类型、模式等是从查询表中涉及的模式派生的
Tables.get API 来自另一端 - 实际上返回表的架构,这就是为什么您会看到该表的所有信息,包括描述。
【讨论】:
谢谢。根据我得到的回应,这是有道理的。但是提出了一个问题,为什么Jobs.getQueryResults 文档中的示例响应包含架构中的描述字段? 我可能是错的 - 但我会说文档不是 100% 完美的。在这种特殊情况下,我认为这是在许多不同 API 中使用的表资源部分的复制粘贴问题 好收获。该文档是根据我们的 API 定义自动生成的,API 定义的模式部分在 API 中出现模式的各个位置之间共享。但是,由于查询引擎不会为查询结果模式生成描述,因此对于所有查询结果(至少目前是这样),该字段将被省略。以上是关于Bigquery API 的查询结果中的架构不完整的主要内容,如果未能解决你的问题,请参考以下文章
通过 Google BigQuery API 将查询结果导出为 JSON
如何通过 API 在 BigQuery 中创建没有架构的表?