我有一个复杂的 JSON 文件(~8GB),其中包含企业公开可用的数据。我们决定将文件拆分为多个 CSV 文件(或 .xlsx 中的选项卡),以便客户可以轻松使用数据。这些文件将通过 NZBN 列/键链接。
我正在使用 R 和 jsonlite 读取一个小样本(在扩展到完整文件之前)。我猜我需要某种方法来指定每个文件中的键/列(即,第一个文件将具有标题:australianBusinessNumber、australianCompanyNumber、australianServiceAddress,第二个文件将具有标题:annualReturnFilingMonth、annualReturnLastFiled、countryOfOrigin ...)
这是两个企业/实体的示例(我也破坏了一些数据,因此忽略实际值):测试文件 https://www.dropbox.com/s/feb3vvyzgg7dz5j/bd_test.json?dl=0
我几乎阅读了 s/o 上类似问题的所有帖子,但似乎没有一个给我带来任何运气。我尝试过 purrr、*apply 命令、自定义扁平化函数和 jqr 的变体(“jq”的 r 版本 - 看起来很有希望,但我似乎无法运行它)。
这是创建单独文件的尝试,但我不确定如何包含链接标识符(NZBN)+我不断遇到进一步的嵌套列表(我不确定有多少层嵌套)
bulk <- jsonlite::fromJSON("bd_test.json")
coreEntity <- data.frame(bulk$companies)
coreEntity <- coreEntity[,sapply(coreEntity, is.list)==FALSE]
company <- bulk$companies$entity$company
company <- purrr::reduce(company, dplyr::bind_rows)
shareholding <- company$shareholding
shareholding <- purrr::reduce(shareholding, dplyr::bind_rows)
shareAllocation <- shareholding$shareAllocation
shareAllocation <- purrr::reduce(shareAllocation, dplyr::bind_rows)
我不确定在展平/整理过程中分割文件是否更容易,或者只是完全展平整个文件,这样我每个企业/实体只有一行(然后根据需要收集列) - 我唯一关心的是我需要将其扩展到约 130 万个节点(8GB JSON 文件)。
理想情况下,我希望每次有新集合时都会拆分 csv 文件,并且集合中的值将成为新 csv/选项卡的列。
任何帮助或提示将不胜感激。
- - - - 更新 - - -
更新了,因为我的问题有点模糊,我认为我所需要的只是一些代码来生成其中一个 csv/选项卡,并为其他集合复制。
举例来说,我想创建包含以下元素的 csv:
- 实体名称(唯一链接标识符)
- nzbn(独特的链接
标识符)
- 电子邮件地址__唯一标识符
- 电子邮件地址__电子邮件地址
- 电子邮件地址__电子邮件目的
- 电子邮件地址__emailPurposeDescription
- 电子邮件地址__开始日期
我该怎么办呢?