【问题标题】:Incomplete schema in query result from Bigquery APIBigquery 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 来获取真正的架构,但我想了解为什么我在第一个查询中得到的架构不完整。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    Jobs.query API 为您提供查询结果的架构(保存在后台的临时表中)。在这个表中 - 没有字段的描述,即使它们的类型、模式等是从查询表中涉及的模式派生的

    Tables.get API 来自另一端 - 实际上返回表的架构,这就是为什么您会看到该表的所有信息,包括描述。

    【讨论】:

    • 谢谢。根据我得到的回应,这是有道理的。但是提出了一个问题,为什么Jobs.getQueryResults 文档中的示例响应包含架构中的描述字段?
    • 我可能是错的 - 但我会说文档不是 100% 完美的。在这种特殊情况下,我认为这是在许多不同 API 中使用的表资源部分的复制粘贴问题
    • 好收获。该文档是根据我们的 API 定义自动生成的,API 定义的模式部分在 API 中出现模式的各个位置之间共享。但是,由于查询引擎不会为查询结果模式生成描述,因此对于所有查询结果(至少目前是这样),该字段将被省略。
    猜你喜欢
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 2023-03-08
    相关资源
    最近更新 更多