Автоматическое создание кода PySpark с использованием конфигурации ⇐ Python
-
Anonymous
Автоматическое создание кода PySpark с использованием конфигурации
Я хочу создать генератор кода pyspark на основе конфигурации. Допустим, я предоставляю следующую конфигурацию:
{ "a_type": "myBody.string-to-json.myList.array-explode.aType", "a_id": "myBody.string-to-json.myList.array-explode.aId", "b_type": "myBody.string-to-json.myList.array-explode.z.bType", "b_id": "myBody.string-to-json.myList.array-explode.z.bId", "c_amount": "myBody.string-to-json.myList.array-explode.amount.cAmount", "c_code": "myBody.string-to-json.myList.array-explode.amount.cCode", "d_id": "myBody.string-to-json.myList.array-explode.Details.dId", "d_version": "myBody.string-to-json.myList.array-explode.Details.dVersion", "created_at": "createAt" } со следующими условиями:
[*]Предположим, у меня уже есть базовая таблица в каталоге с полями «myBody» и «createdAt». [*]Я хочу предоставить несколько плагинов, которые действуют как преобразователи. В приведенной выше конфигурации string-to-json("myBody") должен сглаживать строковый JSON, а array-explode("myList") должен разбивать элементы массива. [*]Должна быть возможность обрабатывать отсутствующие ключи JSON (заполняться как NULL) и не давать сбоев. (Если я пишу приведенную выше конфигурацию для извлечения b_id, но его нет в базовой таблице, она не должна завершиться ошибкой pyspark «Отсутствует ключ JSON»)
Мои исходные данные сложны:
{ "createAt": "01.01.2024", "myBody": "{\"myList\":[{\"amount\": {\"cAmount\": 69,\"cCode\":\"USD\"},\"aType\": \" НЕИЗВЕСТНО», \"aId\": \"MyID\", \"z\": {\"zId\": \"99\", \"zType\": \"9999\"},\" dId\": \"MyId#99\", \"dVersion\": \"1\"}]}" } Ожидаемые данные будут сгенерированы приведенным выше кодом:
a_type a_id b_type b_id c_amount c_code d_id d_version create_at НЕИЗВЕСТНО МойID NULL NULL 69 долларов США MyId#99 1 01.01.2024
Я хочу создать генератор кода pyspark на основе конфигурации. Допустим, я предоставляю следующую конфигурацию:
{ "a_type": "myBody.string-to-json.myList.array-explode.aType", "a_id": "myBody.string-to-json.myList.array-explode.aId", "b_type": "myBody.string-to-json.myList.array-explode.z.bType", "b_id": "myBody.string-to-json.myList.array-explode.z.bId", "c_amount": "myBody.string-to-json.myList.array-explode.amount.cAmount", "c_code": "myBody.string-to-json.myList.array-explode.amount.cCode", "d_id": "myBody.string-to-json.myList.array-explode.Details.dId", "d_version": "myBody.string-to-json.myList.array-explode.Details.dVersion", "created_at": "createAt" } со следующими условиями:
[*]Предположим, у меня уже есть базовая таблица в каталоге с полями «myBody» и «createdAt». [*]Я хочу предоставить несколько плагинов, которые действуют как преобразователи. В приведенной выше конфигурации string-to-json("myBody") должен сглаживать строковый JSON, а array-explode("myList") должен разбивать элементы массива. [*]Должна быть возможность обрабатывать отсутствующие ключи JSON (заполняться как NULL) и не давать сбоев. (Если я пишу приведенную выше конфигурацию для извлечения b_id, но его нет в базовой таблице, она не должна завершиться ошибкой pyspark «Отсутствует ключ JSON»)
Мои исходные данные сложны:
{ "createAt": "01.01.2024", "myBody": "{\"myList\":[{\"amount\": {\"cAmount\": 69,\"cCode\":\"USD\"},\"aType\": \" НЕИЗВЕСТНО», \"aId\": \"MyID\", \"z\": {\"zId\": \"99\", \"zType\": \"9999\"},\" dId\": \"MyId#99\", \"dVersion\": \"1\"}]}" } Ожидаемые данные будут сгенерированы приведенным выше кодом:
a_type a_id b_type b_id c_amount c_code d_id d_version create_at НЕИЗВЕСТНО МойID NULL NULL 69 долларов США MyId#99 1 01.01.2024
Мобильная версия