使用 Load Table API 时,BigQuery 不接受在线生成的架构定义架构生成器

Posted

技术标签:

【中文标题】使用 Load Table API 时,BigQuery 不接受在线生成的架构定义架构生成器【英文标题】:Schema definition generated online Schema-Generator is not accepted by BigQuery while using Load Table API 【发布时间】:2014-09-03 09:48:17 【问题描述】:

我们将不胜感激。

我有几个不同的 JSON 文档需要插入 BigQuery。现在为了避免手动生成模式,我使用了可用的在线 Json 模式生成工具的帮助。但是 BigQuery 加载数据向导不接受它们生成的架构。 例如:对于这样的 Json 数据:

"_id":100,"actor":"KK","message":"CCD is good in Pune",
"comment":["actor":"Subho","message":"CCD is not as good in Kolkata.",        
"actor":"bisu","message":"CCD is costly too in Kolkata"]

在线工具生成的schema是:


"$schema": "http://json-schema.org/draft-04/schema#",
"description": "Generated from c:jsonccd.json with shasum a003286a350a6889b152
 b3e33afc5458f3771e9c",
 "type": "object",
 "required": [
 "_id",
 "actor",
 "message",
 "comment"
 ],
 "properties": 
 "_id": 
   "type": "integer"
  ,
 "actor": 
  "type": "string"
  ,
  "message": 
  "type": "string"
  ,
  "comment": 
  "type": "array",
  "minItems": 1,
  "uniqueItems": true,
  "items": 
    "type": "object",
    "required": [
      "actor",
      "message"
    ],
    "properties": 
      "actor": 
        "type": "string"
      ,
      "message": 
        "type": "string"
       
     
   
  
 
 

但是当我在加载数据向导中将它放入 BigQuery 时,它会因错误而失败。

如何缓解这种情况?

谢谢。

【问题讨论】:

这并没有查看所有 BigQuery 架构,它是其他一些架构,您会感到困惑。你用的是什么生成器? @Pentium 10 - 你可能没有仔细阅读我的问题。我在这里打印的模式是从在线 Json 模式生成器生成的。这是有效的。但 BigQuery 不接受这种格式。现在这里有根据 BigQuery 可接受的格式生成 Schema 的任何工具或实用程序吗? 无效格式错误。无法解析架构。所以它甚至没有创建表。 该工具会为您生成一些 Json Schema,但它不是 BQ 识别的格式。阅读 BQ 文档如何在 BQ 中定义表结构。目前还没有生成器可以执行这些操作。 【参考方案1】:

该工具生成的架构比 BigQuery 所需的复杂得多。

查看文档中的示例:

"schema": 
        "fields": [
          "name":"f1", "type":"STRING",
          "name":"f2", "type":"INTEGER"
        ]
      ,

https://developers.google.com/bigquery/loading-data-into-bigquery?hl=en#loaddatapostrequest

同时,问题中提到的工具添加了诸如 $schema、描述、类型、必需、属性等字段,这些字段对于 BigQuery 架构解析器来说是不必要且令人困惑的。

【讨论】:

谢谢各位!我已经完成了 BigQuery 加载,但我只是想从这个论坛知道的事情,如果有人可以为 BigQuery 架构指出任何自动生成器工具。 @Subhayu 据我们所知,没有用于 BQ 模式的自动生成工具,模式是如此独特以至于您不需要它们。而且手动创建甚至编写json模式都非常简单。 以防其他人在寻找 - bigquery-json-schema-generator.com

以上是关于使用 Load Table API 时,BigQuery 不接受在线生成的架构定义架构生成器的主要内容,如果未能解决你的问题,请参考以下文章

使用 load_table_from_dataframe 方法将数据写入 BigQuery 表错误 - 'str' 对象没有属性 'to_api_repr'

使用 load_table_from_dataframe 时出错

easyui里面的API=====》 load

错误:使用 load_table_from_json 将数据插入 BigQuery 时,字段 X“已将类型从 NUMERIC 更改为 FLOAT”

sql [BigQuery - Facebook产品目录]查询para obtenerelcatálogodeproductos de Kichink。 #facebook #bigqu

使用gapi.load时,Google API未捕获异常