0

我正在尝试将公共数据集从 Google Cloud 加载到 BigQuery ( quickdraw_dataset )。数据采用 JSON 格式,如下所示:

 { 
    "key_id":"5891796615823360",
    "word":"nose",
    "countrycode":"AE",
    "timestamp":"2017-03-01 20:41:36.70725 UTC",
    "recognized":true,
    "drawing":[[[129,128,129,129,130,130,131,132,132,133,133,133,133,...]]]
  }

我遇到的问题是“绘图”字段是一个嵌套数组。我从阅读其他帖子中收集到您无法将数组读入 BigQuery?这篇文章建议解决此问题的一种方法是将数组作为字符串读取。但是,当我使用以下模式时,会出现此错误:`

 [
    {
        "name": "key_id",
        "type": "STRING"
    },
    {
        "name": "word",
        "type": "STRING"
    },
    {
        "name": "countrycode",
        "type": "STRING"
    },
    {
        "name": "timestamp",
        "type": "STRING"
    },
    {
        "name": "recognized",
        "type": "BOOLEAN"
    },
    {
        "name": "drawing",
        "type": "STRING"

    }
]

读取数据时出错,错误消息:从位置 0 开始的行中的 JSON 解析错误:为非重复字段指定的数组:绘图。

有没有办法将此数据集读入 BigQuery?

提前致谢!

4

1 回答 1

1

将整行加载为 CSV,然后在 BigQuery 中进行解析。

加载:

bq load --F \\t temp.eraser gs://quickdraw_dataset/full/simplified/eraser.ndjson row

询问:

SELECT JSON_EXTRACT_SCALAR(row, '$.countrycode') a
  , JSON_EXTRACT_SCALAR(row, '$.word') b
  , JSON_EXTRACT_ARRAY(row, '$.drawing')[OFFSET(0)] c
FROM temp.eraser

在此处输入图像描述

于 2020-06-05T08:00:07.267 回答