получение значений из сложного вложенного JSON - PullRequest
0 голосов
/ 13 февраля 2019

Я новичок в sparkSQL.Может кто-нибудь дать решение моей проблемы.

В "E1EDP01" есть "поля posex". Для каждого "posex" есть "E1EDP02". Я хочу значения "QUALF" из "E1EDP02"

E1EDP01.E1EDP02.QUALF

"E1EDP01": [

                "@SEGMENT": "1",
                "POSEX": "000010",
                "MENGE": "4.000",
                "MENEE": "EA",                       
                "E1EDP02": [

                    {
                        "@SEGMENT": "1",
                        "QUALF": "016",
                        "BELNR": "0080001425",
                        "ZEILE": "000010",
                        }
                ]
            {   
                "@SEGMENT": "1",
                "POSEX": "000020",
                "MENGE": "2.000",
                "MENEE": "EA",

                "E1EDP02": [
                    {
                        "@SEGMENT": "1",
                        "QUALF": "002",
                        "BELNR": "7000000986",
                        "ZEILE": "000020"
                    },
            {
                "@SEGMENT": "1",
                "POSEX": "000030",
                "MENGE": "2.000",
                "MENEE": "EA",

                 E1EDP02": [

                    {
                        "@SEGMENT": "1",
                        "QUALF": "002",
                        "BELNR": "7000000986",
                        "ZEILE": "000020"
                    },

1 Ответ

0 голосов
/ 13 февраля 2019

Вы можете использовать функцию SparkSQL get_json_object () для извлечения вложенных полей следующим образом:

df = spark.createDataFrame(
  [['{"E1EDP01": [{"POSEX": "000010", "E1EDP02": [{"QUALF": "016"}]}, {"POSEX": "000020", "E1EDP02": [{"QUALF": "002"}]}]}']],
  ['json_string']
)

df.selectExpr(
  "get_json_object(json_string, '$.E1EDP01[*].E1EDP02[*].QUALF') as values"
).show()

# +-----------------+
# |           values|
# +-----------------+
# |[["016"],["002"]]|
# +-----------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...