Преобразование записи с помощью Power Query и JSON - PullRequest
0 голосов
/ 27 сентября 2018

Я использую Power Query в Excel 2013 для преобразования огромного файла JSON (более 100 МБ) в обычный лист Excel.

Все поля, кроме одного, преобразованы правильно, но есть одно конкретное поле, котороепризнан рекордным.Все остальные поля имеют фиксированное текстовое значение или значения, разделенные запятой, поэтому преобразование довольно простое, это поле внутри имеет структуру записи JSON, поэтому «Поле»: «Значение».

Это выдержка изfile:

    {
    "idTrad": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "images": {
        "1": "SE1.JPG",
        "2": "SE2.JPG"
    },
    "date": "2018-09-22",
    "category": "MD",
    "value": "Original text",
    "language": "IT",
    "contexts": [
        ""
    ],
    "label": "Translated text",
    "variantes": "1,23,45,23,32,232,2315,23131",
    "theme": [
        "XX_XXX"
    ]
}

Проблемное поле - "images", потому что оно распознается как запись, в результирующей таблице у меня такая ситуация:

[1]: https://i.stack.imgur.com/EnHow.png

Пока мой запрос:

    let

    Source = Json.Document(File.Contents("filename.json")),

 #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

    #"Column1 développé" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"value", "contexts", "theme", "variantes", "category", "label", "language", "idTrad","images", "date"}, {"Column1.value", "Column1.contexts", "Column1.theme", "Column1.variantes", "Column1.category", "Column1.label", "Column1.language", "Column1.idTrad","Column1.images", "Column1.date"}),

    #"Valeurs extraites" = Table.TransformColumns(#"Column1 développé", {"Column1.contexts", each Text.Combine(List.Transform(_, Text.From), ","), type text}),

   #"Valeurs extraites1" = Table.TransformColumns(#"Valeurs extraites", {"Column1.theme", each Text.Combine(List.Transform(_, Text.From), ","), type text})


in    

    #"Valeurs extraites1"

Я бы хотел, чтобы в поле изображений было текстовое представление записи, что-то вроде «1: SE1.JPG, 2: SE2.JPG»,есть идеи?

1 Ответ

0 голосов
/ 27 сентября 2018

Конечно, вы даже можете сделать это за один шаг!Если вы преобразуете запись в таблицу (Record.ToTable), она создаст таблицу, в которой имена полей в вашей записи находятся в столбце с именем «Имя», а значения - в столбце с именем «Значение».Таким образом, вы получите свои «1», «2» и т. Д. Из файла json.Оттуда вы можете просто объединить столбцы в текст, который вы хотите, и конвертировать и объединить список, как вы сделали в остальных ваших столбцах., но, возможно, протестируйте его, просто сначала преобразовав запись в таблицу, чтобы увидеть, что она делает.

Table.TransformColumns(#"Valeurs extraites1",{"Column1.images",each Record.ToTable(_)})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...