为NDJSON文件中的每一行写入新键

ds97pgxw  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(103)

我正在尝试格式化数据以输入API。被请求的机构要求

{ userEvent: { eventType: "home-page-view", visitorId: "visitor-1", userInfo: { userId: "user-1" } } }
{ userEvent: { eventType: "home-page-view", visitorId: "visitor-2", userInfo: { userId: "user-2" } } }
{ userEvent: { eventType: "home-page-view", visitorId: "visitor-3", userInfo: { userId: "user-3" } } }
...

字符串
我得到了一个查询,以获取BigQuery中所需的列,然后将表结果以NDJSON格式推送到GCS。但是,我不知道如何添加一个键userEvent来包括当前可用的结果(1)在查询期间或(2)在GCS中存储NDJSON文件之后。考虑到预期的行数大约是100万,我想知道最有效的解决方案是什么,因为我想避免在每一行都使用for循环。
这就是我现在所拥有的:

# get the BigQuery result and store in the "results" variable
query_job = bq_client.query(query, job_config=job_config, location="US")
results = query_job.result() #<google.cloud.bigquery.table.RowIterator at 0x148728310>

# The current NDJSON file in GCS
{"eventType":"home-page-view","visitorId":"13245","userInfo":{"userId":"11111"}
{"eventType":"home-page-view","visitorId":"56789","userInfo":{"userId":"22222"}

2w3kk1z5

2w3kk1z51#

正如@Anita所评论的,您可以参考下面在此堆栈link中提到的示例代码来添加键:值对。

import json

with open(json_file) as json_file:
    json_decoded = json.load(json_file)

json_decoded['KEY'] = 'VALUE'

with open(json_file, 'w') as json_file:
    json.dump(json_decoded, json_file)

字符串
将答案发布为社区wiki,以使将来可能遇到此用例的社区受益。
请随意编辑此答案以获取更多信息。

相关问题