我可以使用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
我可以證實這是實際可行的:)對於那些你讀這篇文章,其原因它最初並不是,即使在添加一片後,也是因爲我有c對着桌子。在這樣做的時候,我也弄平了結果。小心。
我不是一個Golang的專家,但'訪問'應該是'bigquery.JsonValue'的地圖 – Pentium10
你可以舉個例子嗎? – simonmorley
'visited:= make(map [string] bigquery.JsonValue)' – Pentium10