我目前正在尝试将一行插入到 BQ 数据集中。
我想为此使用 Client.insert_row() 函数 documentation
对于没有任何“记录”类型字段的简单模式,我已启动并运行所有内容。 但是,当我将“记录”类型的字段添加到我的模式时,我不知道如何在 insert_row() 函数中定义它
我的架构: Schema in 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"])]
但这不是我的选择!
最佳答案
正确的插入方式如下:
rows_to_insert = [{"test1":"a","test2":"b","test3":"c","record":{"r1":"d","r2":"e"}}]
记录字段本身有一个字典作为条目,其中特定字段作为键/值!
关于python - BigQuery python 插入记录 (\w client.insert_rows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60829121/