У меня есть сложный файл JSON (~ 8 ГБ), содержащий общедоступные данные для предприятий.Мы решили разбить файлы на несколько файлов CSV (или вкладок в формате .xlsx), чтобы клиенты могли легко использовать данные.Эти файлы будут связаны столбцом / ключом NZBN.
Я использую R и jsonlite для чтения небольшого образца (до масштабирования до полного файла).Я предполагаю, что мне нужен какой-то способ указать, какие ключи / столбцы идут в каждом файле (т. Е. У первого файла будут заголовки: australianBusinessNumber, australianCompanyNumber, australianServiceAddress, у второго файла будут заголовки: AnnualReturnFilingMonth, yearReturnLastFiled, countryOfOrigin ...)
Вот пример двух предприятий / организаций (я также скопировал некоторые данные, поэтому игнорирую фактические значения): тестовый файл
Я прочиталпочти каждый пост на с / о подобных вопросов, и ни один, кажется, не дает мне никакой удачи.Я пробовал варианты purrr, * применения команд, пользовательских функций выравнивания и jqr (r-версия jq - выглядит многообещающе, но я не могу ее запустить).
Вот попытка создания моих отдельных файлов, но я не уверен, как включить идентификатор ссылки (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)
Я не уверен, проще ли разделить файлы во время процесса сглаживания / споров, или просто полностью сгладить весь файл, чтобы у меня была только одна строка для каждой организации / организации (а затем собратьстолбцы по мере необходимости) - меня беспокоит только то, что мне нужно увеличить его до ~ 1,3 миллиона узлов (файл JSON 8 ГБ).
В идеале я хотел бы, чтобы файлы CSV разделялись каждый раз, когда появляется новая коллекция, изначения в коллекции станут столбцами для новой csv / tab.
Любая помощь или советы будут высоко оценены.
------- ОБНОВЛЕНИЕ ------
Обновленный, поскольку мой вопрос был немного расплывчатым, я думаю, что все, что мне нужно, - это какой-то код для создания одной из таблиц / таблиц csv, и я выполняю репликацию для других коллекций.
Скажем, например, яхотел крсоздайте CSV-файл из следующих элементов:
- entityName (уникальный идентификатор ссылки)
- nzbn (уникальный идентификатор ссылки)
- emailAddress__uniqueIdentifier
- emailAddress__emailAddress
- emailAddress__emailPurpose
- emailAddress__emailPurposeDescription
- emailAddress__startDate
Как мне поступить об этом?