使用Golang将嵌套数据插入BigQuery

西蒙莫雷

我可以使用Golang将平面对象插入BigQuery中-如何将嵌套数据插入表中?

我的BigQuery模式如下所示(从示例中):

[{
    "name": "kind",
    "mode": "nullable",
    "type": "string"
  },
  {
    "name": "fullName",
    "type": "string",
    "mode": "required"
  },
  { "name": "visit",
    "type": "record",
    "mode": "repeated",
    "fields": [
    {
       "name": "time",
       "type": "timestamp",
       "mode": "nullable"
    },
    {
       "name": "duration",
       "type": "integer",
       "mode": "nullable"
    }
   ]
  }
]

我的第一次插入尝试如下所示(示例):

func ExampleInsert(f string,) {

  jsonRow := make(map[string]bigquery.JsonValue)

  bq, _ := bigquery.New(client)
  request := new(bigquery.TableDataInsertAllRequest)

  rows := make([]*bigquery.TableDataInsertAllRequestRows, 1)

  jsonRow["kind"] = bigquery.JsonValue(kind)
  jsonRow["visit_duration"] = bigquery.JsonValue(duration)

  rows[i] = new(bigquery.TableDataInsertAllRequestRows)
  rows[i].Json = jsonRow

  bq.Tabledata.InsertAll(projectID, "visits", "visitsv4", request)
  ...
}

哪个变平并插入没有问题。我只是在用visit_duration

但是,我需要遍历一个片段并添加到访问记录中。我试图建立一个访问对象(没有循环来测试)并将其添加到行中,但是它没有插入并且没有错误:

func ExampleInsert(f string,) {

  jsonRow := make(map[string]bigquery.JsonValue)

  bq, _ := bigquery.New(client)
  request := new(bigquery.TableDataInsertAllRequest)

  rows := make([]*bigquery.TableDataInsertAllRequestRows, 1)

  jsonRow["kind"] = bigquery.JsonValue(kind)

  visits := make([]*bigquery.TableDataInsertAllRequestRows, 1)

  jsonVisit := make(map[string]bigquery.JsonValue)
  jsonVisit["duration"] = rand.Intn(1000)
  visits[0] = new(bigquery.TableDataInsertAllRequestRows)
  visits[0].Json = jsonVisit

  jsonRow["visit"] = visits

  rows[i] = new(bigquery.TableDataInsertAllRequestRows)
  rows[i].Json = jsonRow

  bq.Tabledata.InsertAll(projectID, "visits", "visitsv4", request)

  _, err := Call.Do()
}

- -[解决方案] - -

如评论中所建议,我还尝试创建一个切片,然后附加访问:

var visits []bigquery.JsonValue
visit := make(map[string]bigquery.JsonValue)
visit["duration"] = rand.Intn(100)
visits = append(visits, visit)

jsonRow["visit"] = visits

我可以确认这确实有效:)对于那些阅读此书的人来说,即使在添加了切片之后,它最初也没有出现的原因是因为我已经复制了表。在这样做的同时,我也弄平了结果。小心。

奔腾10

访问应该是bigquery.JsonValue我不确定您为什么使用的一部分:TableDataInsertAllRequestRows应该仅对有效载荷描述符使用一次。

var visits []bigquery.JsonValue
visit := make(map[string]bigquery.JsonValue)
visit["duration"] = rand.Intn(100)
visits = append(visits, visit)

jsonRow["visit"] = visits

ps。还请确保您的架构展平

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDB插入嵌套数据

来自分类Dev

将数据插入MongoDB中的嵌套数组

来自分类Dev

使用Spark更改bigquery中嵌套数据的列名称

来自分类Dev

AngularJS在嵌套数组中插入数据并使用特定的嵌套数组对象进行排序

来自分类Dev

使用嵌套数组将集合插入列表

来自分类Dev

从python将嵌套数组插入sql

来自分类Dev

使用 VUEX 将嵌套数据添加到 Firebase

来自分类Dev

如何将json嵌套数据加载到bigquery中

来自分类Dev

角度:将数据推入嵌套数组

来自分类Dev

如何使用MongoDB C#将新对象插入(推入)嵌套数组中?

来自分类Dev

如何使用MongoDB C#将新对象插入(推入)嵌套数组中?

来自分类Dev

插入嵌套数组

来自分类Dev

将数据插入BigQuery表

来自分类Dev

使用megaparsec正确解析嵌套数据

来自分类Dev

如何使用SparkR取消嵌套数据?

来自分类Dev

使用 Solr 索引嵌套数据

来自分类Dev

将元素插入Mongodb中的嵌套数组

来自分类Dev

将元素插入MongoDB中的嵌套数组

来自分类Dev

如何将属性插入嵌套数组的叶节点?

来自分类Dev

使用fastAPI将嵌套模式插入数据库吗?

来自分类Dev

使用bigquery将数据插入分区表不会插入数据

来自分类Dev

Mongo使用嵌套数组元素插入JSON文档

来自分类Dev

将MongoDB中的嵌套数据放入Pandas数据框

来自分类Dev

获取嵌套数据并使用嵌套DTO深入DTO

来自分类Dev

使用EF Code First,如何包括嵌套的嵌套数据

来自分类Dev

绑定嵌套数据

来自分类Dev

BigQuery将嵌套数组嵌套到单个单元格

来自分类Dev

将平面嵌套数据转换为单个数组

来自分类Dev

从json文件将嵌套数据导入熊猫