0

繰り返されないレコードを BigQuery に挿入しようとしていますが、エラーが発生し続けますArray specified for non-repeated field: record.

私の質問は: bigrqueryライブラリを使用して、繰り返されないレコードを BigQuery に挿入するにはどうすればよいですか?

次のスキーマがある場合:

bqSchema <- bq_fields(list(
  bq_field(name = "record", type = "RECORD", fields = list(
    bq_field(name = "a", type = "INTEGER"),
    bq_field(name = "b", type = "STRING")
  ))
))

そして、このデータフレーム:

df <- tibble(
  record = list(
    a = 1,
    b = "B"
  )
)

以下のようにデータを挿入すると、BigQuery でエラーが発生します。

bq_perform_upload(bqTableObj, df, fields = bqSchema)
# Array specified for non-repeated field: record

これは、bigrquery が を使用してデータフレームを JSONに変換するためだと思いますjsonlite::stream_out()が、引数 を使用しないため、auto_unbox = TRUEオブジェクトではなく配列になります。これにより、次の改行区切りの JSON が BigQuery に送信されます。

{"record": [1]}
{"record": ["B"]}

BigQuery に送信する必要がある正しい NDJSON は次のとおりです。

{"record": {"a": 1, "b", "B"}}

以前にこの問題が発生したことがありますか、またはこれを解決する方法についてアイデアがありますか?

4

1 に答える 1