根据导出到 JSON 时如何保留整数数据类型?,目前无法在从 BigQuery 导出到 JSON 时保留整数类型。关于 BigQuery --> GCS JSON 导出的这个小细节给我们带来了很多问题。我们的一个表导出的结果是一个以换行符分隔的 JSON,如下所示:
{"leagueId": "1", "name": "the ballers"}
{"team": "2", "leagueId": "1", "name": "the hoopers"}
{"team": "3", "leagueId": "1", "name": "the gamerrs"}
{"team": "4", "leagueId": "1", "name": "the drivers"}
{"team": "5", "leagueId": "1", "name": "the jumpers"}
{"team": "6", "leagueId": "1", "name": "the riserss"}
team,leagueId都应该是整数,我们想修改这个 NDJSON 将这些字符串转换回它的。我们要的输出是:
{"leagueId": 1, "name": "the ballers"}
{"team": 2, "leagueId": 1, "name": "the hoopers"}
{"team": 3, "leagueId": 1, "name": "the gamerrs"}
{"team": 4, "leagueId": 1, "name": "the drivers"}
{"team": 5, "leagueId": 1, "name": "the jumpers"}
{"team": 6, "leagueId": 1, "name": "the riserss"}
假设我们知道/有一个需要从字符串转换为整数 [team, LeagueId] 的列的列表/数组,我们如何进行这种转换?这可能与(a)使用类似工具的bash命令jq
,或者(b)有一些python解决方案吗?我们完整的 NDJSON 大小约为 10GB,性能很重要,因为这是我们日常数据摄取管道中的一个步骤。
编辑: 如何使用 jq 将字符串转换为 JSON 文件中的整数?- 试图利用这篇文章来提供帮助。已经想出了jq '.team | tonumber' tmp/testNDJSON.json
,但这只是返回1 2 3 4 5 6
,而不是更新的 JSON,并且只处理一个键,而不是多个键。
Edit2: 如果不是第一个 JSON 中的缺失值,jq -c '{leagueId: .leagueId | tonumber, team: .team | tonumber, name: .name}' tmp/testNDJSON.json > tmp/new_output.json
这将team
起作用......越来越近。