【问题标题】:Bigquery JSON - Nested arrays not allowed error troubleshootingBigquery JSON - 嵌套数组不允许错误故障排除
【发布时间】:2021-03-03 03:38:55
【问题描述】:

这里是 bigquery 的新手。我一直在关注documentation,了解如何创建一个空架构并对我的 json 数据执行 bq 加载作业,并处理我在 bq 加载作业期间收到的每条错误消息。

有一条错误消息给我带来了一些麻烦,除了它是一个嵌套数组错误这一事实之外,围绕该消息的详细信息并没有太大帮助。

Error while reading data, error message: JSON table
encountered too many errors, giving up. Rows: 1; errors: 1. Please look into the errors[] collection for more details.
Failure details:
- Error while reading data, error message: JSON processing
encountered too many errors, giving up. Rows: 1; errors: 1; max
bad: 0; error percent: 0
- Error while reading data, error message: JSON parsing error in row
starting at position 0: Nested arrays not allowed.

下面是我用来根据这个成功创建的模式创建一个空表的 JSON 文件。至此,我假设这个数据模式是有效的,但是当我尝试使用我的数据加载作业时,我得到了上面的错误。

有人能指出我在正确的地方寻找为什么我可能会收到此错误吗? “标签”子字段中的数组是否违反了“嵌套数组”规则?如果是这样,为什么 bq mk 语句可以使用模式创建一个空表?我看到了 bigquery 的有效数据模式示例,但没有看到那些在我的情况下会有所帮助的不允许的数据模式。

感谢任何指导。谢谢!

[
   {
       "name":"team_name",
       "type":"STRING",
       "mode":"NULLABLE"
   },
   {
       "name":"team_attributes",
       "type":"RECORD",
       "mode":"NULLABLE",
       "fields": [
         {
           "name":"team_attributes_raw",
           "type":"STRING",
           "mode":"NULLABLE"
         },
         {
           "name":"team_country",
           "type":"STRING",
           "mode":"NULLABLE"
         },
         {
           "name":"team_type",
           "type":"STRING",
           "mode":"NULLABLE"
         },
         {
           "name":"tags",
           "type":"STRING",
           "mode":"REPEATED"
         }
       ]
   }, 
   {
       "name":"players",
       "type":"RECORD",
       "mode":"REPEATED",
       "fields": [
           {
               "name":"player_key",
               "type":"STRING",
               "mode":"NULLABLE"
           },
           {
               "name":"player_attributes",
               "type":"RECORD",
               "mode":"NULLABLE",
               "fields": [
                   {
                       "name":"player_name",
                       "type":"STRING",
                       "mode":"NULLABLE"
                   },
                   {
                       "name":"product_url",
                       "type":"STRING",
                       "mode":"NULLABLE"
                   },
                   {
                       "name":"measurement",
                       "type":"RECORD",
                       "mode":"NULLABLE",
                       "fields": [
                         {
                           "name":"measurement_raw",
                           "type":"STRING",
                           "mode":"NULLABLE"
                         },
                         {
                           "name":"player_weight",
                           "type":"FLOAT",
                           "mode":"NULLABLE"
                         },
                         {
                           "name":"player_unit_of_measurement",
                           "type":"STRING",
                           "mode":"NULLABLE"
                         },
                         {
                           "name":"tags",
                           "type":"STRING",
                           "mode":"REPEATED"
                         }
                       ]
                   }
               ]
           }
       ]
   }
]   

【问题讨论】:

  • 你能提供你的 JSON 文件的第一行吗?
  • 其实我只是想通了。我最终得到了一个值,它也是 team_attributes -> tags 字段中的一个列表(它恰好是一个可接受的数组,因为它是明确定义的)。我将在下面更新我的答案并结束这个问题。谢谢!

标签: json google-cloud-platform google-bigquery


【解决方案1】:

事实证明,这种模式是完全可以接受的(通过用于创建表的“bq mk”命令进行测试。错误是由重复字段(数组)中的一个元素给出的,看起来像

["1", [] ]

下次再三检查!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    相关资源
    最近更新 更多