BigQuery python вставка с записью (\ w client.insert_rows) - PullRequest
0 голосов
/ 24 марта 2020

В данный момент я пытаюсь вставить строку в набор данных BQ.

Я хочу использовать функцию Client.insert_row () для этой документации

Я получил все в порядке, для простой схемы без какого-либо поля типа «Запись». Однако, когда я добавляю поле типа «Запись» в мою схему, я не знаю, как определить это в функции insert_row ()

Моя схема: Схема в BQ

Мой код:

client = bigquery.Client(
    credentials=credentials,
    project=credentials.project_id,
)

dataset_ref = client.dataset('channel_data')

table_ref = dataset_ref.table('test')
table = client.get_table(table_ref)  # API call

rows_to_insert = [{"test1":"a","test2":"b","test3":"c","record":{"1":"d","2":"e"}},]

errors = client.insert_rows_json(table, rows_to_insert)  # API request
assert errors == []

Я перепробовал много разных версий для строки _to_insert:

rows_to_insert = [{"test1":"a","test2":"b","test3":"c","record":["d","e"]},]
rows_to_insert = [{"test1":"a","test2":"b","test3":"c","record.1":"d","record.2":"e"}},]

ни одна из них не работает, и я не могу найти какую-либо информацию в Интернете, как сделать это. Кто-нибудь когда-либо делал это раньше?

Важно, чтобы он был вставлен как JSON, так как иногда некоторые значения отсутствуют. Я знаю, что вы можете просто поместить все в список и передать его следующим образом

rows_to_insert = [("a", "b", "c", ["d", "e"])]

, но это не вариант для меня!

1 Ответ

1 голос
/ 24 марта 2020

Правильный способ их вставки заключается в следующем:

rows_to_insert = [{"test1":"a","test2":"b","test3":"c","record":{"r1":"d","r2":"e"}}]

поле записи имеет словарь в качестве записи с указанными c полями в качестве ключа / значений!

...