Преобразование JSON с помощью облачной платформы Google перед BigQuery, лучшая практика?

#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.