【问题标题】:how to define JSON schema for array?如何为数组定义 JSON 模式?
【发布时间】:2018-06-11 20:44:21
【问题描述】:

我有这个 JSON 文件:

    {  
        "tcCensusTractBlockFacesStatefp":"01",
        "tcCensusTractBlockFacesCountyfp":"001",
        "tcCensusTractBlockFacesTractce":"020200",
        "tcCensusTractBlockFacesBlockce10":"2022",
        "tcCensusTractBlockFacesGeoid":"010010202002022",
        "cellIDs":[  
        9839958675010879488,
        9839958675082706944,
        9839958677655912448,
        9839958677556297728,
        9839958676975910912,
        9839958677063991296,
        9839958677105934336,
        9839958679922409472,
        9839958679922933760,
        9839958679975886848,
        9839958679979032576,
        9839958679461036032,
        9839958679450550272,
        9839958678956670976,
        9839958678926262272,
        9839958667678187520,
        9839958667562844160,
        9839958675010879488
        ]
    }

如何定义架构以将其导入 BigQuery 中?

bq mk --table $DATASET:$TABLE tl_2017_schema.json
bq load --source_format=NEWLINE_DELIMITED_JSON $DATASET:$TABLE $WNAME 

这是我尝试做的:

tl_2017_schema.json

...
---
     {
        "name": "cellIDs",
        "type": "RECORD",
        "mode": "REPEATED",
        "fields": [
            {
                "name": "cellID",
                "type": "INT64",
                "mode": "NULLABLE"
            }
        ]
    }
...

但是负责ARRAY的这部分不能匹配我在JSON文件中的数组结构:

“cellID”:[
9839958675010879488, 9839958675082706944, 9839958677655912448, 9839958677556297728, 9839958676975910912, 9839958677063991296, 9839958677105934336, 9839958679922409472, 9839958679922933760, 9839958679975886848, 9839958679979032576, 9839958679461036032, 9839958679450550272, 9839958678956670976, 9839958678926262272, 9839958667678187520, 9839958667562844160, 9839958675010879488 ]

怎么做?

【问题讨论】:

    标签: arrays json google-bigquery


    【解决方案1】:

    运行CREATE TABLE statement 可能更容易:

    CREATE TABLE dataset.tablename
    (
      ...
      cellIDs ARRAY<INT64>
    )
    

    如果您确实想将架构指定为 JSON,则示例中的解决方法是将 cellIDs 设为 REPEATED INTEGER 类型:

    {
        "name": "cellIDs",
        "type": "INTEGER",
        "mode": "REPEATED"
    }
    

    【讨论】:

    • 谢谢,效果很好:{ "name": "cellIDs", "type": "NUMERIC", "mode": "REPEATED" } ]
    猜你喜欢
    • 1970-01-01
    • 2018-04-07
    • 2016-08-13
    • 2019-03-21
    • 1970-01-01
    • 2013-05-11
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多