#json #google-cloud-platform #google-bigquery #transformation
#json #google-cloud-platform #google-bigquery #преобразование
Вопрос:
У меня есть глубоко вложенный документ JSON переменной длины с переменными массивами, соответствующими документу, я хочу отменить некоторые разделы и записать их в BigQuery, а другие игнорировать.
Я был в восторге от Dataprep от Trifacta, но поскольку они будут получать доступ к данным, это не сработает для моей компании. Мы работаем с медицинскими данными и имеем только авторизованный Google.
Кто-нибудь работал с другими решениями в GCP для преобразования JSON? Характер документа настолько длинный и вложенный, что написание пользовательского регулярного выражения и запуск его в модуле перед использованием требует значительных вычислений.
Ответ №1:
Вы можете попробовать это:
[1] Сгладьте документ JSON с помощью jq
:
cat source.json | jq -c '.[]' > target.json
[2] Загрузить преобразованный файл JSON (с помощью autodetect
):
bq load --autodetect --source_format=NEWLINE_DELIMITED_JSON mydataset.mytable target.json
Результат:
BigQuery автоматически создаст тип данных RECORD (STRUCT) для вложенных данных
Ответ №2:
Поток данных также может быть полезен для этой цели:
- С помощью этого продукта вы можете создавать конвейеры предварительной обработки Apache Beam, которые выполняются только на серверах Google.
- С помощью функции ParDo Beam вы можете применить любую заданную функцию, написанную на Java, Python, или перейти к своим вложенным данным.
- Здесь у вас есть пример того, как эффективно это сделать на Python.