PowerBI: объединить список объектов в виде столбца - PullRequest
0 голосов
/ 08 июня 2019

Я работаю над созданием панели инструментов PowerBI, которая показывает список проектов и участников проекта.Я хотел бы, чтобы список имел проект в качестве каждой строки, и имел столбец с именем «Участники», который бы перечислял членов в тексте с разделителями-запятыми.К сожалению, мой источник данных содержит элементы в виде массива объектов, и PowerBI поддерживает только расширение массивов строк.

Я пробовал Редактор запросов, а также Расширенный редактор, но не могу получить формат /Право команды.

В формате JSON мои данные будут выглядеть следующим образом:

[
    {
        projectName: "A",
        members: [
                    {
                        firstName: "John",
                        lastName: "Doe"
                    },
                    {
                        firstName: "Jane",
                        lastNahe: "Doe"
                    }
                ]
    }      
]

Я хочу иметь возможность отображать их так:

|  Project |  Members                 |
---------------------------------------
|    A     | John Doe, Jane Doe       |

Есть идеи?Выглядит как простая задача, но у меня было гораздо больше проблем, чем нужно.Спасибо!

1 Ответ

1 голос
/ 09 июня 2019

Я взял вам файл JSon, добавил дополнительный проект для правильного тестирования и использовал M-Query для получения результата, который вы ищете:

let
    Source = Json.Document(File.Contents("C:\yourpath\ProMem.json")),
    #"Converted to Table1" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table1", "Column1", {"projectName", "members"}, {"projectName", "members"}),
#"Expanded members" = Table.ExpandListColumn(#"Expanded Column1", "members"),
#"Expanded members1" = Table.ExpandRecordColumn(#"Expanded members", "members", {"firstName", "lastName"}, {"firstName", "lastName"}),
#"Merged Columns" = Table.CombineColumns(#"Expanded members1",{"firstName", "lastName"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Name"),
#"Grouped Rows" = Table.Group(#"Merged Columns", {"projectName"}, {{"Members", each Text.Combine([Name],", "), type text}})

in
    #"Grouped Rows"

enter image description here

...